@@ -41,6 +41,49 @@ def assertError(self, res, err, filter_rep=True, filter_map=False):
41
41
return
42
42
self .assertEqual (errs , err )
43
43
44
+ def test_property_values_cardinality (self ):
45
+ doc = odml .Document ()
46
+ sec = odml .Section (name = "sec" , type = "sec_type" , parent = doc )
47
+
48
+ # Test no caught warning on empty cardinality
49
+ prop = odml .Property (name = "prop_empty_cardinality" , values = [1 , 2 , 3 , 4 ], parent = sec )
50
+ # Check that the current property is not in the list of validation warnings or errors
51
+ for err in validate (doc ).errors :
52
+ self .assertNotEqual (err .obj .id , prop .id )
53
+
54
+ # Test no warning on valid cardinality
55
+ prop = odml .Property (name = "prop_valid_cardinality" , values = [1 , 2 , 3 , 4 ],
56
+ val_cardinality = (2 , 10 ), parent = sec )
57
+ for err in validate (doc ).errors :
58
+ self .assertNotEqual (err .obj .id , prop .id )
59
+
60
+ # Test minimum value cardinality validation
61
+ test_val = [1 , 2 , 3 ]
62
+ test_card = 2
63
+
64
+ prop = odml .Property (name = "prop_invalid_max_val" , values = test_val ,
65
+ val_cardinality = test_card , parent = sec )
66
+
67
+ test_msg_base = "Property values cardinality violated"
68
+ test_msg = "%s (maximum %s values, %s found)" % (test_msg_base , test_card , len (prop .values ))
69
+ for err in validate (doc ).errors :
70
+ if err .obj .id == prop .id :
71
+ self .assertFalse (err .is_error )
72
+ self .assertIn (test_msg , err .msg )
73
+
74
+ # Test maximum value cardinality validation
75
+ test_val = "I am a nice text to test"
76
+ test_card = (4 , None )
77
+
78
+ prop = odml .Property (name = "prop_invalid_min_val" , values = test_val ,
79
+ val_cardinality = test_card , parent = sec )
80
+
81
+ test_msg = "%s (minimum %s values, %s found)" % (test_msg_base , test_card [0 ], len (prop .values ))
82
+ for err in validate (doc ).errors :
83
+ if err .obj .id == prop .id :
84
+ self .assertFalse (err .is_error )
85
+ self .assertIn (test_msg , err .msg )
86
+
44
87
def test_section_type (self ):
45
88
doc = samplefile .parse ("""s1[undefined]""" )
46
89
res = validate (doc )
0 commit comments