def test_simple_attributes(self): sec_name = "sec name" sec_type = "sec type" sec_def = "an odml test section" sec_ref = "from over there" sec = Section(name=sec_name, type=sec_type, definition=sec_def, reference=sec_ref) self.assertEqual(sec.name, sec_name) self.assertEqual(sec.type, sec_type) self.assertEqual(sec.definition, sec_def) self.assertEqual(sec.reference, sec_ref) # Test setting attributes sec.name = "%s_edit" % sec_name self.assertEqual(sec.name, "%s_edit" % sec_name) sec.type = "%s_edit" % sec_type self.assertEqual(sec.type, "%s_edit" % sec_type) sec.definition = "%s_edit" % sec_def self.assertEqual(sec.definition, "%s_edit" % sec_def) sec.reference = "%s_edit" % sec_ref self.assertEqual(sec.reference, "%s_edit" % sec_ref) # Test setting attributes to None when '' is passed. sec.reference = "" self.assertIsNone(sec.reference) sec.definition = "" self.assertIsNone(sec.definition)
def test_name(self): # Test id is used when name is not provided s = Section() self.assertIsNotNone(s.name) self.assertEqual(s.name, s.id) # Test name is properly set on init name = "rumpelstilzchen" s = Section(name) self.assertEqual(s.name, name) name = "rumpelstilzchen" s = Section(name=name) self.assertEqual(s.name, name) # Test name can be properly set on single and connected Sections sec = Section() self.assertNotEqual(sec.name, "sec") sec.name = "sec" self.assertEqual(sec.name, "sec") subsec_a = Section(parent=sec) self.assertNotEqual(subsec_a.name, "subsec_a") subsec_a.name = "subsec_a" self.assertEqual(subsec_a.name, "subsec_a") # Test subsection name can be changed with siblings subsec_b = Section(name="subsec_b", parent=sec) self.assertEqual(subsec_b.name, "subsec_b") subsec_b.name = "subsec" self.assertEqual(subsec_b.name, "subsec") # Test subsection name set will fail on existing sibling with same name with self.assertRaises(KeyError): subsec_b.name = "subsec_a" self.assertEqual(subsec_b.name, "subsec") # Test section name set will fail on existing same name document sibling doc = Document() sec_a = Section(name="a", parent=doc) sec_b = Section(name="b", parent=doc) with self.assertRaises(KeyError): sec_b.name = "a"
def test_comparison(self): sec_name = "sec name" sec_type = "sec type" sec_def = "an odml test section" sec_ref = "from over there" sec_a = Section(name=sec_name, type=sec_type, definition=sec_def, reference=sec_ref) sec_b = Section(name=sec_name, type=sec_type, definition=sec_def, reference=sec_ref) self.assertEqual(sec_a, sec_b) sec_b.name = "newSecName" self.assertNotEqual(sec_a, sec_b) sec_b.name = sec_name # Test section equality with subsections # Test equality with subsection of different entities # with same content and same children order subsec_aa = Section(name="subsecA", type=sec_type, definition=sec_def, reference=sec_ref) subsec_ab = Section(name="subsecB", type=sec_type, definition=sec_def, reference=sec_ref) subsec_ba = Section(name="subsecA", type=sec_type, definition=sec_def, reference=sec_ref) subsec_bb = Section(name="subsecB", type=sec_type, definition=sec_def, reference=sec_ref) sec_a.extend([subsec_aa, subsec_ab]) sec_b.extend([subsec_ba, subsec_bb]) self.assertEqual(sec_a, sec_b) self.assertEqual(sec_a.sections, sec_b.sections) sec_b.sections[0].name = "newSubsecA" self.assertNotEqual(sec_a, sec_b) self.assertNotEqual(sec_a.sections, sec_b.sections) sec_b.sections[0].name = "subsecA" # Test inequality with different number of children sec_b.remove(sec_b.sections[1]) self.assertNotEqual(sec_a, sec_b) self.assertNotEqual(sec_a.sections, sec_b.sections) # Test equality with subsection of different entities # with same content and different children order sec_b.remove(sec_b.sections[0]) sec_b.extend([subsec_bb, subsec_ba]) self.assertEqual(sec_a, sec_b) self.assertEqual(sec_a.sections, sec_b.sections) sec_b.sections[0].name = "newSubsecB" self.assertNotEqual(sec_a, sec_b) self.assertNotEqual(sec_a.sections, sec_b.sections) sec_b.sections[0].name = "subsecB" # Test section equality with properties # Test equality with properties of different entities # with same content and same children order prop_aa = Property(name="propA", definition="propDef") prop_ab = Property(name="propB", definition="propDef") prop_ba = Property(name="propA", definition="propDef") prop_bb = Property(name="propB", definition="propDef") sec_a.extend([prop_aa, prop_ab]) sec_b.extend([prop_ba, prop_bb]) self.assertEqual(sec_a, sec_b) self.assertEqual(sec_a.properties, sec_b.properties) sec_b.properties[0].name = "newPropA" self.assertNotEqual(sec_a, sec_b) self.assertNotEqual(sec_a.properties, sec_b.properties) sec_b.properties[0].name = "propA" # Test inequality with different number of children sec_b.remove(sec_b.properties[1]) self.assertNotEqual(sec_a, sec_b) self.assertNotEqual(sec_a.properties, sec_b.properties) # Test equality with properties of different entities # with same content and different children order sec_b.remove(sec_b.properties[0]) sec_b.extend([prop_bb, prop_ba]) self.assertEqual(sec_a, sec_b) self.assertEqual(sec_a.properties, sec_b.properties) sec_b.properties[0].name = "newPropB" self.assertNotEqual(sec_a, sec_b) self.assertNotEqual(sec_a.properties, sec_b.properties)