Skip to content

Commit ba37414

Browse files
committed
add multi_target_input tests
1 parent 1442671 commit ba37414

File tree

2 files changed

+58
-1
lines changed

2 files changed

+58
-1
lines changed

Orange/widgets/evaluate/tests/test_owpredictions.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -877,6 +877,27 @@ def test_change_target(self):
877877
self.assertEqual(table.model.columnCount(), 4)
878878
self.assertEqual(float(table.model.data(table.model.index(0, 3))),
879879
idx)
880+
881+
def test_multi_target_input(self):
882+
widget = self.widget
883+
884+
domain = Domain([ContinuousVariable('var1')],
885+
class_vars=[
886+
ContinuousVariable('c1'),
887+
DiscreteVariable('c2', values=('no', 'yes'))
888+
])
889+
data = Table.from_list(domain, [[1, 5, 0], [2, 10, 1]])
890+
891+
mock_model = Mock(spec=Model, return_value=np.asarray([0.2, 0.1]))
892+
mock_model.name = 'Mockery'
893+
mock_model.domain = domain
894+
mock_learner = Mock(return_value=mock_model)
895+
model = mock_learner(data)
896+
897+
self.send_signal(widget.Inputs.data, data)
898+
self.send_signal(widget.Inputs.predictors, model, 1)
899+
pred = self.get_output(widget.Outputs.predictions)
900+
self.assertIsInstance(pred, Table)
880901

881902
def test_report(self):
882903
widget = self.widget

Orange/widgets/evaluate/tests/test_owtestandscore.py

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from Orange.evaluation import Results, TestOnTestData, scoring
1717
from Orange.evaluation.scoring import ClassificationScore, RegressionScore, \
1818
Score
19-
from Orange.base import Learner
19+
from Orange.base import Learner, Model
2020
from Orange.modelling import ConstantLearner
2121
from Orange.regression import MeanLearner
2222
from Orange.widgets.evaluate.owtestandscore import (
@@ -724,6 +724,42 @@ def test_copy_to_clipboard(self):
724724
for i in (0, 3, 4, 5, 6, 7)]) + "\r\n"
725725
self.assertEqual(clipboard_text, view_text)
726726

727+
def test_multi_target_input(self):
728+
class NewScorer(Score):
729+
class_types = (
730+
ContinuousVariable,
731+
DiscreteVariable,
732+
)
733+
734+
@staticmethod
735+
def is_adequate(domain: Domain) -> bool:
736+
return True
737+
738+
def compute_score(self, results):
739+
return [0.75]
740+
741+
domain = Domain([ContinuousVariable('var1')],
742+
class_vars=[
743+
ContinuousVariable('c1'),
744+
DiscreteVariable('c2', values=('no', 'yes'))
745+
])
746+
data = Table.from_list(domain, [[1, 5, 0], [2, 10, 1], [2, 10, 1]])
747+
748+
mock_model = Mock(spec=Model, return_value=np.asarray([[0.2, 0.1, 0.2]]))
749+
mock_model.name = 'Mockery'
750+
mock_model.domain = domain
751+
mock_learner = Mock(spec=Learner, return_value=mock_model)
752+
mock_learner.name = 'Mockery'
753+
754+
self.widget.resampling = OWTestAndScore.TestOnTrain
755+
self.send_signal(self.widget.Inputs.train_data, data)
756+
self.send_signal(self.widget.Inputs.learner, MajorityLearner(), 0)
757+
self.send_signal(self.widget.Inputs.learner, mock_learner, 1)
758+
_ = self.get_output(self.widget.Outputs.evaluations_results, wait=5000)
759+
self.assertTrue(len(self.widget.scorers) == 1)
760+
self.assertTrue(NewScorer in self.widget.scorers)
761+
self.assertTrue(len(self.widget._successful_slots()) == 1)
762+
727763

728764
class TestHelpers(unittest.TestCase):
729765
def test_results_one_vs_rest(self):

0 commit comments

Comments
 (0)