|
1 # |
|
2 # Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). |
|
3 # All rights reserved. |
|
4 # This component and the accompanying materials are made available |
|
5 # under the terms of "Eclipse Public License v1.0" |
|
6 # which accompanies this distribution, and is available |
|
7 # at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 # |
|
9 # Initial Contributors: |
|
10 # Nokia Corporation - initial contribution. |
|
11 # |
|
12 # Contributors: |
|
13 # |
|
14 # Description: |
|
15 # |
|
16 |
|
17 """ |
|
18 Test the configuration |
|
19 """ |
|
20 import unittest |
|
21 import string |
|
22 import sys,os |
|
23 import __init__ |
|
24 |
|
25 from cone.public import api,exceptions,utils |
|
26 from cone.storage import persistentdictionary |
|
27 from cone.confml import persistentconfml |
|
28 |
|
29 class TestConfiguration(unittest.TestCase): |
|
30 def setUp(self): |
|
31 pass |
|
32 |
|
33 # @test |
|
34 def test_create_configuration(self): |
|
35 conf = api.Configuration("testmee.confml") |
|
36 self.assertTrue(conf) |
|
37 |
|
38 def test_get_root_configuration(self): |
|
39 conf = api.Configuration("testmee.confml") |
|
40 self.assertEquals(conf.get_root_configuration(),conf) |
|
41 conf.add_configuration(api.Configuration("foo/foo.confml")) |
|
42 conf.add_configuration(api.Configuration("fii/fii.confml")) |
|
43 conf.fii__fii_confml.add_configuration(api.Configuration("fii/foo.confml")) |
|
44 self.assertEquals(conf.fii__fii_confml.get_root_configuration(),conf) |
|
45 self.assertEquals(conf.foo__foo_confml.get_root_configuration(),conf) |
|
46 self.assertEquals(conf.fii__fii_confml.fii__foo_confml.get_root_configuration(),conf) |
|
47 |
|
48 def test_get_last_configuration(self): |
|
49 conf = api.Configuration("testmee.confml") |
|
50 conf.add_configuration(api.Configuration("foo/foo.confml")) |
|
51 conf.add_configuration(api.Configuration("fii/fii.confml")) |
|
52 conf.add_configuration(api.Configuration("hii/hii.confml")) |
|
53 conf.fii__fii_confml.add_configuration(api.Configuration("fii/foo.confml")) |
|
54 self.assertEquals(conf.list_configurations(), ["foo/foo.confml","fii/fii.confml","hii/hii.confml"]) |
|
55 |
|
56 self.assertEquals(conf.get_configuration_by_index(-1).get_path(), "hii/hii.confml") |
|
57 self.assertEquals(conf.get_configuration_by_index(0).get_path(), "foo/foo.confml") |
|
58 self.assertEquals(conf.get_configuration_by_index(1).get_path(), "fii/fii.confml") |
|
59 self.assertEquals(conf.get_configuration_by_index(2).get_path(), "hii/hii.confml") |
|
60 |
|
61 def compareconfiguration(self, conf1,conf2): |
|
62 self.assertEquals(conf1.path,conf2.path) |
|
63 self.assertEquals(conf1.name,conf2.name) |
|
64 self.assertEquals(conf1.ref,conf2.ref) |
|
65 self.assertEquals(conf1.namespace,conf2.namespace) |
|
66 |
|
67 def test_clone_single_configuration(self): |
|
68 conf1 = api.Configuration("testmee.confml") |
|
69 conf1.add_feature(api.Feature('test1')) |
|
70 conf1.add_feature(api.Feature('test2')) |
|
71 conf1.add_feature(api.Feature('child1'),'test1') |
|
72 dview = conf1.get_default_view() |
|
73 dview.get_feature('test1').set_value('one') |
|
74 dview.get_feature('test1.child1').set_value('subone') |
|
75 conf2 = conf1._clone(recursion=True) |
|
76 self.compareconfiguration(conf1, conf2) |
|
77 self.assertEquals(conf2.list_all_features(),['test1', 'test1.child1', 'test2']) |
|
78 dview2 = conf2.get_default_view() |
|
79 self.assertEquals(dview2.get_feature('test1').get_value(),'one') |
|
80 self.assertEquals(dview2.get_feature('test1.child1').get_value(),'subone') |
|
81 |
|
82 def test_clone_configuration_with_includes(self): |
|
83 conf1 = api.Configuration("testmee.confml") |
|
84 conf1.add_feature(api.Feature('test1')) |
|
85 conf1.add_feature(api.Feature('test2')) |
|
86 conf1.add_feature(api.Feature('child1'),'test1') |
|
87 conf1.create_configuration("confml/data.confml") |
|
88 dview = conf1.get_default_view() |
|
89 dview.get_feature('test1').set_value('one') |
|
90 dview.get_feature('test1.child1').set_value('subone') |
|
91 conf2 = conf1._clone(recursion=True) |
|
92 self.compareconfiguration(conf1, conf2) |
|
93 self.assertEquals(conf2.list_all_features(),['test1', 'test1.child1', 'test2']) |
|
94 self.assertEquals(conf2.list_configurations(),['confml/data.confml']) |
|
95 dview2 = conf2.get_default_view() |
|
96 self.assertEquals(dview2.get_feature('test1').get_value(),'one') |
|
97 self.assertEquals(dview2.get_feature('test1.child1').get_value(),'subone') |
|
98 |
|
99 # def test_create_and_get_root(self): |
|
100 # conf = api.Configuration("foobar/testmee.confml") |
|
101 # self.assertEquals(conf.get_root(),"foobar/testmee.confml") |
|
102 |
|
103 class TestCompositeConfiguration(unittest.TestCase): |
|
104 def test_add(self): |
|
105 conf = api.Configuration("data/simple.confml") |
|
106 layer = api.Configuration("laa") |
|
107 conf._add(layer) |
|
108 self.assertEquals(conf.list_configurations()[0],"laa") |
|
109 |
|
110 def test_add_and_access_via_member(self): |
|
111 conf = api.Configuration("data/simple.confml") |
|
112 layer = api.Configuration("laa") |
|
113 conf._add(layer) |
|
114 self.assertEquals(conf.laa._name,"laa") |
|
115 |
|
116 def test_add_and_add_another_config_under(self): |
|
117 conf = api.Configuration("data/simple.confml") |
|
118 layer = api.Configuration("laa") |
|
119 conf._add(layer) |
|
120 conf.laa._add(api.Configuration("foo")) |
|
121 self.assertEquals(conf.laa.foo._name,"foo") |
|
122 |
|
123 def test_add_several_configurations(self): |
|
124 conf = api.Configuration("data/simple.confml") |
|
125 layer = api.Configuration("laa") |
|
126 conf._add(layer) |
|
127 conf._add(api.Configuration("foo")) |
|
128 conf._add(api.Configuration("faa")) |
|
129 self.assertEquals(conf.list_configurations()[0],"laa") |
|
130 self.assertEquals(conf.list_configurations()[1],"foo") |
|
131 self.assertEquals(conf.list_configurations()[2],"faa") |
|
132 |
|
133 def test_add_several_and_remove_one_layer(self): |
|
134 conf = api.Configuration("data/simple.confml") |
|
135 layer = api.Configuration("laa") |
|
136 conf._add(layer) |
|
137 conf._add(api.Configuration("foo")) |
|
138 conf._add(api.Configuration("faa")) |
|
139 conf._remove("foo") |
|
140 |
|
141 self.assertEquals(conf.list_configurations()[0],"laa") |
|
142 self.assertEquals(conf.list_configurations()[1],"faa") |
|
143 |
|
144 def test_add_several_and_remove_last_layer(self): |
|
145 conf = api.Configuration("data/simple.confml") |
|
146 layer = api.Configuration("laa") |
|
147 conf._add(layer) |
|
148 conf._add(api.Configuration("foo")) |
|
149 conf._add(api.Configuration("faa")) |
|
150 conf._remove("faa") |
|
151 self.assertEquals(conf.list_configurations()[0],"laa") |
|
152 self.assertEquals(conf.list_configurations()[1],"foo") |
|
153 |
|
154 def test_add_several_and_remove_all_configurations(self): |
|
155 conf = api.Configuration("data/simple.confml") |
|
156 layer = api.Configuration("laa") |
|
157 conf._add(layer) |
|
158 conf._add(api.Configuration("foo")) |
|
159 conf._add(api.Configuration("faa")) |
|
160 for layername in conf.list_configurations(): |
|
161 conf._remove(layername) |
|
162 |
|
163 self.assertTrue(len(conf.list_configurations())==0) |
|
164 |
|
165 def test_add_several_and_try_to_remove_not_existing(self): |
|
166 conf = api.Configuration("data/simple.confml") |
|
167 layer = api.Configuration("laa") |
|
168 conf._add(layer) |
|
169 conf._add(api.Configuration("foo")) |
|
170 conf._add(api.Configuration("faa")) |
|
171 try: |
|
172 conf._remove("notthere") |
|
173 self.fail("removing of nonexisting layer succeeds!") |
|
174 except exceptions.NotFound: |
|
175 pass |
|
176 |
|
177 def test_add_view_simple(self): |
|
178 conf = api.Configuration("data/simple.confml") |
|
179 conf.add_view("view1") |
|
180 view = conf.get_view("view1") |
|
181 self.assertEquals(view._list(),[]) |
|
182 |
|
183 def test_add_views_and_list_views(self): |
|
184 conf = api.Configuration("data/simple.confml") |
|
185 conf.add_view("view1") |
|
186 conf.add_view("view2") |
|
187 self.assertEquals(conf.list_views(),['view1','view2']) |
|
188 |
|
189 def test_add_views_and_remove_one(self): |
|
190 conf = api.Configuration("data/simple.confml") |
|
191 conf.add_view("view1") |
|
192 conf.add_view("view2") |
|
193 conf.add_view("view3") |
|
194 conf.remove_view('view2') |
|
195 self.assertEquals(conf.list_views(),['view1','view3']) |
|
196 |
|
197 def test_add_views_and_remove_invalid(self): |
|
198 conf = api.Configuration("data/simple.confml") |
|
199 conf.add_view("view1") |
|
200 conf.add_view("view2") |
|
201 conf.add_view("view3") |
|
202 try: |
|
203 conf.remove_view('invalid') |
|
204 self.fail('Removing invalid view succeeds!') |
|
205 except exceptions.NotFound: |
|
206 pass |
|
207 |
|
208 def test_add_views_and_remove_all(self): |
|
209 conf = api.Configuration("data/simple.confml") |
|
210 conf.add_view("view1") |
|
211 conf.add_view("view2") |
|
212 conf.add_view("view3") |
|
213 for view in conf.list_views(): |
|
214 conf.remove_view(view) |
|
215 self.assertEquals(conf.list_views(),[]) |
|
216 |
|
217 def test_add_view_with_data(self): |
|
218 conf = api.Configuration("data/simple.confml") |
|
219 conf.add_view("view1") |
|
220 view = conf.get_view("view1") |
|
221 view._add(api.Group("group1")) |
|
222 view._add(api.Group("group2")) |
|
223 view._add(api._FeatureProxy("feature1")) |
|
224 view.group1._add(api.Group("group21")) |
|
225 view.group1.group21._add(api._FeatureProxy("feature211")) |
|
226 view.group1.group21._add(api._FeatureProxy("feature212")) |
|
227 view.feature1._add(api._FeatureProxy("feature11")) |
|
228 |
|
229 self.assertEquals(sorted(view._list_traverse()), |
|
230 sorted(['group1', |
|
231 'group2', |
|
232 'feature1', |
|
233 'group1.group21', |
|
234 'group1.group21.feature211', |
|
235 'group1.group21.feature212', |
|
236 'feature1.feature11'])) |
|
237 |
|
238 def test_get_default_view(self): |
|
239 conf = api.Configuration("data/simple.confml") |
|
240 dview = conf.get_default_view() |
|
241 self.assertEquals(dview.ref,'_default_view') |
|
242 |
|
243 def test_get_default_view_and_data_to_it(self): |
|
244 conf = api.Configuration("data/simple.confml") |
|
245 view = conf.get_default_view() |
|
246 view._add(api.Group("group1")) |
|
247 view._add(api.Group("group2")) |
|
248 view._add(api._FeatureProxy("feature1")) |
|
249 view.group1._add(api.Group("group21")) |
|
250 view.group1.group21._add(api._FeatureProxy("feature211")) |
|
251 view.group1.group21._add(api._FeatureProxy("feature212")) |
|
252 view.feature1._add(api._FeatureProxy("feature11")) |
|
253 |
|
254 self.assertEquals(sorted(view._list_traverse()), |
|
255 sorted(['group1', |
|
256 'group2', |
|
257 'feature1', |
|
258 'group1.group21', |
|
259 'group1.group21.feature211', |
|
260 'group1.group21.feature212', |
|
261 'feature1.feature11'])) |
|
262 |
|
263 |
|
264 def test_add_feature_normal_configuration(self): |
|
265 conf = api.Configuration("simple.confml") |
|
266 conf.add_feature(api.Feature("feature1")) |
|
267 self.assertEquals(conf.list_all_features(),['feature1']) |
|
268 |
|
269 def test_add_feature_normal_and_get_default_view(self): |
|
270 conf = api.Configuration("simple.confml") |
|
271 conf.add_feature(api.Feature("feature1")) |
|
272 conf.add_feature(api.Feature("feature2")) |
|
273 conf.add_feature(api.Feature("feature11"),'feature1') |
|
274 view = conf.get_default_view() |
|
275 |
|
276 self.assertEquals(view.list_all_features(),['feature1', |
|
277 'feature1.feature11', |
|
278 'feature2',]) |
|
279 self.assertEquals(view.get_feature('feature1.feature11')._obj._parent,conf.feature1) |
|
280 |
|
281 def test_add_feature_hierarchy_and_get_default_view(self): |
|
282 root = api.Configuration("data/simple.confml") |
|
283 conf = api.Configuration("test/root.confml") |
|
284 root.add_configuration(conf) |
|
285 conf2 = api.Configuration("test2/root.confml",namespace="com.nokia") |
|
286 root.add_configuration(conf2) |
|
287 conf.add_feature(api.Feature("group1")) |
|
288 conf.add_feature(api.Feature("group2")) |
|
289 conf.add_feature(api.Feature("feature1")) |
|
290 conf.group1.add_feature(api.Feature("group21")) |
|
291 conf.group1.group21.add_feature(api.Feature("feature211")) |
|
292 conf.group1.group21.add_feature(api.Feature("feature212")) |
|
293 conf.feature1.add_feature(api.Feature("feature11")) |
|
294 conf2.add_feature(api.Feature("wlan")) |
|
295 conf2.add_feature(api.Feature("bluetooth")) |
|
296 self.assertEquals(conf.list_all_features(), |
|
297 ['group1', |
|
298 'group1.group21', |
|
299 'group1.group21.feature211', |
|
300 'group1.group21.feature212', |
|
301 'group2', |
|
302 'feature1', |
|
303 'feature1.feature11']) |
|
304 dview = conf.get_default_view() |
|
305 self.assertEquals(dview.list_features(), |
|
306 ['group1', |
|
307 'group2', |
|
308 'feature1']) |
|
309 |
|
310 self.assertEquals(dview.list_groups(),['com']) |
|
311 self.assertEquals(dview.list_all_features(), |
|
312 ['group1', |
|
313 'group1.group21', |
|
314 'group1.group21.feature211', |
|
315 'group1.group21.feature212', |
|
316 'group2', |
|
317 'feature1', |
|
318 'feature1.feature11', |
|
319 'com.nokia.wlan', |
|
320 'com.nokia.bluetooth']) |
|
321 |
|
322 def test_add_feature(self): |
|
323 conf = api.Configuration("simple.confml") |
|
324 conf.add_feature(api.Feature("feature1")) |
|
325 self.assertEquals(conf.list_features(),['feature1']) |
|
326 |
|
327 # def test_add_feature_namespace(self): |
|
328 # conf = api.Configuration("test","com.nokia") |
|
329 # conf.add_feature(api.Feature("feature1")) |
|
330 # self.assertEquals(conf.list_all_features(),['com.nokia.feature1']) |
|
331 # self.assertEquals(conf.feature1, conf.get_default_view().com.nokia.feature1._obj) |
|
332 |
|
333 def test_add_subconfiguration(self): |
|
334 conf = api.Configuration("test",namespace="com.nokia") |
|
335 conf.create_configuration("foo/root.confml") |
|
336 conf.create_configuration("platforms/s60.confml") |
|
337 self.assertEquals(conf.list_configurations(),['foo/root.confml', |
|
338 'platforms/s60.confml',]) |
|
339 |
|
340 def test_remove_configuration(self): |
|
341 conf = api.Configuration("test.confml",namespace="com.nokia") |
|
342 conf.create_configuration("foo/root.confml") |
|
343 self.assertEquals(conf.list_configurations(),['foo/root.confml']) |
|
344 conf.remove_configuration("foo/root.confml") |
|
345 self.assertEquals(conf.list_configurations(),[]) |
|
346 |
|
347 def test_get_configuration(self): |
|
348 conf = api.Configuration("test.confml",namespace="com.nokia") |
|
349 conf.create_configuration("foo/root.confml") |
|
350 self.assertEquals(conf.list_configurations(),['foo/root.confml']) |
|
351 foo = conf.get_configuration("foo/root.confml") |
|
352 self.assertEquals(foo.get_path(),"foo/root.confml") |
|
353 |
|
354 |
|
355 def test_remove_all(self): |
|
356 conf = api.Configuration("test",namespace="com.nokia") |
|
357 conf.create_configuration("foo/root.confml") |
|
358 conf.create_configuration("platforms/s60.confml") |
|
359 conf.create_configuration("platforms/customsw.confml") |
|
360 self.assertEquals(conf.list_configurations(),['foo/root.confml', |
|
361 'platforms/s60.confml', |
|
362 'platforms/customsw.confml']) |
|
363 for configref in conf.list_configurations(): |
|
364 conf.remove_configuration(configref) |
|
365 self.assertEquals(conf.list_configurations(),[]) |
|
366 |
|
367 |
|
368 def test_add_subconfiguration_and_access(self): |
|
369 conf = api.Configuration("data/simple.confml") |
|
370 conf.create_configuration("foo/layer1.confml") |
|
371 self.assertTrue(conf.foo__layer1_confml) |
|
372 |
|
373 # def test_add_subconfiguration_and_features(self): |
|
374 # conf = api.Configuration("test","com.nokia") |
|
375 # conf.create_configuration("foo/root.confml") |
|
376 # conf.create_configuration("fii/root.confml") |
|
377 # conf.foo_root.add_feature(api.Feature("feature1")) |
|
378 # conf.foo_root.add_feature(api.Feature("feature12"),"feature1") |
|
379 # conf.fii_root.add_feature(api.Feature("feature2")) |
|
380 # conf.fii_root.add_feature(api.Feature("feature21"),"feature2") |
|
381 # self.assertEquals(conf.list_all_features(),['com.nokia.feature1', |
|
382 # 'com.nokia.feature1.feature12', |
|
383 # 'com.nokia.feature2', |
|
384 # 'com.nokia.feature2.feature21', |
|
385 # ]) |
|
386 # self.assertEquals(conf.foo_root.feature1.get_ref(), |
|
387 # conf.get_default_view()._get('com.nokia.feature1').get_ref()) |
|
388 |
|
389 def test_add_configuration_with_features_to_root(self): |
|
390 root= api.Configuration("test",namespace="com.nokia") |
|
391 conf1 = api.Configuration("foo/foo.confml") |
|
392 conf1.add_feature(api.Feature("feature1")) |
|
393 conf1.add_feature(api.Feature("feature12"),"feature1") |
|
394 conf2 = api.Configuration("bar/bar.confml") |
|
395 conf2.add_feature(api.Feature("feature2")) |
|
396 conf2.add_feature(api.Feature("feature22"),"feature2") |
|
397 root.add_configuration(conf1) |
|
398 self.assertEquals(root.list_all_features(), |
|
399 ['feature1', |
|
400 'feature1.feature12']) |
|
401 root.add_configuration(conf2) |
|
402 self.assertEquals(root.list_all_features(), |
|
403 ['feature1', |
|
404 'feature1.feature12', |
|
405 'feature2', |
|
406 'feature2.feature22']) |
|
407 |
|
408 def test_add_configuration_to_other_conf_and_then_to_root(self): |
|
409 root= api.Configuration("test",namespace="com.nokia") |
|
410 conf1 = api.Configuration("foo/foo.confml") |
|
411 conf1.add_feature(api.Feature("feature1")) |
|
412 conf1.add_feature(api.Feature("feature12"),"feature1") |
|
413 conf2 = api.Configuration("bar/foo.confml") |
|
414 conf2.add_feature(api.Feature("feature2")) |
|
415 conf2.add_feature(api.Feature("feature22"),"feature2") |
|
416 conf2.add_configuration(conf1) |
|
417 self.assertEquals(conf2.list_all_features(), |
|
418 ['feature2', |
|
419 'feature2.feature22', |
|
420 'feature1', |
|
421 'feature1.feature12']) |
|
422 root.add_configuration(conf2) |
|
423 self.assertEquals(root.list_all_features(), |
|
424 ['feature2', |
|
425 'feature2.feature22', |
|
426 'feature1', |
|
427 'feature1.feature12']) |
|
428 |
|
429 def test_add_features_feature_hiararchy_and_then_to_configurations(self): |
|
430 conf1 = api.Configuration("foo/foo.confml") |
|
431 fea = api.Feature('feature1') |
|
432 fea2 = api.Feature('feature12') |
|
433 fea2.add_feature(api.Feature('feature121')) |
|
434 fea.add_feature(api.Feature('feature11')) |
|
435 fea.add_feature(fea2) |
|
436 self.assertEquals(fea.list_all_features(), |
|
437 ['feature11', |
|
438 'feature12', |
|
439 'feature12.feature121']) |
|
440 conf1.add_feature(fea) |
|
441 self.assertEquals(conf1.list_all_features(), |
|
442 ['feature1', |
|
443 'feature1.feature11', |
|
444 'feature1.feature12', |
|
445 'feature1.feature12.feature121']) |
|
446 |
|
447 |
|
448 def test_add_features_and_remove_one(self): |
|
449 conf1 = api.Configuration("foo/foo.confml") |
|
450 fea = api.Feature('feature1') |
|
451 fea2 = api.Feature('feature12') |
|
452 fea2.add_feature(api.Feature('feature121')) |
|
453 fea.add_feature(api.Feature('feature11')) |
|
454 fea.add_feature(fea2) |
|
455 conf1.add_feature(fea) |
|
456 conf1.remove_feature('feature1.feature12') |
|
457 self.assertEquals(conf1.list_all_features(), |
|
458 ['feature1', |
|
459 'feature1.feature11']) |
|
460 fea.remove_feature('feature11') |
|
461 self.assertEquals(conf1.list_all_features(), |
|
462 ['feature1']) |
|
463 |
|
464 def test_add_features_and_remove_all(self): |
|
465 conf = api.Configuration("foo/foo.confml") |
|
466 fea = api.Feature('feature1') |
|
467 conf.add_feature(fea) |
|
468 conf.add_feature(api.Feature('feature2')) |
|
469 conf.add_feature(api.Feature('feature3')) |
|
470 conf.add_feature(api.Feature('feature4')) |
|
471 for fearef in conf.list_features(): |
|
472 conf.remove_feature(fearef) |
|
473 self.assertEquals(conf.list_all_features(), []) |
|
474 |
|
475 def test_add_features_and_create_view(self): |
|
476 |
|
477 conf = api.Configuration("foo/foo.confml") |
|
478 conf.add_feature(api.Feature('feature1')) |
|
479 conf.add_feature(api.Feature('feature2')) |
|
480 conf.add_feature(api.Feature('feature3')) |
|
481 conf.add_feature(api.Feature('feature4')) |
|
482 conf.add_feature(api.Feature('feature11'),'feature1') |
|
483 conf.add_feature(api.Feature('feature12'),'feature1') |
|
484 |
|
485 conf.add_view("rootfeas") |
|
486 view = conf.get_view('rootfeas') |
|
487 for fearef in conf.list_features(): |
|
488 fea = conf.get_feature(fearef) |
|
489 view.add_feature(fea) |
|
490 self.assertEquals(view.list_all_features(), ['feature1', |
|
491 'feature2', |
|
492 'feature3', |
|
493 'feature4']) |
|
494 view.remove_feature('feature2') |
|
495 self.assertEquals(view.list_all_features(), ['feature1', |
|
496 'feature3', |
|
497 'feature4']) |
|
498 |
|
499 def test_add_features_and_create_view_with_links(self): |
|
500 conf = api.Configuration("foo/foo.confml") |
|
501 conf.add_feature(api.Feature('feature1')) |
|
502 conf.add_feature(api.Feature('feature2')) |
|
503 conf.add_feature(api.Feature('feature3')) |
|
504 conf.add_feature(api.Feature('feature4')) |
|
505 conf.add_feature(api.Feature('feature11'),'feature1') |
|
506 conf.add_feature(api.Feature('feature12'),'feature1') |
|
507 conf.add_view('fea1') |
|
508 view1 = conf.get_view('fea1') |
|
509 view1.add_group('thegruppe1') |
|
510 view1.get_group('thegruppe1').add(api.FeatureLink('feature1.feature11')) |
|
511 view1.add(api.FeatureLink('feature1.*')) |
|
512 view1.populate() |
|
513 self.assertEquals(view1.list_all_features(),['thegruppe1.feature11','feature11','feature12']) |
|
514 fpr = view1.get_feature('thegruppe1.feature11') |
|
515 self.assertEquals(fpr._obj.fqr,conf.get_default_view().get_feature('feature1.feature11').fqr) |
|
516 self.assertEquals(view1.list_all_features(), ['thegruppe1.feature11','feature11','feature12']) |
|
517 |
|
518 def test_add_features_and_create_all_view_with_links(self): |
|
519 conf = api.Configuration("foo/foo.confml") |
|
520 conf.add_feature(api.Feature('feature1')) |
|
521 conf.add_feature(api.Feature('feature2')) |
|
522 conf.add_feature(api.Feature('feature3')) |
|
523 conf.add_feature(api.Feature('feature4')) |
|
524 conf.add_feature(api.Feature('feature11'),'feature1') |
|
525 conf.add_feature(api.Feature('feature12'),'feature1') |
|
526 conf.add_view("all") |
|
527 view1 = conf.get_view('all') |
|
528 view1.add(api.FeatureLink('**')) |
|
529 view1.populate() |
|
530 self.assertEquals(view1.list_all_features(),['feature1', 'feature11', 'feature12', 'feature2', 'feature3', 'feature4']) |
|
531 fpr = view1.get_feature('feature11') |
|
532 self.assertEquals(fpr._obj.fqr,conf.get_default_view().get_feature('feature1.feature11').fqr) |
|
533 |
|
534 def test_add_a_configuration_and_remove_it(self): |
|
535 conf = api.Configuration("simple.confml") |
|
536 conf.add_configuration(api.Configuration("confml/data.confml")) |
|
537 self.assertEquals(conf.list_configurations(),['confml/data.confml']) |
|
538 conf.remove_configuration("confml/data.confml") |
|
539 self.assertEquals(len(conf.list_configurations()),0) |
|
540 |
|
541 def test_add_a_include_and_remove_it(self): |
|
542 conf = api.Configuration("simple.confml") |
|
543 conf.include_configuration("confml/data.confml") |
|
544 self.assertEquals(conf.list_configurations(),['confml/data.confml']) |
|
545 conf.remove_configuration("confml/data.confml") |
|
546 self.assertEquals(len(conf.list_configurations()),0) |
|
547 |
|
548 def test_add_a_include_with_dots_in_path_and_remove_it(self): |
|
549 conf = api.Configuration("simple.confml") |
|
550 conf.include_configuration("test/foo.bar/data.confml") |
|
551 self.assertEquals(conf.list_configurations(),['test/foo.bar/data.confml']) |
|
552 conf.remove_configuration("test/foo.bar/data.confml") |
|
553 self.assertEquals(len(conf.list_configurations()),0) |
|
554 |
|
555 def test_add_a_include_with_dots_and_remove_it(self): |
|
556 conf = api.Configuration("simple.confml") |
|
557 conf.include_configuration("../foo/data.confml") |
|
558 self.assertEquals(conf.list_configurations(),['../foo/data.confml']) |
|
559 conf.remove_configuration("../foo/data.confml") |
|
560 self.assertEquals(len(conf.list_configurations()),0) |
|
561 |
|
562 class TestConfigurationData(unittest.TestCase): |
|
563 def test_add_features_and_add_data_via_default_view(self): |
|
564 conf = api.Configuration("foo/foo.confml") |
|
565 conf.add_feature(api.Feature('feature1')) |
|
566 conf.add_feature(api.Feature('feature2')) |
|
567 conf.add_feature(api.Feature('feature3')) |
|
568 conf.add_feature(api.Feature('feature4')) |
|
569 conf.add_feature(api.Feature('feature12'),'feature1') |
|
570 dview = conf.get_default_view() |
|
571 dview.feature1._add_data(api.Data(ref="feature1", value=123)) |
|
572 dview.feature2._add_data(api.Data(ref="feature2", value=123)) |
|
573 dview.feature3._add_data(api.Data(ref="feature3", value=123)) |
|
574 dview.feature1.feature12._add_data(api.Data(ref="feature12", value=123)) |
|
575 dview.feature1._add_data(api.Data(ref="feature1", value=123)) |
|
576 self.assertEquals(dview.feature1.get_value(), 123) |
|
577 dview.feature1._add_data(api.Data(ref="feature1", value=111)) |
|
578 self.assertEquals(dview.feature1.get_value(), 111) |
|
579 |
|
580 def test_add_data_to_configuration(self): |
|
581 conf = api.Configuration("foo/foo.confml") |
|
582 conf.add_data(api.Data(ref='feature1', value=123)) |
|
583 self.assertEquals(conf.get_data('feature1').get_value(),123) |
|
584 conf.add_data(api.Data(fqr='feature1.feature12', value="test")) |
|
585 self.assertEquals(conf.get_data('feature1.feature12').get_value(),"test") |
|
586 self.assertEquals(conf.data.feature1.feature12.get_value(),"test") |
|
587 conf.remove_data('feature1.feature12') |
|
588 self.assertEquals(conf.list_datas(), ['feature1']) |
|
589 |
|
590 def test_set_data_to_configuration(self): |
|
591 conf = api.Configuration("foo/foo.confml") |
|
592 conf.add_data(api.Data(fqr='feature1', value=123)) |
|
593 self.assertEquals(conf.get_data('feature1').get_value(),123) |
|
594 conf.add_data(api.Data(fqr='feature1.feature12', value="test")) |
|
595 self.assertEquals(conf.get_data('feature1.feature12').get_value(),"test") |
|
596 self.assertEquals(conf.data.feature1.feature12.get_value(),"test") |
|
597 |
|
598 def test_add_features_and_add_data_via_features(self): |
|
599 conf = api.Configuration("foo/foo.confml") |
|
600 conf.add_feature(api.Feature('feature1')) |
|
601 conf.add_feature(api.Feature('feature2')) |
|
602 conf.add_feature(api.Feature('feature3')) |
|
603 conf.add_feature(api.Feature('feature4')) |
|
604 conf.add_feature(api.Feature('feature12'),'feature1') |
|
605 conf.feature1.set_value(123) |
|
606 conf.feature1.feature12.set_value("test") |
|
607 self.assertEquals(conf.feature1.get_value(),123) |
|
608 self.assertEquals(conf.feature1.feature12.get_value(),"test") |
|
609 |
|
610 def test_create_layers_add_features_and_add_data_via_features(self): |
|
611 conf = api.Configuration("foo/foo.confml") |
|
612 conf.add_feature(api.Feature('feature1')) |
|
613 conf.add_feature(api.Feature('feature2')) |
|
614 conf.add_feature(api.Feature('feature3')) |
|
615 conf.add_feature(api.Feature('feature4')) |
|
616 conf.add_feature(api.Feature('feature12'),'feature1') |
|
617 conf.feature1.set_value(123) |
|
618 self.assertEquals(conf.feature1.get_value(),123) |
|
619 conf.create_configuration("layer1.confml") |
|
620 conf.feature1.feature12.set_value("test") |
|
621 self.assertEquals(conf.feature1.get_data().find_parent(type=api.Configuration),conf) |
|
622 self.assertEquals(conf.feature1.feature12.get_value(),"test") |
|
623 |
|
624 conf.feature1.set_value(321) |
|
625 conf.create_configuration("layer2.confml") |
|
626 self.assertEquals(conf.layer2_confml.list_datas(), []) |
|
627 |
|
628 self.assertEquals(conf.feature1.get_value(),321) |
|
629 self.assertEquals(conf.feature1.get_data().find_parent(type=api.Configuration).get_path(),conf.get_configuration("layer1.confml").get_path()) |
|
630 self.assertEquals(conf.layer1_confml.list_all_datas(), ['feature1','feature1.feature12']) |
|
631 self.assertEquals([data.get_value() for data in conf.layer1_confml.get_all_datas()], [321,'test']) |
|
632 self.assertEquals(conf.list_datas(), ['feature1']) |
|
633 self.assertEquals([data.find_parent(type=api.Configuration).get_path() for data in conf.get_all_datas()], |
|
634 ['foo/foo.confml', |
|
635 'layer1.confml', |
|
636 'layer1.confml',]) |
|
637 |
|
638 def test_create_layers_add_featuresequence_and_add_data_via_features(self): |
|
639 conf = api.Configuration("foo/foo.confml") |
|
640 conf.add_feature(api.FeatureSequence('feature1')) |
|
641 conf.add_feature(api.Feature('child1'),'feature1') |
|
642 conf.add_feature(api.Feature('child2'),'feature1') |
|
643 conf.add_feature(api.Feature('child3'),'feature1') |
|
644 conf.feature1.add_sequence() |
|
645 conf.feature1.get_data()[0][0].set_value('test1') |
|
646 conf.feature1.get_data()[0][1].set_value('test2') |
|
647 conf.feature1.get_data()[0][2].set_value('test3') |
|
648 conf.feature1.add_sequence(['foo1','foo2','foo3']) |
|
649 self.assertEquals(conf.feature1.get_data()[1][0].get_value(),'foo1') |
|
650 self.assertEquals(conf.feature1.get_data()[1][1].get_value(),'foo2') |
|
651 self.assertEquals(conf.feature1.get_data()[1][2].get_value(),'foo3') |
|
652 self.assertEquals(conf.feature1.get_value(), |
|
653 [['test1','test2','test3'], |
|
654 ['foo1','foo2','foo3']]) |
|
655 self.assertEquals(conf.list_all_datas(),['feature1', 'feature1.child1', 'feature1.child2', 'feature1.child3', 'feature1', 'feature1.child1', 'feature1.child2', 'feature1.child3']) |
|
656 |
|
657 def test_create_featuresequence_and_get_empty_data(self): |
|
658 conf = api.Configuration("foo/foo.confml") |
|
659 conf.add_feature(api.FeatureSequence('feature1')) |
|
660 conf.add_feature(api.Feature('child1'),'feature1') |
|
661 conf.add_feature(api.Feature('child2'),'feature1') |
|
662 conf.add_feature(api.Feature('child3'),'feature1') |
|
663 self.assertEquals(conf.get_feature('feature1').get_data(),[]) |
|
664 self.assertEquals(conf.get_feature('feature1').get_value(),[]) |
|
665 |
|
666 def test_create_featuresequence_and_set_template(self): |
|
667 conf = api.Configuration("foo/foo.confml") |
|
668 conf.add_feature(api.FeatureSequence('feature1')) |
|
669 conf.add_feature(api.Feature('child1'),'feature1') |
|
670 conf.add_feature(api.Feature('child2'),'feature1') |
|
671 conf.add_feature(api.Feature('child3'),'feature1') |
|
672 fea = conf.get_feature('feature1') |
|
673 fea.set_template(['test1','test2','test3']) |
|
674 self.assertEquals(fea.get_template(),['test1', 'test2', 'test3']) |
|
675 fea.set_template(['test1','test3']) |
|
676 self.assertEquals(fea.get_template(),['test1','test3','test3']) |
|
677 try: |
|
678 fea.set_template(['test1',None,'test3',None]) |
|
679 self.fail("Able to add more data then allowed") |
|
680 except IndexError: |
|
681 pass |
|
682 |
|
683 def test_create_features_with_rfs_data(self): |
|
684 conf = api.Configuration("foo/foo.confml") |
|
685 conf.add_feature(api.Feature('feature1')) |
|
686 conf.add_feature(api.Feature('child1'),'feature1') |
|
687 conf.add_feature(api.Feature('child2'),'feature1') |
|
688 conf.add_feature(api.Feature('child3'),'feature1') |
|
689 |
|
690 conf.add_data(api.Data(fqr='feature1.child1',attr='rfs',value='true')) |
|
691 conf.add_data(api.Data(fqr='feature1.child2',attr='rfs',value='false')) |
|
692 dview = conf.get_default_view() |
|
693 self.assertEquals(dview.get_feature('feature1.child1').get_value(), None) |
|
694 self.assertEquals(dview.get_feature('feature1.child1').get_value('rfs'), 'true') |
|
695 self.assertEquals(dview.get_feature('feature1.child2').get_value('rfs'), 'false') |
|
696 |
|
697 class TestConfigurationDictStoring(unittest.TestCase): |
|
698 |
|
699 def test_dumps_simple(self): |
|
700 root = api.Configuration("root",namespace="com.nokia") |
|
701 conf = root.create_configuration("test.confml") |
|
702 dumped = persistentdictionary.DictWriter().dumps(conf) |
|
703 dict =dumped['Configuration']['dict'] |
|
704 self.assertEquals(dict['path'],'test.confml') |
|
705 self.assertEquals(dict['namespace'],'com.nokia') |
|
706 |
|
707 def test_dumps_add_features(self): |
|
708 root = api.Configuration("root",namespace="com.nokia") |
|
709 conf = root.create_configuration("test.confml") |
|
710 conf.add_feature(api.Feature("feature1")) |
|
711 conf.add_feature(api.Feature("feature2")) |
|
712 dumped = persistentdictionary.DictWriter().dumps(conf) |
|
713 dict =dumped['Configuration']['dict'] |
|
714 self.assertEquals(dict['path'],'test.confml') |
|
715 self.assertEquals(dict['namespace'],'com.nokia') |
|
716 self.assertEquals(dumped['Configuration']['children'], |
|
717 [{'Feature': {'dict': {'name': 'feature1', 'ref': 'feature1'}}}, |
|
718 {'Feature': {'dict': {'name': 'feature2', 'ref': 'feature2'}}}] |
|
719 ) |
|
720 |
|
721 def test_dumps_root_configuration(self): |
|
722 root = api.Configuration("root",namespace="com.nokia") |
|
723 conf = root.create_configuration("test.confml") |
|
724 conf = root.create_configuration("foo/root.confml") |
|
725 conf.add_feature(api.Feature("feature1")) |
|
726 conf.add_feature(api.Feature("feature2")) |
|
727 conf.feature1.add_feature(api.Feature("feature11")) |
|
728 conf.feature1.add_feature(api.Feature("feature12")) |
|
729 dumped = persistentdictionary.DictWriter().dumps(root) |
|
730 dict =dumped['Configuration']['dict'] |
|
731 self.assertEquals(dict['ref'],'root') |
|
732 self.assertEquals(dict['namespace'],'com.nokia') |
|
733 |
|
734 def test_dumps_feature_hierarchy(self): |
|
735 root = api.Configuration("root",namespace="com.nokia") |
|
736 conf = root.create_configuration("test.confml") |
|
737 conf.add_feature(api.Feature("feature1")) |
|
738 conf.add_feature(api.Feature("feature2")) |
|
739 conf.feature1.add_feature(api.Feature("feature11")) |
|
740 conf.feature1.add_feature(api.Feature("feature12")) |
|
741 dumped = persistentdictionary.DictWriter().dumps(conf) |
|
742 dict =dumped['Configuration']['dict'] |
|
743 self.assertEquals(dict['path'],'test.confml') |
|
744 self.assertEquals(dict['ref'],'test_confml') |
|
745 self.assertEquals(dict['namespace'],'com.nokia') |
|
746 self.assertEquals(dumped['Configuration']['children'], |
|
747 [{'Feature': {'dict': {'name': 'feature1', 'ref': 'feature1'}, |
|
748 'children': [ |
|
749 {'Feature': {'dict': {'name': 'feature11', 'ref': 'feature11'}}}, |
|
750 {'Feature': {'dict': {'name': 'feature12', 'ref': 'feature12'}}}]}}, |
|
751 {'Feature': {'dict': {'name': 'feature2', 'ref': 'feature2'}}} |
|
752 ]) |
|
753 |
|
754 def test_loads(self): |
|
755 conf = persistentdictionary.DictReader().loads({'Configuration': {'dict' : {'namespace':'test','ref':'test.confml'}}} ) |
|
756 self.assertTrue(isinstance(conf,api.Configuration)) |
|
757 self.assertEquals(conf.namespace,'test') |
|
758 self.assertEquals(conf.get_ref(),'test.confml') |
|
759 |
|
760 def test_loads_with_features(self): |
|
761 root = api.Configuration("root",namespace="com.nokia") |
|
762 conf = persistentdictionary.DictReader().loads({ |
|
763 'Configuration': {'dict' : {'namespace':'test','ref':'test.confml'}, |
|
764 'children': [{'Feature': {'dict': {'ref': 'feature1'}, |
|
765 'children': [ |
|
766 {'Feature': {'dict': {'ref': 'feature11'}}}, |
|
767 {'Feature': {'dict': {'ref': 'feature12'}}}] |
|
768 } |
|
769 }, |
|
770 {'Feature': {'dict': {'ref': 'feature2'}}}]}} ) |
|
771 |
|
772 self.assertEquals(conf.namespace,'test') |
|
773 self.assertEquals(conf.ref,'test.confml') |
|
774 root.add_configuration(conf) |
|
775 self.assertEquals(root.list_all_features(),['test.feature1', |
|
776 'test.feature1.feature11', |
|
777 'test.feature1.feature12', |
|
778 'test.feature2']) |
|
779 |
|
780 |
|
781 def test_dumps_and_loads(self): |
|
782 conf = api.Configuration("test.confml") |
|
783 conf.add_feature(api.Feature("feature1")) |
|
784 conf.add_feature(api.Feature("feature2")) |
|
785 conf.feature1.add_feature(api.Feature("feature11")) |
|
786 conf.feature1.add_feature(api.Feature("feature12")) |
|
787 dumped = persistentdictionary.DictWriter().dumps(conf) |
|
788 |
|
789 conf2 = persistentdictionary.DictReader().loads(dumped) |
|
790 self.assertEquals(conf.list_all_features(), |
|
791 conf2.list_all_features()) |
|
792 |
|
793 def test_dumps_and_loads_configuration_hierarchy(self): |
|
794 root = api.Configuration("root.confml") |
|
795 root.add_configuration(api.Configuration("layer1.confml")) |
|
796 layer = api.Configuration("foo/layer2.confml") |
|
797 conf = api.Configuration("foo/test.confml") |
|
798 conf.add_feature(api.Feature("feature1")) |
|
799 conf.add_feature(api.Feature("feature2")) |
|
800 conf.feature1.add_feature(api.Feature("feature11")) |
|
801 conf.feature1.add_feature(api.Feature("feature12")) |
|
802 layer.add_configuration(conf) |
|
803 root.add_configuration(layer) |
|
804 dumped = persistentdictionary.DictWriter().dumps(root) |
|
805 |
|
806 root2= persistentdictionary.DictReader().loads(dumped) |
|
807 self.assertEquals(root.list_all_features(), |
|
808 root2.list_all_features()) |
|
809 |
|
810 def test_dumps_and_loads_configuration_hierarchy_with_data(self): |
|
811 root = api.Configuration("root.confml") |
|
812 layer = api.Configuration("foo/layer1.confml") |
|
813 conf = api.Configuration("foo/test.confml") |
|
814 conf.add_feature(api.Feature("feature1")) |
|
815 conf.add_feature(api.Feature("feature2")) |
|
816 conf.feature1.add_feature(api.Feature("feature11")) |
|
817 conf.feature1.add_feature(api.Feature("feature12")) |
|
818 conf.feature1.set_value(1) |
|
819 conf.feature2.set_value(2) |
|
820 layer.add_configuration(conf) |
|
821 root.add_configuration(layer) |
|
822 root.add_configuration(api.Configuration("layer2.confml")) |
|
823 root.get_default_view().feature1.feature11.set_value("testing11") |
|
824 root.get_default_view().feature1.set_value("test1") |
|
825 dumped = persistentdictionary.DictWriter().dumps(root) |
|
826 root2= persistentdictionary.DictReader().loads(dumped) |
|
827 self.assertEquals(root.list_all_features(), |
|
828 root2.list_all_features()) |
|
829 self.assertEquals(root2.get_default_view().feature1.get_value(), "test1") |
|
830 self.assertEquals(root2.get_default_view().feature2.get_value(), 2) |
|
831 self.assertEquals(root2.get_default_view().feature1.feature11.get_value(), "testing11") |
|
832 |
|
833 self.assertEquals([data.find_parent(type=api.Configuration).get_path() for data in root2.get_all_datas()], |
|
834 ['foo/test.confml', 'foo/test.confml', 'layer2.confml','layer2.confml']) |
|
835 |
|
836 def test_access_via_configuration_proxy(self): |
|
837 conf = api.Configuration("root.confml") |
|
838 conf.add_feature(api.Feature("feature1")) |
|
839 proxy = api.ConfigurationProxy("root.confml") |
|
840 proxy.set('_obj',conf) |
|
841 self.assertEquals(proxy.get_ref(), 'root_confml') |
|
842 self.assertEquals(proxy.get_path(), 'root.confml') |
|
843 self.assertEquals(conf.feature1.get_ref(), 'feature1') |
|
844 self.assertEquals(proxy.feature1.get_ref(), 'feature1') |
|
845 |
|
846 |
|
847 if __name__ == '__main__': |
|
848 unittest.main() |
|
849 |
|
850 """ |
|
851 {'Configuration': {'dict': {'path': 'root.confml', 'ref': 'root', 'namespace': '', 'desc': ''}, 'children': [{'Configuration': {'dict': {'path': 'foo/layer1.confml', 'ref': 'foo_layer1', 'namespace': '', 'desc': ''}, 'children': [{'Configuration': {'dict': {'path': 'foo/test.confml', 'ref': 'foo_test', 'namespace': '', 'desc': ''}, 'children': [{'Feature': {'dict': {'ref': 'feature1'}, 'children': [{'Feature': {'dict': {'ref': 'feature11'}}}, {'Feature': {'dict': {'ref': 'feature12'}}}]}}, {'Feature': {'dict': {'ref': 'feature2'}}}, {'DataContainer': {'dict': {'ref': 'data'}, 'children': [{'Data': {'dict': {'ref': 'feature1', 'value': 1}}}, {'Data': {'dict': {'ref': 'feature2', 'value': 2}}}]}}]}}]}}, {'Configuration': {'dict': {'path': 'layer2.confml', 'ref': 'layer2', 'namespace': '', 'desc': ''}}}]}} |
|
852 """ |