Skip to content

Commit 9b23378

Browse files
committed
[test/property] Add basic values cardinality test
1 parent c7a7db7 commit 9b23378

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed

test/test_property.py

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -794,6 +794,71 @@ def test_export_leaf(self):
794794
self.assertEqual(len(ex2['first'].sections), 1)
795795
self.assertEqual(len(ex2['first']['second'].properties), 1)
796796

797+
def test_values_cardinality(self):
798+
doc = Document()
799+
sec = Section(name="sec", type="type", parent=doc)
800+
801+
# -- Test set cardinality on Property init
802+
# Test empty init
803+
prop_card_none = Property(name="prop_cardinality_empty", parent=sec)
804+
self.assertIsNone(prop_card_none.val_cardinality)
805+
806+
# Test single int max init
807+
prop_card_max = Property(name="prop_cardinality_max", val_cardinality=10, parent=sec)
808+
self.assertEqual(prop_card_max.val_cardinality, (None, 10))
809+
810+
# Test tuple init
811+
prop_card_min = Property(name="prop_cardinality_min", val_cardinality=(2, None), parent=sec)
812+
self.assertEqual(prop_card_min.val_cardinality, (2, None))
813+
814+
# -- Test Property cardinality re-assignment
815+
prop = Property(name="prop", val_cardinality=(None, 10), parent=sec)
816+
self.assertEqual(prop.val_cardinality, (None, 10))
817+
818+
# Test Property cardinality reset
819+
for non_val in [None, "", [], ()]:
820+
prop.val_cardinality = non_val
821+
self.assertIsNone(prop.val_cardinality)
822+
prop.val_cardinality = 1
823+
824+
# Test Property cardinality single int max assignment
825+
prop.val_cardinality = 10
826+
self.assertEqual(prop.val_cardinality, (None, 10))
827+
828+
# Test Property cardinality tuple max assignment
829+
prop.val_cardinality = (None, 5)
830+
self.assertEqual(prop.val_cardinality, (None, 5))
831+
832+
# Test Property cardinality tuple min assignment
833+
prop.val_cardinality = (5, None)
834+
self.assertEqual(prop.val_cardinality, (5, None))
835+
836+
# Test Property cardinality min/max assignment
837+
prop.val_cardinality = (1, 5)
838+
self.assertEqual(prop.val_cardinality, (1, 5))
839+
840+
# -- Test Property cardinality assignment failures
841+
with self.assertRaises(ValueError):
842+
prop.val_cardinality = "a"
843+
844+
with self.assertRaises(ValueError):
845+
prop.val_cardinality = -1
846+
847+
with self.assertRaises(ValueError):
848+
prop.val_cardinality = (1, "b")
849+
850+
with self.assertRaises(ValueError):
851+
prop.val_cardinality = (1, 2, 3)
852+
853+
with self.assertRaises(ValueError):
854+
prop.val_cardinality = (-1, 1)
855+
856+
with self.assertRaises(ValueError):
857+
prop.val_cardinality = (1, -5)
858+
859+
with self.assertRaises(ValueError):
860+
prop.val_cardinality = (5, 1)
861+
797862

798863
if __name__ == "__main__":
799864
print("TestProperty")

0 commit comments

Comments
 (0)