annotate Lib/lib2to3/tests/test_pytree.py @ 54294:dba767bc3155 legacy-trunk

remove mention of old ctypes version
author Benjamin Peterson <benjamin@python.org>
date Sat, 23 May 2009 20:59:09 +0000
parents a2303a74a761
children dae9be6379b3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
45908
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
1 #!/usr/bin/env python2.5
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
2 # Copyright 2006 Google, Inc. All Rights Reserved.
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
3 # Licensed to PSF under a Contributor Agreement.
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
4
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
5 """Unit tests for pytree.py.
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
6
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
7 NOTE: Please *don't* add doc strings to individual test methods!
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
8 In verbose mode, printing of the module, class and method name is much
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
9 more helpful than printing of (the first line of) the docstring,
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
10 especially when debugging a test.
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
11 """
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
12
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
13 # Testing imports
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
14 from . import support
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
15
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
16 # Local imports (XXX should become a package)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
17 from .. import pytree
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
18
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
19 try:
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
20 sorted
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
21 except NameError:
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
22 def sorted(lst):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
23 l = list(lst)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
24 l.sort()
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
25 return l
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
26
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
27 class TestNodes(support.TestCase):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
28
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
29 """Unit tests for nodes (Base, Leaf, Node)."""
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
30
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
31 def testBaseCantConstruct(self):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
32 if __debug__:
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
33 # Test that instantiating Base() raises an AssertionError
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
34 self.assertRaises(AssertionError, pytree.Base)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
35
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
36 def testLeaf(self):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
37 l1 = pytree.Leaf(100, "foo")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
38 self.assertEqual(l1.type, 100)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
39 self.assertEqual(l1.value, "foo")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
40
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
41 def testLeafRepr(self):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
42 l1 = pytree.Leaf(100, "foo")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
43 self.assertEqual(repr(l1), "Leaf(100, 'foo')")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
44
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
45 def testLeafStr(self):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
46 l1 = pytree.Leaf(100, "foo")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
47 self.assertEqual(str(l1), "foo")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
48 l2 = pytree.Leaf(100, "foo", context=(" ", (10, 1)))
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
49 self.assertEqual(str(l2), " foo")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
50
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
51 def testLeafStrNumericValue(self):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
52 # Make sure that the Leaf's value is stringified. Failing to
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
53 # do this can cause a TypeError in certain situations.
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
54 l1 = pytree.Leaf(2, 5)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
55 l1.set_prefix("foo_")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
56 self.assertEqual(str(l1), "foo_5")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
57
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
58 def testLeafEq(self):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
59 l1 = pytree.Leaf(100, "foo")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
60 l2 = pytree.Leaf(100, "foo", context=(" ", (1, 0)))
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
61 self.assertEqual(l1, l2)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
62 l3 = pytree.Leaf(101, "foo")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
63 l4 = pytree.Leaf(100, "bar")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
64 self.assertNotEqual(l1, l3)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
65 self.assertNotEqual(l1, l4)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
66
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
67 def testLeafPrefix(self):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
68 l1 = pytree.Leaf(100, "foo")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
69 self.assertEqual(l1.get_prefix(), "")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
70 self.failIf(l1.was_changed)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
71 l1.set_prefix(" ##\n\n")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
72 self.assertEqual(l1.get_prefix(), " ##\n\n")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
73 self.failUnless(l1.was_changed)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
74
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
75 def testNode(self):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
76 l1 = pytree.Leaf(100, "foo")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
77 l2 = pytree.Leaf(200, "bar")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
78 n1 = pytree.Node(1000, [l1, l2])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
79 self.assertEqual(n1.type, 1000)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
80 self.assertEqual(n1.children, [l1, l2])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
81
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
82 def testNodeRepr(self):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
83 l1 = pytree.Leaf(100, "foo")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
84 l2 = pytree.Leaf(100, "bar", context=(" ", (1, 0)))
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
85 n1 = pytree.Node(1000, [l1, l2])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
86 self.assertEqual(repr(n1),
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
87 "Node(1000, [%s, %s])" % (repr(l1), repr(l2)))
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
88
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
89 def testNodeStr(self):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
90 l1 = pytree.Leaf(100, "foo")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
91 l2 = pytree.Leaf(100, "bar", context=(" ", (1, 0)))
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
92 n1 = pytree.Node(1000, [l1, l2])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
93 self.assertEqual(str(n1), "foo bar")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
94
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
95 def testNodePrefix(self):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
96 l1 = pytree.Leaf(100, "foo")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
97 self.assertEqual(l1.get_prefix(), "")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
98 n1 = pytree.Node(1000, [l1])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
99 self.assertEqual(n1.get_prefix(), "")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
100 n1.set_prefix(" ")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
101 self.assertEqual(n1.get_prefix(), " ")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
102 self.assertEqual(l1.get_prefix(), " ")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
103
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
104 def testGetSuffix(self):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
105 l1 = pytree.Leaf(100, "foo", prefix="a")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
106 l2 = pytree.Leaf(100, "bar", prefix="b")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
107 n1 = pytree.Node(1000, [l1, l2])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
108
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
109 self.assertEqual(l1.get_suffix(), l2.get_prefix())
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
110 self.assertEqual(l2.get_suffix(), "")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
111 self.assertEqual(n1.get_suffix(), "")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
112
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
113 l3 = pytree.Leaf(100, "bar", prefix="c")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
114 n2 = pytree.Node(1000, [n1, l3])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
115
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
116 self.assertEqual(n1.get_suffix(), l3.get_prefix())
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
117 self.assertEqual(l3.get_suffix(), "")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
118 self.assertEqual(n2.get_suffix(), "")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
119
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
120 def testNodeEq(self):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
121 n1 = pytree.Node(1000, ())
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
122 n2 = pytree.Node(1000, [], context=(" ", (1, 0)))
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
123 self.assertEqual(n1, n2)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
124 n3 = pytree.Node(1001, ())
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
125 self.assertNotEqual(n1, n3)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
126
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
127 def testNodeEqRecursive(self):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
128 l1 = pytree.Leaf(100, "foo")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
129 l2 = pytree.Leaf(100, "foo")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
130 n1 = pytree.Node(1000, [l1])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
131 n2 = pytree.Node(1000, [l2])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
132 self.assertEqual(n1, n2)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
133 l3 = pytree.Leaf(100, "bar")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
134 n3 = pytree.Node(1000, [l3])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
135 self.assertNotEqual(n1, n3)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
136
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
137 def testReplace(self):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
138 l1 = pytree.Leaf(100, "foo")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
139 l2 = pytree.Leaf(100, "+")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
140 l3 = pytree.Leaf(100, "bar")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
141 n1 = pytree.Node(1000, [l1, l2, l3])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
142 self.assertEqual(n1.children, [l1, l2, l3])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
143 self.failUnless(isinstance(n1.children, list))
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
144 self.failIf(n1.was_changed)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
145 l2new = pytree.Leaf(100, "-")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
146 l2.replace(l2new)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
147 self.assertEqual(n1.children, [l1, l2new, l3])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
148 self.failUnless(isinstance(n1.children, list))
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
149 self.failUnless(n1.was_changed)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
150
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
151 def testReplaceWithList(self):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
152 l1 = pytree.Leaf(100, "foo")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
153 l2 = pytree.Leaf(100, "+")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
154 l3 = pytree.Leaf(100, "bar")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
155 n1 = pytree.Node(1000, [l1, l2, l3])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
156
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
157 l2.replace([pytree.Leaf(100, "*"), pytree.Leaf(100, "*")])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
158 self.assertEqual(str(n1), "foo**bar")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
159 self.failUnless(isinstance(n1.children, list))
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
160
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
161 def testPostOrder(self):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
162 l1 = pytree.Leaf(100, "foo")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
163 l2 = pytree.Leaf(100, "bar")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
164 n1 = pytree.Node(1000, [l1, l2])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
165 self.assertEqual(list(n1.post_order()), [l1, l2, n1])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
166
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
167 def testPreOrder(self):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
168 l1 = pytree.Leaf(100, "foo")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
169 l2 = pytree.Leaf(100, "bar")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
170 n1 = pytree.Node(1000, [l1, l2])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
171 self.assertEqual(list(n1.pre_order()), [n1, l1, l2])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
172
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
173 def testChangedLeaf(self):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
174 l1 = pytree.Leaf(100, "f")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
175 self.failIf(l1.was_changed)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
176
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
177 l1.changed()
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
178 self.failUnless(l1.was_changed)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
179
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
180 def testChangedNode(self):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
181 l1 = pytree.Leaf(100, "f")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
182 n1 = pytree.Node(1000, [l1])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
183 self.failIf(n1.was_changed)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
184
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
185 n1.changed()
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
186 self.failUnless(n1.was_changed)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
187
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
188 def testChangedRecursive(self):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
189 l1 = pytree.Leaf(100, "foo")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
190 l2 = pytree.Leaf(100, "+")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
191 l3 = pytree.Leaf(100, "bar")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
192 n1 = pytree.Node(1000, [l1, l2, l3])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
193 n2 = pytree.Node(1000, [n1])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
194 self.failIf(l1.was_changed)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
195 self.failIf(n1.was_changed)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
196 self.failIf(n2.was_changed)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
197
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
198 n1.changed()
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
199 self.failUnless(n1.was_changed)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
200 self.failUnless(n2.was_changed)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
201 self.failIf(l1.was_changed)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
202
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
203 def testLeafConstructorPrefix(self):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
204 for prefix in ("xyz_", ""):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
205 l1 = pytree.Leaf(100, "self", prefix=prefix)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
206 self.failUnless(str(l1), prefix + "self")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
207 self.assertEqual(l1.get_prefix(), prefix)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
208
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
209 def testNodeConstructorPrefix(self):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
210 for prefix in ("xyz_", ""):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
211 l1 = pytree.Leaf(100, "self")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
212 l2 = pytree.Leaf(100, "foo", prefix="_")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
213 n1 = pytree.Node(1000, [l1, l2], prefix=prefix)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
214 self.failUnless(str(n1), prefix + "self_foo")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
215 self.assertEqual(n1.get_prefix(), prefix)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
216 self.assertEqual(l1.get_prefix(), prefix)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
217 self.assertEqual(l2.get_prefix(), "_")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
218
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
219 def testRemove(self):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
220 l1 = pytree.Leaf(100, "foo")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
221 l2 = pytree.Leaf(100, "foo")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
222 n1 = pytree.Node(1000, [l1, l2])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
223 n2 = pytree.Node(1000, [n1])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
224
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
225 self.assertEqual(n1.remove(), 0)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
226 self.assertEqual(n2.children, [])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
227 self.assertEqual(l1.parent, n1)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
228 self.assertEqual(n1.parent, None)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
229 self.assertEqual(n2.parent, None)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
230 self.failIf(n1.was_changed)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
231 self.failUnless(n2.was_changed)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
232
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
233 self.assertEqual(l2.remove(), 1)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
234 self.assertEqual(l1.remove(), 0)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
235 self.assertEqual(n1.children, [])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
236 self.assertEqual(l1.parent, None)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
237 self.assertEqual(n1.parent, None)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
238 self.assertEqual(n2.parent, None)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
239 self.failUnless(n1.was_changed)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
240 self.failUnless(n2.was_changed)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
241
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
242 def testRemoveParentless(self):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
243 n1 = pytree.Node(1000, [])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
244 n1.remove()
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
245 self.assertEqual(n1.parent, None)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
246
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
247 l1 = pytree.Leaf(100, "foo")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
248 l1.remove()
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
249 self.assertEqual(l1.parent, None)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
250
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
251 def testNodeSetChild(self):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
252 l1 = pytree.Leaf(100, "foo")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
253 n1 = pytree.Node(1000, [l1])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
254
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
255 l2 = pytree.Leaf(100, "bar")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
256 n1.set_child(0, l2)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
257 self.assertEqual(l1.parent, None)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
258 self.assertEqual(l2.parent, n1)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
259 self.assertEqual(n1.children, [l2])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
260
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
261 n2 = pytree.Node(1000, [l1])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
262 n2.set_child(0, n1)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
263 self.assertEqual(l1.parent, None)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
264 self.assertEqual(n1.parent, n2)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
265 self.assertEqual(n2.parent, None)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
266 self.assertEqual(n2.children, [n1])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
267
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
268 self.assertRaises(IndexError, n1.set_child, 4, l2)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
269 # I don't care what it raises, so long as it's an exception
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
270 self.assertRaises(Exception, n1.set_child, 0, list)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
271
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
272 def testNodeInsertChild(self):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
273 l1 = pytree.Leaf(100, "foo")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
274 n1 = pytree.Node(1000, [l1])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
275
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
276 l2 = pytree.Leaf(100, "bar")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
277 n1.insert_child(0, l2)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
278 self.assertEqual(l2.parent, n1)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
279 self.assertEqual(n1.children, [l2, l1])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
280
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
281 l3 = pytree.Leaf(100, "abc")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
282 n1.insert_child(2, l3)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
283 self.assertEqual(n1.children, [l2, l1, l3])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
284
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
285 # I don't care what it raises, so long as it's an exception
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
286 self.assertRaises(Exception, n1.insert_child, 0, list)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
287
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
288 def testNodeAppendChild(self):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
289 n1 = pytree.Node(1000, [])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
290
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
291 l1 = pytree.Leaf(100, "foo")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
292 n1.append_child(l1)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
293 self.assertEqual(l1.parent, n1)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
294 self.assertEqual(n1.children, [l1])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
295
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
296 l2 = pytree.Leaf(100, "bar")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
297 n1.append_child(l2)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
298 self.assertEqual(l2.parent, n1)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
299 self.assertEqual(n1.children, [l1, l2])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
300
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
301 # I don't care what it raises, so long as it's an exception
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
302 self.assertRaises(Exception, n1.append_child, list)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
303
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
304 def testNodeNextSibling(self):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
305 n1 = pytree.Node(1000, [])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
306 n2 = pytree.Node(1000, [])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
307 p1 = pytree.Node(1000, [n1, n2])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
308
53823
a2303a74a761 Merged revisions 72368 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 49553
diff changeset
309 self.failUnless(n1.next_sibling is n2)
a2303a74a761 Merged revisions 72368 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 49553
diff changeset
310 self.assertEqual(n2.next_sibling, None)
a2303a74a761 Merged revisions 72368 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 49553
diff changeset
311 self.assertEqual(p1.next_sibling, None)
45908
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
312
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
313 def testLeafNextSibling(self):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
314 l1 = pytree.Leaf(100, "a")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
315 l2 = pytree.Leaf(100, "b")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
316 p1 = pytree.Node(1000, [l1, l2])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
317
53823
a2303a74a761 Merged revisions 72368 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 49553
diff changeset
318 self.failUnless(l1.next_sibling is l2)
a2303a74a761 Merged revisions 72368 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 49553
diff changeset
319 self.assertEqual(l2.next_sibling, None)
a2303a74a761 Merged revisions 72368 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 49553
diff changeset
320 self.assertEqual(p1.next_sibling, None)
45908
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
321
46386
2287a4ab24d8 Merged revisions 62263 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45910
diff changeset
322 def testNodePrevSibling(self):
2287a4ab24d8 Merged revisions 62263 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45910
diff changeset
323 n1 = pytree.Node(1000, [])
2287a4ab24d8 Merged revisions 62263 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45910
diff changeset
324 n2 = pytree.Node(1000, [])
2287a4ab24d8 Merged revisions 62263 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45910
diff changeset
325 p1 = pytree.Node(1000, [n1, n2])
2287a4ab24d8 Merged revisions 62263 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45910
diff changeset
326
53823
a2303a74a761 Merged revisions 72368 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 49553
diff changeset
327 self.failUnless(n2.prev_sibling is n1)
a2303a74a761 Merged revisions 72368 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 49553
diff changeset
328 self.assertEqual(n1.prev_sibling, None)
a2303a74a761 Merged revisions 72368 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 49553
diff changeset
329 self.assertEqual(p1.prev_sibling, None)
46386
2287a4ab24d8 Merged revisions 62263 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45910
diff changeset
330
2287a4ab24d8 Merged revisions 62263 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45910
diff changeset
331 def testLeafPrevSibling(self):
2287a4ab24d8 Merged revisions 62263 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45910
diff changeset
332 l1 = pytree.Leaf(100, "a")
2287a4ab24d8 Merged revisions 62263 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45910
diff changeset
333 l2 = pytree.Leaf(100, "b")
2287a4ab24d8 Merged revisions 62263 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45910
diff changeset
334 p1 = pytree.Node(1000, [l1, l2])
2287a4ab24d8 Merged revisions 62263 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45910
diff changeset
335
53823
a2303a74a761 Merged revisions 72368 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 49553
diff changeset
336 self.failUnless(l2.prev_sibling is l1)
a2303a74a761 Merged revisions 72368 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 49553
diff changeset
337 self.assertEqual(l1.prev_sibling, None)
a2303a74a761 Merged revisions 72368 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 49553
diff changeset
338 self.assertEqual(p1.prev_sibling, None)
46386
2287a4ab24d8 Merged revisions 62263 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45910
diff changeset
339
45908
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
340
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
341 class TestPatterns(support.TestCase):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
342
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
343 """Unit tests for tree matching patterns."""
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
344
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
345 def testBasicPatterns(self):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
346 # Build a tree
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
347 l1 = pytree.Leaf(100, "foo")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
348 l2 = pytree.Leaf(100, "bar")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
349 l3 = pytree.Leaf(100, "foo")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
350 n1 = pytree.Node(1000, [l1, l2])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
351 n2 = pytree.Node(1000, [l3])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
352 root = pytree.Node(1000, [n1, n2])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
353 # Build a pattern matching a leaf
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
354 pl = pytree.LeafPattern(100, "foo", name="pl")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
355 r = {}
49553
3ff7bb830519 Merged revisions 66887,66891,66902-66903,66905-66906,66911-66913,66922,66927-66928,66936,66939-66940,66962,66964,66973 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 46386
diff changeset
356 self.assertFalse(pl.match(root, results=r))
45908
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
357 self.assertEqual(r, {})
49553
3ff7bb830519 Merged revisions 66887,66891,66902-66903,66905-66906,66911-66913,66922,66927-66928,66936,66939-66940,66962,66964,66973 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 46386
diff changeset
358 self.assertFalse(pl.match(n1, results=r))
45908
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
359 self.assertEqual(r, {})
49553
3ff7bb830519 Merged revisions 66887,66891,66902-66903,66905-66906,66911-66913,66922,66927-66928,66936,66939-66940,66962,66964,66973 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 46386
diff changeset
360 self.assertFalse(pl.match(n2, results=r))
45908
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
361 self.assertEqual(r, {})
49553
3ff7bb830519 Merged revisions 66887,66891,66902-66903,66905-66906,66911-66913,66922,66927-66928,66936,66939-66940,66962,66964,66973 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 46386
diff changeset
362 self.assertTrue(pl.match(l1, results=r))
45908
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
363 self.assertEqual(r, {"pl": l1})
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
364 r = {}
49553
3ff7bb830519 Merged revisions 66887,66891,66902-66903,66905-66906,66911-66913,66922,66927-66928,66936,66939-66940,66962,66964,66973 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 46386
diff changeset
365 self.assertFalse(pl.match(l2, results=r))
45908
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
366 self.assertEqual(r, {})
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
367 # Build a pattern matching a node
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
368 pn = pytree.NodePattern(1000, [pl], name="pn")
49553
3ff7bb830519 Merged revisions 66887,66891,66902-66903,66905-66906,66911-66913,66922,66927-66928,66936,66939-66940,66962,66964,66973 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 46386
diff changeset
369 self.assertFalse(pn.match(root, results=r))
45908
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
370 self.assertEqual(r, {})
49553
3ff7bb830519 Merged revisions 66887,66891,66902-66903,66905-66906,66911-66913,66922,66927-66928,66936,66939-66940,66962,66964,66973 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 46386
diff changeset
371 self.assertFalse(pn.match(n1, results=r))
45908
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
372 self.assertEqual(r, {})
49553
3ff7bb830519 Merged revisions 66887,66891,66902-66903,66905-66906,66911-66913,66922,66927-66928,66936,66939-66940,66962,66964,66973 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 46386
diff changeset
373 self.assertTrue(pn.match(n2, results=r))
45908
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
374 self.assertEqual(r, {"pn": n2, "pl": l3})
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
375 r = {}
49553
3ff7bb830519 Merged revisions 66887,66891,66902-66903,66905-66906,66911-66913,66922,66927-66928,66936,66939-66940,66962,66964,66973 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 46386
diff changeset
376 self.assertFalse(pn.match(l1, results=r))
45908
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
377 self.assertEqual(r, {})
49553
3ff7bb830519 Merged revisions 66887,66891,66902-66903,66905-66906,66911-66913,66922,66927-66928,66936,66939-66940,66962,66964,66973 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 46386
diff changeset
378 self.assertFalse(pn.match(l2, results=r))
45908
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
379 self.assertEqual(r, {})
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
380
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
381 def testWildcardPatterns(self):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
382 # Build a tree for testing
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
383 l1 = pytree.Leaf(100, "foo")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
384 l2 = pytree.Leaf(100, "bar")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
385 l3 = pytree.Leaf(100, "foo")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
386 n1 = pytree.Node(1000, [l1, l2])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
387 n2 = pytree.Node(1000, [l3])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
388 root = pytree.Node(1000, [n1, n2])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
389 # Build a pattern
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
390 pl = pytree.LeafPattern(100, "foo", name="pl")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
391 pn = pytree.NodePattern(1000, [pl], name="pn")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
392 pw = pytree.WildcardPattern([[pn], [pl, pl]], name="pw")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
393 r = {}
49553
3ff7bb830519 Merged revisions 66887,66891,66902-66903,66905-66906,66911-66913,66922,66927-66928,66936,66939-66940,66962,66964,66973 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 46386
diff changeset
394 self.assertFalse(pw.match_seq([root], r))
45908
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
395 self.assertEqual(r, {})
49553
3ff7bb830519 Merged revisions 66887,66891,66902-66903,66905-66906,66911-66913,66922,66927-66928,66936,66939-66940,66962,66964,66973 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 46386
diff changeset
396 self.assertFalse(pw.match_seq([n1], r))
45908
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
397 self.assertEqual(r, {})
49553
3ff7bb830519 Merged revisions 66887,66891,66902-66903,66905-66906,66911-66913,66922,66927-66928,66936,66939-66940,66962,66964,66973 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 46386
diff changeset
398 self.assertTrue(pw.match_seq([n2], r))
45908
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
399 # These are easier to debug
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
400 self.assertEqual(sorted(r.keys()), ["pl", "pn", "pw"])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
401 self.assertEqual(r["pl"], l1)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
402 self.assertEqual(r["pn"], n2)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
403 self.assertEqual(r["pw"], [n2])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
404 # But this is equivalent
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
405 self.assertEqual(r, {"pl": l1, "pn": n2, "pw": [n2]})
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
406 r = {}
49553
3ff7bb830519 Merged revisions 66887,66891,66902-66903,66905-66906,66911-66913,66922,66927-66928,66936,66939-66940,66962,66964,66973 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 46386
diff changeset
407 self.assertTrue(pw.match_seq([l1, l3], r))
45908
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
408 self.assertEqual(r, {"pl": l3, "pw": [l1, l3]})
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
409 self.assert_(r["pl"] is l3)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
410 r = {}
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
411
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
412 def testGenerateMatches(self):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
413 la = pytree.Leaf(1, "a")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
414 lb = pytree.Leaf(1, "b")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
415 lc = pytree.Leaf(1, "c")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
416 ld = pytree.Leaf(1, "d")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
417 le = pytree.Leaf(1, "e")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
418 lf = pytree.Leaf(1, "f")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
419 leaves = [la, lb, lc, ld, le, lf]
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
420 root = pytree.Node(1000, leaves)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
421 pa = pytree.LeafPattern(1, "a", "pa")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
422 pb = pytree.LeafPattern(1, "b", "pb")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
423 pc = pytree.LeafPattern(1, "c", "pc")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
424 pd = pytree.LeafPattern(1, "d", "pd")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
425 pe = pytree.LeafPattern(1, "e", "pe")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
426 pf = pytree.LeafPattern(1, "f", "pf")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
427 pw = pytree.WildcardPattern([[pa, pb, pc], [pd, pe],
45910
1da2499683b4 Merged revisions 61602 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45908
diff changeset
428 [pa, pb], [pc, pd], [pe, pf]],
45908
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
429 min=1, max=4, name="pw")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
430 self.assertEqual([x[0] for x in pw.generate_matches(leaves)],
45910
1da2499683b4 Merged revisions 61602 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 45908
diff changeset
431 [3, 5, 2, 4, 6])
45908
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
432 pr = pytree.NodePattern(type=1000, content=[pw], name="pr")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
433 matches = list(pytree.generate_matches([pr], [root]))
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
434 self.assertEqual(len(matches), 1)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
435 c, r = matches[0]
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
436 self.assertEqual(c, 1)
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
437 self.assertEqual(str(r["pr"]), "abcdef")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
438 self.assertEqual(r["pw"], [la, lb, lc, ld, le, lf])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
439 for c in "abcdef":
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
440 self.assertEqual(r["p" + c], pytree.Leaf(1, c))
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
441
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
442 def testHasKeyExample(self):
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
443 pattern = pytree.NodePattern(331,
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
444 (pytree.LeafPattern(7),
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
445 pytree.WildcardPattern(name="args"),
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
446 pytree.LeafPattern(8)))
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
447 l1 = pytree.Leaf(7, "(")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
448 l2 = pytree.Leaf(3, "x")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
449 l3 = pytree.Leaf(8, ")")
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
450 node = pytree.Node(331, [l1, l2, l3])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
451 r = {}
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
452 self.assert_(pattern.match(node, r))
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
453 self.assertEqual(r["args"], [l2])
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
454
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
455
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
456 if __name__ == "__main__":
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
457 import __main__
963d67df3723 Merged revisions 61596-61597 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
diff changeset
458 support.run_all_tests(__main__)