@@ -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
798863if __name__ == "__main__" :
799864 print ("TestProperty" )
0 commit comments