5 child = Node.NodeReference()
7 class OwnerMap(object):
8 children = Node.NodeMap()
10 class OwnerList(object):
11 children = Node.NodeList()
13 class Child(Node.Node):
16 class UnitTest(unittest.TestCase):
22 self.assertEqual(list(child1.owners),[])
23 self.assertEqual(list(child2.owners),[])
24 self.assertEqual(owner.child,None)
27 self.assertEqual(list(child1.owners), [owner])
28 self.assertEqual(list(child2.owners), [])
29 self.assertEqual(owner.child, child1)
32 self.assertEqual(list(child1.owners), [])
33 self.assertEqual(list(child2.owners), [owner])
34 self.assertEqual(owner.child, child2)
37 self.assertEqual(list(child1.owners),[])
38 self.assertEqual(list(child2.owners),[])
39 self.assertEqual(owner.child,None)
42 self.assertEqual(list(child1.owners), [owner])
44 self.assertEqual(list(child1.owners),[])
45 self.assertEqual(owner, None)
48 def testNodeMap(self):
51 owner.children['a'] = child
52 self.assertEqual(list(child.owners),[owner])
53 del owner.children['a']
54 self.assertEqual(list(child.owners),[])
57 owner.children.setdefault('a',child)
58 owner.children['b'] = child2
59 self.assertEqual(list(child.owners),[owner])
60 self.assertEqual(list(child2.owners),[owner])
61 owner.children['a'] = owner.children['b']
62 self.assertEqual(list(child.owners),[])
63 self.assertEqual(list(child2.owners),[owner,owner])
64 del owner.children['a']
65 self.assertEqual(list(child2.owners),[owner])
66 owner.children.clear()
67 self.assertEqual(list(child2.owners),[])
69 owner.children = dict(a=child, b=child2)
70 self.assertEqual(list(owner.children.pop('a').owners), [])
71 self.assertEqual(list(child2.owners), [owner])
72 self.assertEqual(owner.children.popitem(),('b',child2))
73 self.assertEqual(list(child2.owners), [])
75 owner.children['a'] = child
76 owner.children.update(b=child2)
77 self.assertEqual(list(child2.owners), [owner])
78 self.assertEqual(list(child.owners), [owner])
79 owner.children.update(a=child2)
80 self.assertEqual(list(child.owners), [])
81 self.assertEqual(list(child2.owners),[owner,owner])
84 self.assertEqual(list(child2.owners), [])
87 def testNodeList(self):
92 owner.children.append(child1)
93 owner.children.append(child2)
94 self.assertEqual(owner.children, [child1,child2])
95 self.assertEqual(list(child1.owners),[owner])
96 self.assertEqual(list(child2.owners),[owner])
98 owner.children.extend([child1,child2])
99 self.assertEqual(owner.children, [child1,child2,child1,child2])
100 self.assertEqual(list(child1.owners),[owner,owner])
101 self.assertEqual(list(child2.owners),[owner,owner])
103 self.assertRaises(ValueError, self._testNodeList_1, owner)
104 self.assertEqual(owner.children, [child1,child2,child1,child2])
105 self.assertEqual(list(child1.owners),[owner,owner])
106 self.assertEqual(list(child2.owners),[owner,owner])
108 owner.children[1:2] = []
109 self.assertEqual(list(child1.owners), [owner,owner])
110 self.assertEqual(list(child2.owners), [owner])
112 owner.children[:] = []
113 self.assertEqual(list(child1.owners), [])
114 self.assertEqual(list(child2.owners), [])
116 owner.children[:] = [child1,child2]
117 self.assertEqual(list(child1.owners),[owner])
118 self.assertEqual(list(child2.owners),[owner])
120 del owner.children[0]
121 self.assertEqual(list(child1.owners),[])
122 self.assertEqual(list(child2.owners),[owner])
124 del owner.children[:]
125 self.assertEqual(list(child2.owners),[])
127 owner.children = [child1,child1]
128 owner.children.insert(1,child2)
129 self.assertEqual(owner.children,[child1,child2,child1])
130 self.assertEqual(list(child1.owners), [owner,owner])
131 self.assertEqual(list(child2.owners), [owner])
133 self.assertEqual(list(owner.children.pop().owners), [owner])
134 self.assertEqual(owner.children.pop(), child2)
135 self.assertEqual(owner.children, [child1])
137 owner.children.append(child2)
138 self.assertEqual(list(owner.children.pop(0).owners), [])
139 self.assertEqual(owner.children, [child2])
140 owner.children.append(child1)
141 owner.children.remove(child2)
142 self.assertEqual(list(child1.owners),[owner])
143 self.assertEqual(list(child2.owners),[])
144 self.assertEqual(owner.children, [child1])
147 self.assertEqual(list(child1.owners), [])
150 def _testNodeList_1(self, owner):
151 owner.children[::2] = []
154 if __name__ == '__main__':