@@ -794,6 +794,71 @@ def test_export_leaf(self):
794
794
self .assertEqual (len (ex2 ['first' ].sections ), 1 )
795
795
self .assertEqual (len (ex2 ['first' ]['second' ].properties ), 1 )
796
796
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
+
797
862
798
863
if __name__ == "__main__" :
799
864
print ("TestProperty" )
0 commit comments