1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
import unittest
from Orange.data import Table, Domain, DiscreteVariable
from Orange.widgets.tests.base import WidgetTest
from Orange.widgets.utils.signals import Input
from Orange.widgets.utils.multi_target import check_multiple_targets_input
from Orange.widgets.widget import OWWidget
class TestMultiTargetDecorator(WidgetTest):
class MockWidget(OWWidget):
name = "MockWidget"
NotCalled = object()
class Inputs:
data = Input("Data", Table)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.called_with = self.NotCalled
@Inputs.data
@check_multiple_targets_input
def set_data(self, obj):
self.called_with = obj
def pop_called_with(self):
t = self.called_with
self.called_with = self.NotCalled
return t
def setUp(self):
self.widget = self.create_widget(self.MockWidget)
self.data = Table("iris")
def test_check_multiple_targets_input(self):
class_vars = [self.data.domain.class_var,
DiscreteVariable("c1", values=("a", "b"))]
domain = Domain(self.data.domain.attributes, class_vars=class_vars)
multiple_targets_data = self.data.transform(domain)
self.send_signal(self.widget.Inputs.data, multiple_targets_data)
self.assertTrue(self.widget.Error.multiple_targets_data.is_shown())
self.assertIs(self.widget.pop_called_with(), None)
self.send_signal(self.widget.Inputs.data, self.data)
self.assertFalse(self.widget.Error.multiple_targets_data.is_shown())
self.assertIs(self.widget.pop_called_with(), self.data)
if __name__ == "__main__":
unittest.main()
|