@@ -131,3 +131,71 @@ def test_simple_attributes(self):
131
131
self .assertEqual (yprop .definition , p_def )
132
132
self .assertEqual (yprop .dependency , p_dep )
133
133
self .assertEqual (yprop .dependency_value , p_dep_val )
134
+
135
+ def test_cardinality (self ):
136
+ """
137
+ Test saving and loading of property values cardinality variants to
138
+ and from all supported file formats.
139
+ """
140
+ doc = odml .Document ()
141
+ sec = odml .Section (name = "sec" , type = "sometype" , parent = doc )
142
+
143
+ prop_empty = "prop_cardinality_empty"
144
+ prop_max = "prop_cardinality_max"
145
+ prop_max_card = (None , 10 )
146
+ prop_min = "prop_cardinality_min"
147
+ prop_min_card = (2 , None )
148
+ prop_full = "prop_full"
149
+ prop_full_card = (1 , 5 )
150
+
151
+ _ = odml .Property (name = prop_empty , parent = sec )
152
+ _ = odml .Property (name = prop_max , val_cardinality = prop_max_card , parent = sec )
153
+ _ = odml .Property (name = prop_min , val_cardinality = prop_min_card , parent = sec )
154
+ _ = odml .Property (name = prop_full , val_cardinality = prop_full_card , parent = sec )
155
+
156
+ # Test saving to and loading from an XML file
157
+ odml .save (doc , self .xml_file )
158
+ xml_doc = odml .load (self .xml_file )
159
+ xml_prop = xml_doc .sections ["sec" ].properties [prop_empty ]
160
+ self .assertIsNone (xml_prop .val_cardinality )
161
+
162
+ xml_prop = xml_doc .sections ["sec" ].properties [prop_max ]
163
+ self .assertEqual (xml_prop .val_cardinality , prop_max_card )
164
+
165
+ xml_prop = xml_doc .sections ["sec" ].properties [prop_min ]
166
+ self .assertEqual (xml_prop .val_cardinality , prop_min_card )
167
+
168
+ xml_prop = xml_doc .sections ["sec" ].properties [prop_full ]
169
+ self .assertEqual (xml_prop .val_cardinality , prop_full_card )
170
+
171
+ # Test saving to and loading from a JSON file
172
+ odml .save (doc , self .json_file , "JSON" )
173
+ json_doc = odml .load (self .json_file , "JSON" )
174
+
175
+ json_prop = json_doc .sections ["sec" ].properties [prop_empty ]
176
+ self .assertIsNone (json_prop .val_cardinality )
177
+
178
+ json_prop = json_doc .sections ["sec" ].properties [prop_max ]
179
+ self .assertEqual (json_prop .val_cardinality , prop_max_card )
180
+
181
+ json_prop = json_doc .sections ["sec" ].properties [prop_min ]
182
+ self .assertEqual (json_prop .val_cardinality , prop_min_card )
183
+
184
+ json_prop = json_doc .sections ["sec" ].properties [prop_full ]
185
+ self .assertEqual (json_prop .val_cardinality , prop_full_card )
186
+
187
+ # Test saving to and loading from a YAML file
188
+ odml .save (doc , self .yaml_file , "YAML" )
189
+ yaml_doc = odml .load (self .yaml_file , "YAML" )
190
+
191
+ yaml_prop = yaml_doc .sections ["sec" ].properties [prop_empty ]
192
+ self .assertIsNone (yaml_prop .val_cardinality )
193
+
194
+ yaml_prop = yaml_doc .sections ["sec" ].properties [prop_max ]
195
+ self .assertEqual (yaml_prop .val_cardinality , prop_max_card )
196
+
197
+ yaml_prop = yaml_doc .sections ["sec" ].properties [prop_min ]
198
+ self .assertEqual (yaml_prop .val_cardinality , prop_min_card )
199
+
200
+ yaml_prop = yaml_doc .sections ["sec" ].properties [prop_full ]
201
+ self .assertEqual (yaml_prop .val_cardinality , prop_full_card )
0 commit comments