Skip to content

Commit 89c8538

Browse files
committed
[test/validation_int] Test prop values cardinality
1 parent b764372 commit 89c8538

File tree

1 file changed

+78
-0
lines changed

1 file changed

+78
-0
lines changed

test/test_validation_integration.py

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,81 @@ def _get_captured_output(self):
3535

3636
return out
3737

38+
def test_property_values_cardinality(self):
39+
# -- Test assignment validation warnings
40+
doc = odml.Document()
41+
sec = odml.Section(name="sec", type="sec_type", parent=doc)
42+
43+
# -- Test cardinality validation warnings on Property init
44+
# Test warning when setting invalid minimum
45+
_ = odml.Property(name="prop_card_min", values=[1], val_cardinality=(2, None), parent=sec)
46+
output = self._get_captured_output()
47+
test_msg = "%s (minimum %s values, %s found)" % (self.msg_base, 2, 1)
48+
self.assertEqual(len(output), 1)
49+
self.assertIn(test_msg, output[0])
50+
51+
# Test warning when setting invalid maximum
52+
_ = odml.Property(name="prop_card_max", values=[1, 2, 3], val_cardinality=2, parent=sec)
53+
output = self._get_captured_output()
54+
test_msg = "%s (maximum %s values, %s found)" % (self.msg_base, 2, 3)
55+
self.assertEqual(len(output), 1)
56+
self.assertIn(test_msg, output[0])
57+
58+
# Test no warning on valid init
59+
prop_card = odml.Property(name="prop_card", values=[1, 2],
60+
val_cardinality=(1, 5), parent=sec)
61+
output = self._get_captured_output()
62+
self.assertEqual(output, [])
63+
64+
# -- Test cardinality validation warnings on cardinality updates
65+
# Test warning when setting minimally required values cardinality
66+
prop_card.val_cardinality = (3, None)
67+
output = self._get_captured_output()
68+
test_msg = "%s (minimum %s values, %s found)" % (self.msg_base, 3, 2)
69+
self.assertEqual(len(output), 1)
70+
self.assertIn(test_msg, output[0])
71+
72+
# Test warning when setting maximally required values cardinality
73+
prop_card.values = [1, 2, 3]
74+
prop_card.val_cardinality = 2
75+
output = self._get_captured_output()
76+
test_msg = "%s (maximum %s values, %s found)" % (self.msg_base, 2, 3)
77+
self.assertEqual(len(output), 1)
78+
self.assertIn(test_msg, output[0])
79+
80+
# Test no warning on valid cardinality
81+
prop_card.val_cardinality = (1, 10)
82+
output = self._get_captured_output()
83+
self.assertEqual(output, [])
84+
85+
# Test no warning when setting cardinality to None
86+
prop_card.val_cardinality = None
87+
output = self._get_captured_output()
88+
self.assertEqual(output, [])
89+
90+
# -- Test cardinality validation warnings on values updates
91+
# Test warning when violating minimally required values cardinality
92+
prop_card.val_cardinality = (3, None)
93+
prop_card.values = [1, 2]
94+
output = self._get_captured_output()
95+
test_msg = "%s (minimum %s values, %s found)" % (self.msg_base, 3, 2)
96+
self.assertEqual(len(output), 1)
97+
self.assertIn(test_msg, output[0])
98+
99+
# Test warning when violating maximally required values cardinality
100+
prop_card.val_cardinality = (None, 2)
101+
prop_card.values = [1, 2, 3]
102+
output = self._get_captured_output()
103+
test_msg = "%s (maximum %s values, %s found)" % (self.msg_base, 2, 3)
104+
self.assertEqual(len(output), 1)
105+
self.assertIn(test_msg, output[0])
106+
107+
# Test no warning when setting correct number of values
108+
prop_card.values = [1, 2]
109+
output = self._get_captured_output()
110+
self.assertEqual(output, [])
111+
112+
# Test no warning when setting values to None
113+
prop_card.values = None
114+
output = self._get_captured_output()
115+
self.assertEqual(output, [])

0 commit comments

Comments
 (0)