Skip to content

Commit 1b9d92f

Browse files
committed
DomainModel: Add tests
1 parent 647af7f commit 1b9d92f

File tree

1 file changed

+74
-1
lines changed

1 file changed

+74
-1
lines changed

Orange/widgets/tests/test_itemmodels.py

Lines changed: 74 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@
44
from unittest import TestCase
55

66
from PyQt4.QtCore import Qt
7-
from Orange.widgets.utils.itemmodels import PyTableModel, PyListModel
7+
8+
from Orange.data import Domain, ContinuousVariable
9+
from Orange.widgets.utils.itemmodels import \
10+
PyTableModel, PyListModel, DomainModel
811

912

1013
class TestPyTableModel(TestCase):
@@ -183,3 +186,73 @@ def test_insert_delete_rows(self):
183186
success = model.removeRows(3, 4)
184187
self.assertIs(success, True)
185188
self.assertSequenceEqual(model, [None, None, None])
189+
190+
191+
class TestDomainModel(TestCase):
192+
def test_init_with_single_section(self):
193+
model = DomainModel(order=DomainModel.CLASSES)
194+
self.assertEqual(model.order, (DomainModel.CLASSES, ))
195+
196+
def test_separators(self):
197+
attrs = [ContinuousVariable(n) for n in "abg"]
198+
classes = [ContinuousVariable(n) for n in "deh"]
199+
metas = [ContinuousVariable(n) for n in "ijf"]
200+
201+
model = DomainModel()
202+
sep = [model.Separator]
203+
model.set_domain(Domain(attrs, classes, metas))
204+
self.assertEqual(list(model), classes + sep + metas + sep + attrs)
205+
206+
model = DomainModel()
207+
model.set_domain(Domain(attrs, [], metas))
208+
self.assertEqual(list(model), metas + sep + attrs)
209+
210+
model = DomainModel()
211+
model.set_domain(Domain([], [], metas))
212+
self.assertEqual(list(model), metas)
213+
214+
model = DomainModel(placeholder="foo")
215+
model.set_domain(Domain([], [], metas))
216+
self.assertEqual(list(model), [None] + sep + metas)
217+
218+
model = DomainModel(placeholder="foo")
219+
model.set_domain(Domain(attrs, [], metas))
220+
self.assertEqual(list(model), [None] + sep + metas + sep + attrs)
221+
222+
def test_placeholder_placement(self):
223+
model = DomainModel(placeholder="foo")
224+
sep = model.Separator
225+
self.assertEqual(model.order, (None, sep) + model.SEPARATED)
226+
227+
model = DomainModel(order=("bar", ), placeholder="foo")
228+
self.assertEqual(model.order, (None, "bar"))
229+
230+
model = DomainModel(order=("bar", None, "baz"), placeholder="foo")
231+
self.assertEqual(model.order, ("bar", None, "baz"))
232+
233+
model = DomainModel(order=("bar", sep, "baz"),
234+
placeholder="foo")
235+
self.assertEqual(model.order, (None, sep, "bar", sep, "baz"))
236+
237+
def test_subparts(self):
238+
attrs = [ContinuousVariable(n) for n in "abg"]
239+
classes = [ContinuousVariable(n) for n in "deh"]
240+
metas = [ContinuousVariable(n) for n in "ijf"]
241+
242+
m = DomainModel
243+
sep = m.Separator
244+
model = DomainModel(
245+
order=(m.ATTRIBUTES | m.METAS, sep, m.CLASSES))
246+
model.set_domain(Domain(attrs, classes, metas))
247+
self.assertEqual(list(model), attrs + metas + [sep] + classes)
248+
249+
m = DomainModel
250+
sep = m.Separator
251+
model = DomainModel(
252+
order=(m.ATTRIBUTES | m.METAS, sep, m.CLASSES),
253+
alphabetical=True)
254+
model.set_domain(Domain(attrs, classes, metas))
255+
self.assertEqual(list(model),
256+
sorted(attrs + metas, key=lambda x: x.name) +
257+
[sep] +
258+
sorted(classes, key=lambda x: x.name))

0 commit comments

Comments
 (0)