Skip to content

Commit 250f17d

Browse files
committed
[test/doc] Add comparison test
1 parent 92ac04d commit 250f17d

File tree

1 file changed

+95
-0
lines changed

1 file changed

+95
-0
lines changed

test/test_doc.py

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,3 +196,98 @@ def test_insert(self):
196196
with self.assertRaises(ValueError):
197197
doc.insert(0, subsec)
198198
self.assertEqual(len(doc), 3)
199+
200+
def test_comparison(self):
201+
doc_auth = "author"
202+
doc_ver = "ver1.0"
203+
204+
doc_a = Document(author=doc_auth, version=doc_ver)
205+
doc_b = Document(author=doc_auth, version=doc_ver)
206+
207+
self.assertEqual(doc_a, doc_b)
208+
209+
doc_b.author = "someone else"
210+
self.assertNotEqual(doc_a, doc_b)
211+
212+
doc_b.author = doc_auth
213+
214+
# Test section equality with subsections
215+
216+
# Test equality with subsection of different entities
217+
# with same content and same children order
218+
sec_type = "sec type"
219+
sec_def = "an odml test section"
220+
sec_ref = "from over there"
221+
222+
subsec_aa = Section(name="subsecA", type=sec_type,
223+
definition=sec_def, reference=sec_ref)
224+
subsec_ab = Section(name="subsecB", type=sec_type,
225+
definition=sec_def, reference=sec_ref)
226+
subsec_ba = Section(name="subsecA", type=sec_type,
227+
definition=sec_def, reference=sec_ref)
228+
subsec_bb = Section(name="subsecB", type=sec_type,
229+
definition=sec_def, reference=sec_ref)
230+
231+
doc_a.extend([subsec_aa, subsec_ab])
232+
doc_b.extend([subsec_ba, subsec_bb])
233+
234+
self.assertEqual(doc_a, doc_b)
235+
self.assertEqual(doc_a.sections, doc_b.sections)
236+
237+
doc_b.sections[0].name = "newSubsecA"
238+
self.assertNotEqual(doc_a, doc_b)
239+
self.assertNotEqual(doc_a.sections, doc_b.sections)
240+
241+
doc_b.sections[0].name = "subsecA"
242+
243+
# Test inequality with different number of children
244+
doc_b.remove(doc_b.sections[1])
245+
self.assertNotEqual(doc_a, doc_b)
246+
self.assertNotEqual(doc_a.sections, doc_b.sections)
247+
248+
# Test equality with subsection of different entities
249+
# with same content and different children order
250+
doc_b.remove(doc_b.sections[0])
251+
doc_b.extend([subsec_bb, subsec_ba])
252+
253+
self.assertEqual(doc_a, doc_b)
254+
self.assertEqual(doc_a.sections, doc_b.sections)
255+
256+
doc_b.sections[0].name = "newSubsecB"
257+
self.assertNotEqual(doc_a, doc_b)
258+
self.assertNotEqual(doc_a.sections, doc_b.sections)
259+
260+
doc_b.sections[0].name = "subsecB"
261+
262+
# Test section equality with properties
263+
264+
# Test equality with properties of different entities
265+
# with same content and same children order
266+
prop_aa = Property(name="propA", definition="propDef")
267+
prop_ab = Property(name="propB", definition="propDef")
268+
prop_ba = Property(name="propA", definition="propDef")
269+
prop_bb = Property(name="propB", definition="propDef")
270+
271+
doc_a.sections["subsecA"].extend([prop_aa, prop_ab])
272+
doc_b.sections["subsecA"].extend([prop_ba, prop_bb])
273+
274+
self.assertEqual(doc_a, doc_b)
275+
276+
doc_b.sections["subsecA"].properties[0].name = "newPropA"
277+
self.assertNotEqual(doc_a, doc_b)
278+
279+
doc_b.sections["subsecA"].properties[0].name = "propA"
280+
281+
# Test inequality with different number of children
282+
doc_b.sections["subsecA"].remove(doc_b.sections["subsecA"].properties[1])
283+
self.assertNotEqual(doc_a, doc_b)
284+
285+
# Test equality with properties of different entities
286+
# with same content and different children order
287+
doc_b.sections["subsecA"].remove(doc_b.sections["subsecA"].properties[0])
288+
doc_b.sections["subsecA"].extend([prop_bb, prop_ba])
289+
290+
self.assertEqual(doc_a, doc_b)
291+
292+
doc_b.sections["subsecA"].properties[0].name = "newPropB"
293+
self.assertNotEqual(doc_a, doc_b)

0 commit comments

Comments
 (0)