1 from elisa.core.tests.elisa_test_case import ElisaTestCase
2 from elisa.plugins.bad.poblenou_frontend.list_cache import substract, \
3 cache, \
4 insert, \
5 remove, \
6 update_index, \
7 CacheList
8
10
12 r1 = (10, 20)
13 r2 = (15, 25)
14
15 r = substract(r1, r2)
16 self.assertEqual(r, (10, 14))
17 r = substract(r2, r1)
18 self.assertEqual(r, (21, 25))
19
20 r1 = (10, 20)
21 r2 = (25, 30)
22
23 r = substract(r1, r2)
24 self.assertEqual(r, r1)
25 r = substract(r2, r1)
26 self.assertEqual(r, r2)
27
28 r1 = (10, 20)
29 r2 = (20, 30)
30
31 r = substract(r1, r2)
32 self.assertEqual(r, (10, 19))
33 r = substract(r2, r1)
34 self.assertEqual(r, (21, 30))
35
36 r1 = (10, 10)
37 r2 = (10, 20)
38
39 r = substract(r1, r2)
40 self.assertEqual(r, None)
41 r = substract(r2, r1)
42 self.assertEqual(r, (11, 20))
43
44 r1 = (20, 20)
45 r2 = (10, 20)
46
47 r = substract(r1, r2)
48 self.assertEqual(r, None)
49 r = substract(r2, r1)
50 self.assertEqual(r, (10, 19))
51
52 r1 = (10, 20)
53 r2 = (13, 17)
54
55 self.assertRaises(IndexError, substract, r1, r2)
56 r = substract(r2, r1)
57 self.assertEqual(r, None)
58
60 total = 10
61 cached = 5
62
63 c = cache(total, cached, 3)
64 self.assertEqual(c, (1, 5))
65
66 c = cache(total, cached, 0)
67 self.assertEqual(c, (0, 2))
68
69 c = cache(total, cached, 1)
70 self.assertEqual(c, (0, 3))
71
72 c = cache(total, cached, 9)
73 self.assertEqual(c, (7, 9))
74
75 c = cache(total, cached, 8)
76 self.assertEqual(c, (6, 9))
77
78 total = 3
79 c = cache(total, cached, 0)
80 self.assertEqual(c, (0, 2))
81
82 c = cache(total, cached, 1)
83 self.assertEqual(c, (0, 2))
84
85 total = 0
86 c = cache(total, cached, 5)
87 self.assertEqual(c, None)
88
89 c = cache(total, cached, 0)
90 self.assertEqual(c, None)
91
92
94 total = 10
95 cached = 4
96
97 c = cache(total, cached, 3)
98 self.assertEqual(c, (1, 5))
99
100 c = cache(total, cached, 0)
101 self.assertEqual(c, (0, 2))
102
103 c = cache(total, cached, 1)
104 self.assertEqual(c, (0, 3))
105
106 c = cache(total, cached, 9)
107 self.assertEqual(c, (7, 9))
108
109 c = cache(total, cached, 8)
110 self.assertEqual(c, (6, 9))
111
112
114 total = 10
115 cached = 5
116
117 r, a = update_index(total, cached, 2, 3)
118 self.assertEqual(r, (0, 0))
119 self.assertEqual(a, (5, 5))
120
121 r, a = update_index(total, cached, 3, 4)
122 self.assertEqual(r, (1, 1))
123 self.assertEqual(a, (6, 6))
124
125 r, a = update_index(total, cached, 0, 1)
126 self.assertEqual(r, None)
127 self.assertEqual(a, (3, 3))
128
129 r, a = update_index(total, cached, 9, 8)
130 self.assertEqual(r, None)
131 self.assertEqual(a, (6, 6))
132
134 total = 10
135 cached = 2
136
137 r, a = update_index(total, cached, 2, 3)
138 self.assertEqual(r, (1, 1))
139 self.assertEqual(a, (4, 4))
140
141 r, a = update_index(total, cached, 3, 4)
142 self.assertEqual(r, (2, 2))
143 self.assertEqual(a, (5, 5))
144
145 r, a = update_index(total, cached, 0, 1)
146 self.assertEqual(r, None)
147 self.assertEqual(a, (2, 2))
148
149 r, a = update_index(total, cached, 9, 8)
150 self.assertEqual(r, None)
151 self.assertEqual(a, (7, 7))
152
154 total = 40
155 cached = 13
156
157 r, a = update_index(total, cached, 10, 30)
158 self.assertEqual(r, (4, 16))
159 self.assertEqual(a, (24, 36))
160
161 r, a = update_index(total, cached, 20, 25)
162 self.assertEqual(r, (14, 18))
163 self.assertEqual(a, (27, 31))
164
165 r, a = update_index(total, cached, 0, 5)
166 self.assertEqual(r, None)
167 self.assertEqual(a, (7, 11))
168
169 r, a = update_index(total, cached, 0, 20)
170 self.assertEqual(r, (0, 6))
171 self.assertEqual(a, (14, 26))
172
173 r, a = update_index(total, cached, 39, 35)
174 self.assertEqual(r, None)
175 self.assertEqual(a, (29, 32))
176
177 r, a = update_index(total, cached, 39, 20)
178 self.assertEqual(r, (33, 39))
179 self.assertEqual(a, (14, 26))
180
182 total = 10
183 cached = 5
184
185 index = 3
186 inserted = 8
187
188 r = insert(total, cached, index, inserted)
189 self.assertEqual(r, None)
190
191 inserted = 4
192
193 r = insert(total, cached, index, inserted)
194 self.assertEqual(r, 5)
195
196 inserted = 2
197
198 r = insert(total, cached, index, inserted)
199 self.assertEqual(r, 1)
200
201 inserted = 0
202
203 r = insert(total, cached, index, inserted)
204 self.assertEqual(r, None)
205
206 index = 0
207 inserted = 0
208
209 r = insert(total, cached, index, inserted)
210 self.assertEqual(r, 2)
211
212 total = 0
213 index = 0
214 inserted = 0
215
216 r = insert(total, cached, index, inserted)
217 self.assertEqual(r, None)
218
219 total = 1
220 index = 0
221 inserted = 0
222
223 r = insert(total, cached, index, inserted)
224 self.assertEqual(r, None)
225
226 total = 4
227 index = 0
228 inserted = 0
229
230 r = insert(total, cached, index, inserted)
231 self.assertEqual(r, 2)
232
234 total = 10
235 cached = 5
236
237 index = 3
238 removed = 8
239
240 r = remove(total, cached, index, removed)
241 self.assertEqual(r, None)
242
243 removed = 4
244
245 r = remove(total, cached, index, removed)
246 self.assertEqual(r, 5)
247
248 removed = 2
249
250 r = remove(total, cached, index, removed)
251 self.assertEqual(r, 1)
252
253 removed = 0
254
255 r = remove(total, cached, index, removed)
256 self.assertEqual(r, None)
257
258 index = 0
259 removed = 0
260
261 r = remove(total, cached, index, removed)
262 self.assertEqual(r, 2)
263
264 total = 0
265 index = 0
266 removed = 0
267
268 r = remove(total, cached, index, removed)
269 self.assertEqual(r, None)
270
271 total = 1
272 index = 0
273 removed = 0
274
275 r = remove(total, cached, index, removed)
276 self.assertEqual(r, None)
277
278 total = 4
279 index = 0
280 removed = 0
281
282 r = remove(total, cached, index, removed)
283 self.assertEqual(r, 2)
284
286 real = []
287 l = CacheList(5, real)
288
289 def generator(i):
290 def _pgen():
291 return i
292 return _pgen
293
294 l.insert(0, generator(2))
295 self.assertEqual(real, [2])
296
297 l.append(generator(3))
298 self.assertEqual(real, [2, 3])
299
300 l.insert(0, generator(1))
301 self.assertEqual(real, [1, 2, 3])
302
303 l.insert(0, generator(0))
304 self.assertEqual(real, [0, 1, 2])
305
306 g = map(lambda i: generator(i), range(4, 10))
307 l.extend(g)
308 self.assertEqual(real, [0, 1, 2])
309
310 l.pop(0)
311 self.assertEqual(real, [1, 2, 3])
312
313 l.pop(2)
314 self.assertEqual(real, [1, 2, 4])
315
316 l.pop(3)
317 self.assertEqual(real, [1, 2, 4])
318
320 real = []
321 l = CacheList(5, real)
322
323 def generator(i):
324 def _pgen():
325 return i
326 return _pgen
327
328 g = map(lambda i: generator(i), range(10))
329 l.extend(g)
330 self.assertEqual(real, [0, 1, 2])
331
332 l.current_index = 1
333 self.assertEqual(real, [0, 1, 2, 3])
334
335 l.current_index = 2
336 self.assertEqual(real, [0, 1, 2, 3, 4])
337
338 l.current_index = 3
339 self.assertEqual(real, [1, 2, 3, 4, 5])
340
341 l.current_index = 6
342 self.assertEqual(real, [4, 5, 6, 7, 8])
343
344 l.current_index = 7
345 self.assertEqual(real, [5, 6, 7, 8, 9])
346
347 l.current_index = 8
348 self.assertEqual(real, [6, 7, 8, 9])
349
350 l.current_index = 9
351 self.assertEqual(real, [7, 8, 9])
352