|
1 | 1 | # Test methods with long descriptive names can omit docstrings |
2 | 2 | # pylint: disable=missing-docstring |
| 3 | +from Orange.data import Table, Domain, DiscreteVariable |
3 | 4 | from Orange.base import Model |
4 | 5 | from Orange.widgets.classify.owclassificationtree import OWClassificationTree |
5 | 6 | from Orange.widgets.tests.base import (WidgetTest, DefaultParameterMapping, |
6 | 7 | ParameterMapping, WidgetLearnerTestMixin) |
7 | 8 |
|
8 | 9 |
|
9 | 10 | class TestOWClassificationTree(WidgetTest, WidgetLearnerTestMixin): |
| 11 | + @classmethod |
| 12 | + def setUpClass(cls): |
| 13 | + super().setUpClass() |
| 14 | + cls.iris = Table("iris") |
| 15 | + |
10 | 16 | def setUp(self): |
11 | 17 | self.widget = self.create_widget(OWClassificationTree, |
12 | 18 | stored_settings={"auto_apply": False}) |
@@ -34,3 +40,25 @@ def test_parameters_unchecked(self): |
34 | 40 | for par, val in zip(self.parameters, (None, 2, 1))] |
35 | 41 | self.test_parameters() |
36 | 42 |
|
| 43 | + def test_cannot_binarize(self): |
| 44 | + widget = self.widget |
| 45 | + error_shown = self.widget.Error.cannot_binarize.is_shown |
| 46 | + self.assertFalse(error_shown()) |
| 47 | + self.send_signal("Data", self.iris) |
| 48 | + self.assertFalse(error_shown()) |
| 49 | + domain = Domain([ |
| 50 | + DiscreteVariable( |
| 51 | + values=[str(x) |
| 52 | + for x in range(widget.LEARNER.MAX_BINARIZATION + 1)])], |
| 53 | + DiscreteVariable(values="01")) |
| 54 | + self.send_signal("Data", Table(domain, [[0, 0], [1, 1]])) |
| 55 | + self.assertTrue(error_shown()) |
| 56 | + self.send_signal("Data", self.iris) |
| 57 | + self.assertFalse(error_shown()) |
| 58 | + domain = Domain([ |
| 59 | + DiscreteVariable( |
| 60 | + values=[str(x) |
| 61 | + for x in range(widget.LEARNER.MAX_BINARIZATION + 1)])], |
| 62 | + DiscreteVariable(values="01")) |
| 63 | + self.send_signal("Data", Table(domain)) |
| 64 | + self.assertFalse(error_shown()) |
0 commit comments