Пример #1
0
    def test_tree(self):
        t = Tree()
        t.set('abcd', "Yes")
        self.assertEqual("Yes", t.traverse('abcd'))
        self.assertRaises(KeyError, t.traverse, 'abcde')
        self.assertRaises(KeyError, t.traverse, 'xyz')
        self.assert_(isinstance(t.traverse('abc'), Tree))

        t2 = Tree()
        self.assertRaises(KeyError, t2.set, 'axy', "Lol", force=False)
        t2.set('axx', 'ololol')
        t2.set('axyy', "Lol")
        self.assertEqual("Yes", t.traverse('abcd'))
        self.assertRaises(KeyError, t2.traverse, 'abcd')
        self.assertEqual("Lol", t2.traverse('axyy'))
        self.assertEqual("ololol", t2.traverse('axx'))

        t2.unset('axyy')
        self.assertEqual("ololol", t2.traverse('axx'))
        self.assertRaises(KeyError, t2.traverse, 'axyy')
        self.assertRaises(KeyError, t2.traverse, 'axy')

        t2.unset('a')
        self.assertRaises(KeyError, t2.traverse, 'abcd')
        self.assertRaises(KeyError, t2.traverse, 'a')
        self.assert_(t2.empty())
Пример #2
0
 def test_tree_deep_copy(self):
     t = Tree()
     s = t.plow('abcd')
     s.replace('X')
     u = t.copy()
     self.assertEqual(t._tree, u._tree)
     s = t.traverse('abc')
     s.replace('Y')
     self.assertNotEqual(t._tree, u._tree)
Пример #3
0
 def makeTreeB():
     u = Tree()
     u.set('aaaX', 0)
     u.set('bbbC', 'Yes')
     u.set('bbbD', None)
     u.set('bbbE', 15)
     u.set('bbbF', 16)
     u.set('bQ', 22)
     u.set('bR', 23)
     u.set('ffff', 1337)
     return u
Пример #4
0
 def makeTreeA():
     t = Tree()
     t.set('aaaX', 1)
     t.set('aaaY', 2)
     t.set('aaaZ', 3)
     t.set('bbbA', 11)
     t.set('bbbB', 12)
     t.set('bbbC', 13)
     t.set('bbbD', 14)
     t.set('bP', 21)
     t.set('bQ', 22)
     return t
Пример #5
0
    def test_merge_trees(self):
        def makeTreeA():
            t = Tree()
            t.set('aaaX', 1)
            t.set('aaaY', 2)
            t.set('aaaZ', 3)
            t.set('bbbA', 11)
            t.set('bbbB', 12)
            t.set('bbbC', 13)
            t.set('bbbD', 14)
            t.set('bP', 21)
            t.set('bQ', 22)
            return t

        def makeTreeB():
            u = Tree()
            u.set('aaaX', 0)
            u.set('bbbC', 'Yes')
            u.set('bbbD', None)
            u.set('bbbE', 15)
            u.set('bbbF', 16)
            u.set('bQ', 22)
            u.set('bR', 23)
            u.set('ffff', 1337)
            return u

        # test 1
        t = Tree('a')
        u = Tree('b')
        merged = t.merge(u, copy=True)
        self.assertEqual('b', merged._tree)

        # test 2
        t = Tree('a')
        u = makeTreeA()
        merged = t.merge(u, copy=True)
        self.assertEqual(u._tree, merged._tree)

        # test 3
        t = makeTreeA()
        u = makeTreeB()
        v = t.merge(u, copy=True)

        self.assertEqual(0, v['aaaX'])
        self.assertEqual(2, v['aaaY'])
        self.assertEqual(3, v['aaaZ'])
        self.assertEqual(11, v['bbbA'])
        self.assertEqual('Yes', v['bbbC'])
        self.assertEqual(None, v['bbbD'])
        self.assertEqual(15, v['bbbE'])
        self.assertEqual(16, v['bbbF'])
        self.assertRaises(KeyError, t.__getitem__, 'bbbG')
        self.assertEqual(21, v['bP'])
        self.assertEqual(22, v['bQ'])
        self.assertEqual(23, v['bR'])
        self.assertEqual(1337, v['ffff'])

        # merge shouldn't be destructive
        self.assertEqual(makeTreeA()._tree, t._tree)
        self.assertEqual(makeTreeB()._tree, u._tree)

        v['fff'].replace('Lolz')
        self.assertEqual('Lolz', v['fff'])

        v['aaa'].replace('Very bad')
        v.plow('qqqqqqq').replace('eww.')

        self.assertEqual(makeTreeA()._tree, t._tree)
        self.assertEqual(makeTreeB()._tree, u._tree)