1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 import copy
17
18 from elisa.core.tests.elisa_test_case import ElisaTestCase
19 from elisa.core.observers.list import ListObservable, ListObserver
20 from elisa.core.observers.observable import Observable
21
22
24
26 ListObserver.__init__(self)
27 self.inserted_called = False
28 self.removed_called = False
29 self.modified_called = False
30 self.dirtied_called = False
31 self.element_set = None
32
34 self.inserted_called = (elements, position)
35
36 - def removed(self, elements, position):
37 self.removed_called = (elements, position)
38
41
43 self.dirtied_called = True
44
46 self.element_set = (position, key, old_value, new_value)
47
50
52
54 l = ListObservable()
55 observer = MyListObserver()
56 l.add_observer(observer)
57
58
59 observer.inserted_called = False
60 l.append("test")
61 self.failUnlessEqual(observer.inserted_called, (["test"], 0))
62
63
64 observer.inserted_called = False
65 l.extend(["toto"])
66 self.failUnlessEqual(observer.inserted_called, (["toto"], 1))
67
68
69 observer.inserted_called = False
70 l.insert(1, "titi")
71 self.failUnlessEqual(observer.inserted_called, (["titi"], 1))
72
73
74 observer.inserted_called = False
75 l += ["tata"]
76 self.failUnlessEqual(observer.inserted_called, (["tata"], 3))
77
78
79
80 """
81 observer.inserted_called = False
82 elements = l[:]
83 l *= 2
84 self.failUnlessEqual(observer.inserted_called, (elements, 4))
85 """
86
108
109
110
112 l = ListObservable()
113 observer = MyListObserver()
114 l.add_observer(observer)
115
116 l.extend(["test1", "test2", "test3"])
117
118
119 observer.removed_called = False
120 element = l.pop()
121 self.failUnless(observer.removed_called == ([element], -1) or \
122 observer.removed_called == ([element], 2))
123
124 observer.removed_called = False
125 index = -2
126 element = l.pop(index)
127 self.failUnlessEqual(observer.removed_called, ([element], index))
128
129 observer.removed_called = False
130 index = 0
131 element = l.pop(index)
132 self.failUnlessEqual(observer.removed_called, ([element], index))
133
134
135
136 l[:] = []
137 l.extend(["test1", "test2", "test3"])
138
139
140 observer.removed_called = False
141 l.remove("test2")
142 self.failUnlessEqual(observer.removed_called, (["test2"], 1))
143
144 observer.removed_called = False
145 self.failUnlessRaises(ValueError, l.remove, "test2")
146 self.failUnlessEqual(observer.removed_called, False)
147
148
149 observer.removed_called = False
150 del l[0]
151 self.failUnlessEqual(observer.removed_called, (["test1"], 0))
152
163
180
210
216
217
219 l = ListObservable()
220 o = MyListObserver()
221 l.add_observer(o)
222
223 child = Observable()
224 l.append(child)
225
226 child.test = "value"
227 self.failUnlessEqual(o.element_set, (0, "test", None, "value"))
228
229 child.test = "ah ah value"
230 self.failUnlessEqual(o.element_set, (0, "test", "value", "ah ah value"))
231
232 for i in xrange(10):
233 child = Observable()
234 l.append(child)
235
236 child = Observable()
237 l.append(child)
238
239 child.another = "truc"
240 self.failUnlessEqual(o.element_set, (11, "another", None, "truc"))
241
242 child.another = None
243 self.failUnlessEqual(o.element_set, (11, "another", "truc", None))
244
245 del child.another
246 child.another = "value"
247 self.failUnlessEqual(o.element_set, (11, "another", None, "value"))
248