示例#1
0
    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)
示例#2
0
    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"
示例#3
0
    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)