示例#1
0
    def test_relations(self):
        doc = BioDesDoc().from_xml(self.create_element())
        doc.add_relation(person="Kwik", relation="partner")
        doc.add_relation(person="Kwek", relation="child")
        doc.add_relation(person="Kwak", relation="father")
        doc.add_relation(person="Donald", relation="mother")
        doc.add_relation(person="Dagobert", relation="parent")
        
        self.assertEqual(doc.get_relation('partner'), ['Kwik'])
        self.assertEqual(doc.get_relation('child'), ['Kwek'])
        self.assertEqual(doc.get_relation('father'), ['Kwak'])
        self.assertEqual(doc.get_relation('mother'), ['Donald'])
        self.assertEqual(doc.get_relation('parent'), ['Dagobert'])

        #make sure we are not reading the other names
        self.assertEqual(len(doc.get_names()), 1)
        
        self.assertEqual(len(doc.get_relations()), 5)
        ls =  [(el_relation.get('name'), el_person[0].text) for (el_relation, el_person) in doc.get_relations()]
        
        self.assertTrue(('child', 'Kwek') in ls, ls)
        
        el_relation, el_person = doc.get_relations()[1]
        type = el_relation.get('name')
        name = el_person[0].text
        index = el_relation.getparent().index(el_relation)
        #see if deleting and re-adding is sane
        doc.remove_relation(index)
        self.assertEqual(len(doc.get_relations()), 4)
        doc.add_relation(person=name, relation=type)
        self.assertEqual(len(doc.get_relations()), 5)