136 cont = container.ObjectProxy("test string") |
135 cont = container.ObjectProxy("test string") |
137 self.assertTrue(cont) |
136 self.assertTrue(cont) |
138 self.assertEquals(cont.startswith("test"),True) |
137 self.assertEquals(cont.startswith("test"),True) |
139 |
138 |
140 |
139 |
141 def graph(obj): |
140 def graph(obj, filters=None): |
142 if obj._parent: |
141 if obj._parent: |
143 return ["%s -> %s" % (obj._parent._name, obj._name)] |
142 return ["%s -> %s" % (obj._parent._name, obj._name)] |
144 return [] |
143 return [] |
145 |
144 |
146 class TestObjectContainer(unittest.TestCase): |
145 class TestObjectContainer(unittest.TestCase): |
149 self.assertTrue(cont) |
148 self.assertTrue(cont) |
150 |
149 |
151 def test_add_incorrect_type(self): |
150 def test_add_incorrect_type(self): |
152 cont = container.ObjectContainer() |
151 cont = container.ObjectContainer() |
153 try: |
152 try: |
154 cont._add(container.ObjectProxy()) |
153 cont._add(container.DataContainer()) |
155 self.fail("Adding incorrect class type to container succeeds?") |
154 self.fail("Adding incorrect class type to container succeeds?") |
156 except exceptions.IncorrectClassError,e: |
155 except exceptions.IncorrectClassError,e: |
157 pass |
156 pass |
158 |
157 |
159 |
158 |
162 obj = container.ObjectContainer("test") |
161 obj = container.ObjectContainer("test") |
163 cont._add(obj) |
162 cont._add(obj) |
164 cont._add(container.ObjectContainer("foo")) |
163 cont._add(container.ObjectContainer("foo")) |
165 self.assertEquals(cont._list(),['test','foo']) |
164 self.assertEquals(cont._list(),['test','foo']) |
166 self.assertEquals(cont.test,obj) |
165 self.assertEquals(cont.test,obj) |
|
166 |
|
167 def test_add_children_from_list_with_different_policies(self): |
|
168 def check(policy, expected): |
|
169 cont = container.ObjectContainer("root") |
|
170 cont._add(container.ObjectContainer("test1")) |
|
171 cont._add(container.ObjectContainer("foo")) |
|
172 cont._add(container.ObjectContainer("test2")) |
|
173 |
|
174 objs = [container.ObjectContainer("foo"), |
|
175 container.ObjectContainer("foo"), |
|
176 container.ObjectContainer("foo")] |
|
177 for i, obj in enumerate(objs): obj.test_attr = i |
|
178 |
|
179 cont._add(objs, policy) |
|
180 |
|
181 actual = [(o._name, getattr(o, 'test_attr', None)) for o in cont._objects()] |
|
182 self.assertEquals(actual, expected) |
|
183 |
|
184 check(container.REPLACE, |
|
185 [('test1', None), |
|
186 ('foo', 0), |
|
187 ('foo', 1), |
|
188 ('foo', 2), |
|
189 ('test2', None),]) |
|
190 |
|
191 check(container.APPEND, |
|
192 [('test1', None), |
|
193 ('foo', None), |
|
194 ('foo', 0), |
|
195 ('foo', 1), |
|
196 ('foo', 2), |
|
197 ('test2', None),]) |
|
198 |
|
199 check(container.PREPEND, |
|
200 [('test1', None), |
|
201 ('foo', 0), |
|
202 ('foo', 1), |
|
203 ('foo', 2), |
|
204 ('foo', None), |
|
205 ('test2', None),]) |
|
206 |
167 |
207 |
168 def test_add_internal_child(self): |
208 def test_add_internal_child(self): |
169 cont = container.ObjectContainer("root") |
209 cont = container.ObjectContainer("root") |
170 obj = container.ObjectContainer("?test") |
210 obj = container.ObjectContainer("?test") |
171 cont._add(obj) |
211 cont._add(obj) |
172 cont._add(container.ObjectContainer("foo")) |
212 cont._add(container.ObjectContainer("foo")) |
173 self.assertEquals(cont._list(),['foo']) |
213 cont._add(container.ObjectContainer("bar")) |
|
214 self.assertEquals(cont._list(),['foo', 'bar']) |
174 self.assertEquals(cont._get('?test'),obj) |
215 self.assertEquals(cont._get('?test'),obj) |
|
216 self.assertEquals(cont._list(),['foo', 'bar']) |
|
217 cont._remove('?test') |
|
218 self.assertRaises(exceptions.NotFound,cont._get,'?test') |
|
219 self.assertEquals(cont._list(),['foo','bar']) |
175 |
220 |
176 |
221 |
177 def test_add_child_to_path(self): |
222 def test_add_child_to_path(self): |
178 cont = container.ObjectContainer("test") |
223 cont = container.ObjectContainer("test") |
179 obj = container.ObjectContainer("test") |
224 obj = container.ObjectContainer("test") |
239 cont._add(com, policy=container.ERROR) |
284 cont._add(com, policy=container.ERROR) |
240 self.fail("Adding an existing object succeeds with ERROR policy") |
285 self.fail("Adding an existing object succeeds with ERROR policy") |
241 except exceptions.AlreadyExists, e: |
286 except exceptions.AlreadyExists, e: |
242 pass |
287 pass |
243 |
288 |
|
289 def test__traverse_depth(self): |
|
290 cont = container.ObjectContainer("cont") |
|
291 obj1 = container.ObjectContainer("test1") |
|
292 obj2 = container.ObjectContainer("test2") |
|
293 cont._add_to_path("com.nokia", obj1) |
|
294 cont._add_to_path("com.nokia", obj2) |
|
295 self.assertEquals(len(cont._traverse()), 4) |
|
296 self.assertEquals(len(cont._traverse(depth=1)), 1) |
|
297 self.assertEquals(len(cont._traverse(depth=2)), 2) |
|
298 self.assertEquals(len(cont._traverse(depth=3)), 4) |
|
299 |
244 def test_add_child_to_existing_path_append(self): |
300 def test_add_child_to_existing_path_append(self): |
245 cont = container.ObjectContainer("test") |
301 cont = container.ObjectContainer("test") |
246 obj = container.ObjectContainer("test") |
302 obj = container.ObjectContainer("test") |
247 cont._add_to_path("com.nokia", obj) |
303 cont._add_to_path("com.nokia", obj) |
248 cont._add_to_path("com.nokia", container.ObjectContainer("test"), container.APPEND) |
304 cont._add_to_path("com.nokia", container.ObjectContainer("test"), container.APPEND) |
510 cont._add_to_path("com", container.ObjectProxyContainer(TestC(),"bar")) |
566 cont._add_to_path("com", container.ObjectProxyContainer(TestC(),"bar")) |
511 cont.com._list() |
567 cont.com._list() |
512 ret = cont._traverse(name="^t.*$") |
568 ret = cont._traverse(name="^t.*$") |
513 self.assertEquals(len(ret),1) |
569 self.assertEquals(len(ret),1) |
514 self.assertEquals(ret[0]._path(),"default.com.nokia.test") |
570 self.assertEquals(ret[0]._path(),"default.com.nokia.test") |
|
571 # ret = cont._traverse(type=TestC) |
|
572 # self.assertEquals(len(ret),1) |
|
573 |
515 |
574 |
516 def test_add_children_and_traverse_filter_name_many(self): |
575 def test_add_children_and_traverse_filter_name_many(self): |
517 cont = container.ObjectProxyContainer(None,"default") |
576 cont = container.ObjectProxyContainer(None,"default") |
518 cont._add_to_path("com.nokia", container.ObjectProxyContainer(TestC(),"test")) |
577 cont._add_to_path("com.nokia", container.ObjectProxyContainer(TestC(),"test")) |
519 cont._add_to_path("com.nokia", container.ObjectProxyContainer(TestC(),"foo")) |
578 cont._add_to_path("com.nokia", container.ObjectProxyContainer(TestC(),"foo")) |
567 proxy =None |
626 proxy =None |
568 proxy2 = container.LoadProxy("unload.pk", container.LoadInterface()) |
627 proxy2 = container.LoadProxy("unload.pk", container.LoadInterface()) |
569 self.assertEquals(proxy2.list_resources(''),['test1.txt', 'test2.txt', 'test3.txt']) |
628 self.assertEquals(proxy2.list_resources(''),['test1.txt', 'test2.txt', 'test3.txt']) |
570 os.unlink("unload.pk") |
629 os.unlink("unload.pk") |
571 |
630 |
|
631 class TestLoadContainer(unittest.TestCase): |
|
632 def test_create_load_container(self): |
|
633 cont = container.LoadContainer(importpk, container.LoadInterface()) |
|
634 cont._load() |
|
635 self.assertEquals(len(cont._objects()), 1) |
|
636 |
|
637 def test_create_load_link__unload(self): |
|
638 cont = container.LoadContainer(importpk, container.LoadInterface()) |
|
639 cont._load() |
|
640 self.assertEquals(len(cont._objects()), 1) |
|
641 cont._unload() |
|
642 self.assertEquals(cont._container, None) |
|
643 |
|
644 def test_create_load_link__get_objects(self): |
|
645 cont = container.LoadContainer(importpk, container.LoadInterface()) |
|
646 self.assertEquals(len(cont._objects()), 1) |
|
647 |
|
648 def test_create_load_link__traverse(self): |
|
649 cont = container.LoadContainer(importpk, container.LoadInterface()) |
|
650 self.assertEquals(len(cont._traverse()), 4) |
|
651 print cont._traverse() |
|
652 |
|
653 def test_create_load_link__list(self): |
|
654 cont = container.LoadContainer(importpk, container.LoadInterface()) |
|
655 self.assertEquals(os.path.basename(cont._list()[0]), 'Import_pk') |
|
656 |
|
657 class TestLoadContainerWrite(unittest.TestCase): |
|
658 def test_create_load_container__add_data(self): |
|
659 cont = container.LoadContainer(importpk) |
|
660 cont._add(container.ObjectContainer("Test")) |
|
661 self.assertEquals(len(cont._objects()), 1) |
|
662 |
|
663 def test_create_load_container__add_data_unload(self): |
|
664 cont = container.LoadContainer(importpk) |
|
665 cont._add(container.ObjectContainer("Test")) |
|
666 self.assertEquals(len(cont._objects()), 1) |
|
667 cont._unload() |
|
668 |
|
669 class TestLoadLink(unittest.TestCase): |
|
670 def test_create_load_link(self): |
|
671 link = container.LoadLink(importpk, container.LoadInterface()) |
|
672 objs = link._load() |
|
673 self.assertEquals(len(objs), 1) |
|
674 |
|
675 def test_create_load_link_and_populate(self): |
|
676 cont = container.ObjectContainer("Test") |
|
677 link = container.LoadLink(importpk, container.LoadInterface()) |
|
678 cont._add(link) |
|
679 link.populate() |
|
680 self.assertEquals(len(cont._objects()), 2) |
|
681 |
572 if __name__ == '__main__': |
682 if __name__ == '__main__': |
573 unittest.main() |
683 unittest.main() |
574 |
684 |
|
685 |