Skip to content

Commit

Permalink
Merge pull request biolab#6331 from PrimozGodec/concatenate-preserve-…
Browse files Browse the repository at this point in the history
…table-name

[FIX] Concatenate - preserve table names when compute value ignored
  • Loading branch information
markotoplak authored Feb 7, 2023
2 parents ce13f5a + 84acb93 commit cdf6672
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 7 deletions.
1 change: 1 addition & 0 deletions Orange/widgets/data/owconcatenate.py
Original file line number Diff line number Diff line change
Expand Up @@ -263,6 +263,7 @@ def enumerated_parts(domain):
dumb_domain,
table.X, table.Y, table.metas, table.W,
table.attributes, table.ids)
dumb_table.name = table.name
dumb_tables.append(dumb_table)
return dumb_tables

Expand Down
32 changes: 25 additions & 7 deletions Orange/widgets/data/tests/test_owconcatenate.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,36 +71,54 @@ def test_two_inputs_intersection(self):
outvars = output.domain.variables
self.assertEqual(0, len(outvars))

def get_source_var(self, vars_before):
output = self.get_output(self.widget.Outputs.data)
outvars = output.domain.variables + output.domain.metas
return (set(outvars) - set(vars_before)).pop()

def test_source(self):
self.send_signal(self.widget.Inputs.additional_data, self.iris, 0)
self.send_signal(self.widget.Inputs.additional_data, self.titanic, 1)
outputb = self.get_output(self.widget.Outputs.data)
outvarsb = outputb.domain.variables
def get_source():
output = self.get_output(self.widget.Outputs.data)
outvars = output.domain.variables + output.domain.metas
return (set(outvars) - set(outvarsb)).pop()
# test adding source
self.widget.controls.append_source_column.toggle()
source = get_source()
source = self.get_source_var(outvarsb)
self.assertEqual(source.name, "Source ID")
# test name changing
self.widget.controls.source_attr_name.setText("Source")
self.widget.controls.source_attr_name.callback()
source = get_source()
source = self.get_source_var(outvarsb)
self.assertEqual(source.name, "Source")
# test source_column role
places = ["class_vars", "attributes", "metas"]
for i, place in enumerate(places):
self.widget.source_column_role = i
self.widget.commit.now()
source = get_source()
source = self.get_source_var(outvarsb)
output = self.get_output(self.widget.Outputs.data)
self.assertTrue(source in getattr(output.domain, place))
data = output.transform(Domain([source]))
self.assertTupleEqual(("iris", "titanic"), source.values)
np.testing.assert_equal(data[:len(self.iris)].X, 0)
np.testing.assert_equal(data[len(self.iris):].X, 1)

def test_source_ignore_compute_value(self):
"""Test source variable correct also when ignore_compute_value on"""
self.send_signal(self.widget.Inputs.additional_data, self.iris, 0)
self.send_signal(self.widget.Inputs.additional_data, self.titanic, 1)
outputb = self.get_output(self.widget.Outputs.data)
outvarsb = outputb.domain.variables

self.widget.controls.append_source_column.toggle()
self.widget.controls.ignore_compute_value.toggle() # on
source = self.get_source_var(outvarsb)
output = self.get_output(self.widget.Outputs.data)
data = output.transform(Domain([source]))
self.assertTupleEqual(("iris", "titanic"), source.values)
np.testing.assert_equal(data[: len(self.iris)].X, 0)
np.testing.assert_equal(data[len(self.iris) :].X, 1)

def test_singleclass_source_class(self):
self.send_signal(self.widget.Inputs.primary_data, self.iris)
# add source into a class variable
Expand Down

0 comments on commit cdf6672

Please sign in to comment.