configurationengine/source/cone/public/tests/unittest_container.py
author terytkon
Thu, 11 Mar 2010 17:04:37 +0200
changeset 0 2e8eeb919028
child 3 e7e0ae78773e
permissions -rw-r--r--
Adding EPL version of configurationengine.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     1
#
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     2
# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     3
# All rights reserved.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     4
# This component and the accompanying materials are made available
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     5
# under the terms of "Eclipse Public License v1.0"
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     6
# which accompanies this distribution, and is available
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     7
# at the URL "http://www.eclipse.org/legal/epl-v10.html".
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     8
#
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     9
# Initial Contributors:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    10
# Nokia Corporation - initial contribution.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    11
#
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    12
# Contributors:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    13
#
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    14
# Description: 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    15
#
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    16
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    17
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    18
"""
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    19
Test the CPF root file parsing routines
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    20
"""
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    21
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    22
import zipfile
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    23
import unittest
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    24
import string
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    25
import sys,os,re
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    26
import __init__
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    27
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    28
from cone.public import utils, container, exceptions
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    29
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    30
ROOT_PATH = os.path.dirname(os.path.abspath(__file__))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    31
importpk   = os.path.join(ROOT_PATH,"Import.pk")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    32
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    33
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    34
class TestC(object):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    35
    def __init__(self, path=""):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    36
        self.path = path
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    37
    def test(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    38
        return "test string"
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    39
class TestB(object):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    40
    def __init__(self, path=""):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    41
        self.path = path
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    42
    def test(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    43
        return "test string"
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    44
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    45
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    46
class TestDataContainer(unittest.TestCase):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    47
    def setUp(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    48
        pass
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    49
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    50
    def test_add_values_and_get_values(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    51
        cont = container.DataContainer()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    52
        cont.add_value('test/ff',123)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    53
        cont.add_value('test/ff','test')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    54
        self.assertEquals(cont.get_value('test/ff'),'test')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    55
        self.assertEquals(cont.get_values('test/ff')[0],123)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    56
        self.assertEquals(cont.get_values('test/ff')[1],'test')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    57
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    58
    def test_add_values_and_list_values(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    59
        cont = container.DataContainer()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    60
        cont.add_value('test/ff',123)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    61
        cont.add_value('test/ff','test')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    62
        cont.add_value('test/foo','test')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    63
        keys = cont.list_keys()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    64
        self.assertEquals(len(keys),2)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    65
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    66
    def test_add_values_and_remove_one_value(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    67
        cont = container.DataContainer()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    68
        cont.add_value('test/ff',123)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    69
        cont.add_value('test/ff','test')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    70
        cont.add_value('test/foo','test')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    71
        cont.add_value('test/foo','123')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    72
        cont.add_value('sss',123)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    73
        cont.remove_value('test/foo','test')        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    74
        self.assertEquals(cont.get_values('test/foo'),['123'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    75
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    76
    def test_add_values_and_remove_all_values_of_a_key(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    77
        cont = container.DataContainer()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    78
        cont.add_value('test/ff',123)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    79
        cont.add_value('test/ff','test')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    80
        cont.add_value('test/foo','test')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    81
        cont.add_value('test/foo','123')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    82
        cont.add_value('test/foo','foobar')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    83
        cont.add_value('sss',123)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    84
        for val in cont.get_values('test/foo'):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    85
            cont.remove_value('test/foo',val)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    86
        self.assertEquals(cont.get_values('test/foo'),[])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    87
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    88
    def test_add_values_and_remove_key(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    89
        cont = container.DataContainer()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    90
        cont.add_value('test/ff',123)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    91
        cont.add_value('test/ff','test')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    92
        cont.add_value('test/foo','test')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    93
        cont.add_value('test/foo','123')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    94
        cont.add_value('test/foo','foobar')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    95
        cont.add_value('sss',123)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    96
        cont.remove_key('test/foo')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    97
        self.assertEquals(cont.list_keys(),['test/ff','sss'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    98
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    99
    def test_add_values_clear_all_data(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   100
        cont = container.DataContainer()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   101
        cont.add_value('test/ff',123)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   102
        cont.add_value('test/ff','test')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   103
        cont.add_value('test/foo','test')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   104
        cont.add_value('test/foo','123')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   105
        cont.clear()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   106
        self.assertEquals(len(cont.list_keys()),0)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   107
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   108
    def test_conatainer_flatten(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   109
        data = container.DataContainer()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   110
        data.add_value('test', 1)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   111
        data.add_value('test', 2)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   112
        data.add_value('test', 3)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   113
        data.add_value('foo', 1)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   114
        data.add_value('foo', 2)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   115
        data.add_value('bar', 3)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   116
        self.assertEquals(data.flatten(),{'test': 3, 'foo' : 2,'bar': 3})
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   117
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   118
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   119
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   120
class TestObjectProxy(unittest.TestCase):    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   121
    def test_create_object_proxy_for_test(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   122
        cont = container.ObjectProxy(TestC("foo"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   123
        self.assertTrue(cont)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   124
        self.assertEquals(cont.test(),"test string")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   125
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   126
    def test_create_none_proxy(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   127
        cont = container.ObjectProxy("")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   128
        self.assertTrue(cont)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   129
        try: 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   130
            cont.test()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   131
            self.fail("calling None succeeds?")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   132
        except AttributeError:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   133
            pass
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   134
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   135
    def test_create_object_proxy_for_string(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   136
        cont = container.ObjectProxy("test string")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   137
        self.assertTrue(cont)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   138
        self.assertEquals(cont.startswith("test"),True)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   139
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   140
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   141
def graph(obj):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   142
    if obj._parent:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   143
        return ["%s -> %s" % (obj._parent._name, obj._name)]
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   144
    return []
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   145
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   146
class TestObjectContainer(unittest.TestCase):    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   147
    def test_create_object_container(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   148
        cont = container.ObjectContainer("test")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   149
        self.assertTrue(cont)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   150
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   151
    def test_add_incorrect_type(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   152
        cont = container.ObjectContainer()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   153
        try: 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   154
            cont._add(container.ObjectProxy())
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   155
            self.fail("Adding incorrect class type to container succeeds?")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   156
        except exceptions.IncorrectClassError,e:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   157
            pass
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   158
            
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   159
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   160
    def test_add_child(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   161
        cont = container.ObjectContainer("root")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   162
        obj = container.ObjectContainer("test")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   163
        cont._add(obj)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   164
        cont._add(container.ObjectContainer("foo"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   165
        self.assertEquals(cont._list(),['test','foo'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   166
        self.assertEquals(cont.test,obj)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   167
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   168
    def test_add_internal_child(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   169
        cont = container.ObjectContainer("root")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   170
        obj = container.ObjectContainer("?test")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   171
        cont._add(obj)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   172
        cont._add(container.ObjectContainer("foo"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   173
        self.assertEquals(cont._list(),['foo'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   174
        self.assertEquals(cont._get('?test'),obj)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   175
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   176
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   177
    def test_add_child_to_path(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   178
        cont = container.ObjectContainer("test")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   179
        obj = container.ObjectContainer("test")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   180
        cont._add_to_path("com.nokia", obj)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   181
        self.assertEquals(cont._list(),['com'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   182
        self.assertEquals(cont.com.nokia._list(),['test'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   183
        self.assertEquals(cont.com.nokia.test,obj)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   184
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   185
    def test_add_child_to_path_and_replace_parent(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   186
        cont = container.ObjectContainer("test")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   187
        obj = container.ObjectContainer("test")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   188
        cont._add_to_path("com.nokia", obj)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   189
        cont._add_to_path("com", container.ObjectContainer("bar"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   190
        com = container.ObjectContainer("com")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   191
        cont._add(com)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   192
        self.assertEquals(cont._list(),['com'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   193
        self.assertEquals(cont.com._list(),['nokia','bar'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   194
        self.assertEquals(cont.com.bar._parent,com)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   195
        self.assertEquals(cont.com.nokia._list(),['test'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   196
        self.assertEquals(cont.com.nokia.test,obj)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   197
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   198
    def test_append(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   199
        cont = container.ObjectContainer("test")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   200
        cont._append(container.ObjectContainer('test'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   201
        self.assertEquals(len(utils.get_list(cont.test)), 1)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   202
        cont._append(container.ObjectContainer('test'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   203
        self.assertEquals(len(cont.test), 2)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   204
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   205
    def test_prepend(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   206
        cont = container.ObjectContainer("test")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   207
        cont._prepend(container.ObjectContainer('test'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   208
        self.assertEquals(len(utils.get_list(cont.test)), 1)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   209
        cont._prepend(container.ObjectContainer('test'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   210
        self.assertEquals(len(cont.test), 2)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   211
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   212
    def test_replace(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   213
        cont = container.ObjectContainer("test")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   214
        t1 = container.ObjectContainer('test')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   215
        cont._replace(t1)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   216
        self.assertEquals(cont.test, t1)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   217
        t2 = container.ObjectContainer('test')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   218
        cont._replace(t2)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   219
        self.assertEquals(cont.test, t2)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   220
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   221
    def test_error(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   222
        cont = container.ObjectContainer("test")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   223
        t1 = container.ObjectContainer('test')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   224
        cont._error(t1)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   225
        self.assertEquals(cont.test, t1)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   226
        t2 = container.ObjectContainer('test')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   227
        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   228
            cont._error(t2)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   229
            self.fail("adding same with error succeeds")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   230
        except exceptions.AlreadyExists, e:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   231
            pass
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   232
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   233
    def test_add_child_to_existing_path_with_error(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   234
        cont = container.ObjectContainer("test")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   235
        obj = container.ObjectContainer("test")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   236
        cont._add_to_path("com.nokia", obj)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   237
        com = container.ObjectContainer("com")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   238
        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   239
            cont._add(com, policy=container.ERROR)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   240
            self.fail("Adding an existing object succeeds with ERROR policy")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   241
        except exceptions.AlreadyExists, e:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   242
            pass
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   243
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   244
    def test_add_child_to_existing_path_append(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   245
        cont = container.ObjectContainer("test")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   246
        obj = container.ObjectContainer("test")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   247
        cont._add_to_path("com.nokia", obj)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   248
        cont._add_to_path("com.nokia", container.ObjectContainer("test"), container.APPEND)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   249
        com = container.ObjectContainer("com")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   250
        cont._add(com, policy=container.APPEND)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   251
        self.assertEquals(len(cont._get('com')),2)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   252
        self.assertEquals(cont._get('com')[1],com)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   253
        self.assertEquals(len(cont._objects()),2)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   254
        self.assertEquals(len(cont.com[0].nokia.test),2)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   255
        self.assertEquals(len(cont._get('com[0].nokia.test')),2)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   256
        self.assertEquals([e._name for e in cont._traverse()],['com', 'nokia', 'test', 'test', 'com'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   257
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   258
    def test_add_child_to_existing_path_append_and_objects(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   259
        cont = container.ObjectContainer("test")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   260
        cont._add(container.ObjectContainer("dummy"),container.APPEND)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   261
        cont._add(container.ObjectContainer("child"),container.APPEND)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   262
        cont._add(container.ObjectContainer("child"),container.APPEND)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   263
        cont._add(container.ObjectContainer("child"),container.APPEND)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   264
        self.assertEquals(len(cont._objects()),4)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   265
        cont._remove('child[1]')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   266
        self.assertEquals(len(cont._objects()),3)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   267
        cont._remove('child[0]')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   268
        cont._remove('child[0]')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   269
        self.assertEquals(len(cont._objects()),1)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   270
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   271
    def test_add_child_and_access_via_index(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   272
        cont = container.ObjectContainer("test")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   273
        cont._add(container.ObjectContainer("dummy"),container.APPEND)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   274
        d1 = cont._get('dummy')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   275
        d2 = cont._get('dummy[0]')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   276
        self.assertEquals(d1,d2)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   277
        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   278
            cont._get('dummy[1]')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   279
            self.fail("getting dummy")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   280
        except exceptions.NotFound:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   281
            pass
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   282
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   283
    def test_add_child_to_existing_path_append_and_remove(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   284
        cont = container.ObjectContainer("test")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   285
        obj = container.ObjectContainer("test")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   286
        cont._add_to_path("com.nokia", obj)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   287
        com = container.ObjectContainer("com")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   288
        cont._add(com, policy=container.APPEND)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   289
        self.assertEquals(len(cont._get('com')),2)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   290
        self.assertEquals(cont._get('com')[1],com)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   291
        self.assertEquals(cont._list(),['com'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   292
        cont._remove('com')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   293
        self.assertEquals(cont._list(), [])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   294
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   295
    def test_add_child_to_existing_path_prepend(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   296
        cont = container.ObjectContainer("test")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   297
        obj = container.ObjectContainer("test")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   298
        cont._add_to_path("com.nokia", obj)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   299
        com = container.ObjectContainer("com")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   300
        cont._add(com, policy=container.PREPEND)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   301
        self.assertEquals(len(cont._get('com')),2)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   302
        self.assertEquals(cont._get('com')[0],com)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   303
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   304
    def test_add_child_and_get(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   305
        cont = container.ObjectContainer("test")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   306
        obj = container.ObjectContainer("test")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   307
        cont._add_to_path("com.nokia", obj)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   308
        self.assertEquals(cont._get('com.nokia.test'),obj)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   309
        self.assertEquals(cont.com._get('nokia.test'),obj)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   310
        self.assertEquals(cont.com.nokia._get('test'),obj)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   311
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   312
    def test_add_child_and_remove_one(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   313
        cont = container.ObjectContainer("test")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   314
        obj = container.ObjectContainer("test")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   315
        cont._add_to_path("com.nokia", obj)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   316
        cont._add_to_path("com.nokia", container.ObjectContainer("foo"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   317
        cont._add_to_path("com", container.ObjectContainer("bar"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   318
        self.assertEquals(len(cont._traverse()),5)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   319
        cont._remove("com.nokia.foo")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   320
        self.assertEquals(len(cont._traverse()),4)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   321
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   322
    def test_add_child_and_remove_all(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   323
        cont = container.ObjectContainer("test")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   324
        obj = container.ObjectContainer("test")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   325
        cont._add_to_path("com.nokia", obj)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   326
        cont._add_to_path("com.nokia", container.ObjectContainer("foo"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   327
        cont._add_to_path("com", container.ObjectContainer("bar"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   328
        self.assertEquals(len(cont._traverse()),5)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   329
        for item in cont._list():
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   330
            cont._remove(item)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   331
        self.assertEquals(len(cont._list()),0)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   332
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   333
    def test_add_children_and_list_all(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   334
        cont = container.ObjectContainer("test")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   335
        obj = TestC()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   336
        cont._add_to_path("com.nokia", container.ObjectContainer("test"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   337
        cont._add_to_path("com.nokia", container.ObjectContainer("foo"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   338
        cont._add_to_path("com", container.ObjectContainer("bar"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   339
        self.assertEquals(len(cont._traverse()),5)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   340
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   341
    def test_create_hieararchy_and_remove_child(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   342
        root = container.ObjectContainer("test")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   343
        root._add(container.ObjectContainer("child1"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   344
        root._add(container.ObjectContainer("child2"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   345
        root.child1._add(container.ObjectContainer("child11"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   346
        root.child1._add(container.ObjectContainer("child12"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   347
        root.child2._add(container.ObjectContainer("child21"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   348
        self.assertEquals(root._list_traverse(),
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   349
                          ['child1', 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   350
                          'child1.child11', 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   351
                          'child1.child12',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   352
                          'child2',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   353
                          'child2.child21'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   354
        root.child2._remove('child21')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   355
        self.assertEquals(root._list_traverse()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   356
                          ,['child1',  
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   357
                                           'child1.child11', 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   358
                                           'child1.child12',
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   359
                                           'child2'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   360
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   361
    def test_add_children_and_traverse_and_get_path(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   362
        cont = container.ObjectContainer("default")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   363
        cont._add_to_path("com.nokia", container.ObjectContainer("test"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   364
        cont._add_to_path("com.nokia", container.ObjectContainer("foo"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   365
        cont._add_to_path("com", container.ObjectContainer("bar"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   366
        cont.com._list()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   367
        self.assertEquals(cont._traverse()[0]._path(),"default.com")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   368
        self.assertEquals(cont._traverse()[0]._path(cont),"com")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   369
        self.assertEquals(cont._traverse()[0]._path(cont.com),"")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   370
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   371
    def test_add_children_and_traverse_filter_name_and_get_path(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   372
        cont = container.ObjectContainer("default")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   373
        cont._add_to_path("com.nokia", container.ObjectContainer("test"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   374
        cont._add_to_path("com.nokia", container.ObjectContainer("foo"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   375
        cont._add_to_path("com", container.ObjectContainer("bar"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   376
        cont.com._list()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   377
        ret = cont._traverse(name="^t.*$")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   378
        self.assertEquals(len(ret),1)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   379
        self.assertEquals(ret[0]._path(),"default.com.nokia.test")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   380
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   381
    def test_add_children_and_traverse_filter_name_many(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   382
        cont = container.ObjectContainer("default")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   383
        cont._add_to_path("com.nokia", container.ObjectContainer("test"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   384
        cont._add_to_path("com.nokia", container.ObjectContainer("foo"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   385
        cont._add_to_path("com", container.ObjectContainer("bar"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   386
        cont.com._list()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   387
        ret = cont._traverse(path=".*nokia.*")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   388
        self.assertEquals(len(ret),3)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   389
        self.assertEquals(ret[0]._path(),"default.com.nokia")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   390
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   391
    def test_add_children_tail_recurse_with_function(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   392
        cont = container.ObjectContainer("default")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   393
        cont._add_to_path("com.nokia", container.ObjectContainer("test"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   394
        cont._add_to_path("com.nokia", container.ObjectContainer("foo"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   395
        cont._add_to_path("com", container.ObjectContainer("bar"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   396
        ret = cont._tail_recurse(graph)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   397
        self.assertEquals(ret,['default -> com', 'com -> nokia', 'nokia -> test', 'nokia -> foo', 'com -> bar'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   398
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   399
    def test_add_children_head_recurse_with_function(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   400
        cont = container.ObjectContainer("default")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   401
        cont._add_to_path("com.nokia", container.ObjectContainer("test"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   402
        cont._add_to_path("com.nokia", container.ObjectContainer("foo"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   403
        cont._add_to_path("com", container.ObjectContainer("bar"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   404
        ret = cont._head_recurse(graph)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   405
        self.assertEquals(ret,['nokia -> test', 'nokia -> foo', 'com -> nokia', 'com -> bar', 'default -> com'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   406
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   407
    def test_add_children_and_find_parent(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   408
        cont = container.ObjectContainer("default", container=True)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   409
        cont._add(container.ObjectContainer("com",housut="test"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   410
        cont._add_to_path("com.nokia", container.ObjectContainer("test"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   411
        cont._add_to_path("com.nokia", container.ObjectContainer("foo"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   412
        cont._add_to_path("com", container.ObjectContainer("bar"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   413
        child = cont._get('com.nokia.test')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   414
        self.assertEquals(child._find_parent()._name, 'nokia')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   415
        self.assertEquals(child._find_parent(container=True)._name, 'default')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   416
        self.assertEquals(child._find_parent(housut="test")._name, 'com')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   417
        self.assertEquals(child._find_parent(__class__=container.ObjectContainer)._name, 'nokia')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   418
        self.assertEquals(child._find_parent(type=container.ObjectContainer)._name, 'nokia')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   419
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   420
class TestObjectProxyContainer(unittest.TestCase):    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   421
    def test_create_object_container_for_test(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   422
        cont = container.ObjectProxyContainer(TestC("foo"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   423
        self.assertTrue(cont)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   424
        self.assertEquals(cont.test(),"test string")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   425
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   426
    def test_create_none_container(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   427
        cont = container.ObjectProxyContainer(None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   428
        self.assertTrue(cont)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   429
        try: 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   430
            cont.test()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   431
            self.fail("calling None succeeds?")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   432
        except AttributeError:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   433
            pass
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   434
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   435
    def test_create_object_container_for_string(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   436
        cont = container.ObjectProxyContainer("Test")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   437
        self.assertTrue(cont)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   438
        self.assertEquals(cont.startswith("Test"),True)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   439
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   440
    def test_create_object_container(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   441
        cont = container.ObjectProxyContainer(TestC())
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   442
        self.assertTrue(cont)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   443
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   444
    def test_add_child(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   445
        cont = container.ObjectProxyContainer(None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   446
        obj = TestC()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   447
        cont._add(container.ObjectProxyContainer(obj,"test"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   448
        self.assertEquals(cont._list(),['test'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   449
        self.assertEquals(cont.test._obj,obj)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   450
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   451
    def test_add_child_to_path(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   452
        cont = container.ObjectProxyContainer(None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   453
        obj = TestC()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   454
        cont._add_to_path("com.nokia", container.ObjectProxyContainer(obj,"test"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   455
        self.assertEquals(cont._list(),['com'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   456
        self.assertEquals(cont.com.nokia._list(),['test'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   457
        self.assertEquals(cont.com.nokia.test._obj,obj)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   458
        self.assertEquals(cont.com.nokia.test.test(),"test string")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   459
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   460
    def test_add_child_and_get(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   461
        cont = container.ObjectProxyContainer(None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   462
        obj = TestC()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   463
        cont._add_to_path("com.nokia", container.ObjectProxyContainer(obj,"test"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   464
        self.assertEquals(cont._get('com.nokia.test')._obj,obj)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   465
        self.assertEquals(cont.com._get('nokia.test')._obj,obj)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   466
        self.assertEquals(cont.com.nokia._get('test')._obj,obj)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   467
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   468
    def test_add_child_and_remove_one(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   469
        cont = container.ObjectProxyContainer(None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   470
        obj = TestC()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   471
        cont._add_to_path("com.nokia", container.ObjectProxyContainer(obj,"test"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   472
        cont._add_to_path("com.nokia", container.ObjectProxyContainer(TestC(),"foo"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   473
        cont._add_to_path("com", container.ObjectProxyContainer(TestC(),"bar"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   474
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   475
        self.assertEquals(len(cont._traverse()),5)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   476
        cont._remove("com.nokia.foo")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   477
        self.assertEquals(len(cont._traverse()),4)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   478
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   479
    def test_add_child_and_remove_all(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   480
        cont = container.ObjectProxyContainer(None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   481
        obj = TestC()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   482
        cont._add_to_path("com.nokia", container.ObjectProxyContainer(obj,"test"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   483
        cont._add_to_path("com.nokia", container.ObjectProxyContainer(TestC(),"foo"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   484
        cont._add_to_path("com", container.ObjectProxyContainer(TestC(),"bar"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   485
        self.assertEquals(len(cont._traverse()),5)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   486
        for item in cont._list():
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   487
            cont._remove(item)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   488
        self.assertEquals(len(cont._list()),0)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   489
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   490
    def test_add_children_and_list_all(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   491
        cont = container.ObjectProxyContainer(None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   492
        obj = TestC()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   493
        cont._add_to_path("com.nokia", container.ObjectProxyContainer(obj,"test"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   494
        cont._add_to_path("com.nokia", container.ObjectProxyContainer(TestC(),"foo"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   495
        cont._add_to_path("com", container.ObjectProxyContainer(TestC(),"bar"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   496
        self.assertEquals(len(cont._traverse()),5)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   497
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   498
    def test_add_children_and_traverse_and_get_path(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   499
        cont = container.ObjectProxyContainer(None,"default")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   500
        cont._add_to_path("com.nokia", container.ObjectProxyContainer(TestC(),"test"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   501
        cont._add_to_path("com.nokia", container.ObjectProxyContainer(TestC(),"foo"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   502
        cont._add_to_path("com", container.ObjectProxyContainer(TestC(),"bar"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   503
        cont.com._list()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   504
        self.assertEquals(cont._traverse()[0]._path(),"default.com")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   505
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   506
    def test_add_children_and_traverse_filter_name_and_get_path(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   507
        cont = container.ObjectProxyContainer(None,"default")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   508
        cont._add_to_path("com.nokia", container.ObjectProxyContainer(TestC(),"test"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   509
        cont._add_to_path("com.nokia", container.ObjectProxyContainer(TestC(),"foo"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   510
        cont._add_to_path("com", container.ObjectProxyContainer(TestC(),"bar"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   511
        cont.com._list()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   512
        ret = cont._traverse(name="^t.*$")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   513
        self.assertEquals(len(ret),1)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   514
        self.assertEquals(ret[0]._path(),"default.com.nokia.test")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   515
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   516
    def test_add_children_and_traverse_filter_name_many(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   517
        cont = container.ObjectProxyContainer(None,"default")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   518
        cont._add_to_path("com.nokia", container.ObjectProxyContainer(TestC(),"test"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   519
        cont._add_to_path("com.nokia", container.ObjectProxyContainer(TestC(),"foo"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   520
        cont._add_to_path("com", container.ObjectProxyContainer(TestC(),"bar"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   521
        cont.com._list()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   522
        ret = cont._traverse(path=".*nokia.*")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   523
        self.assertEquals(len(ret),3)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   524
        self.assertEquals(ret[0]._path(),"default.com.nokia")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   525
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   526
    def test_add_children_and_traverse_filter_class(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   527
        cont = container.ObjectProxyContainer(None,"default")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   528
        cont._add_to_path("com.nokia", container.ObjectProxyContainer(TestC(),"test"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   529
        cont._add_to_path("com.nokia", container.ObjectProxyContainer(TestC(),"foo"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   530
        cont._add_to_path("com", container.ObjectProxyContainer(TestC(),"bar"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   531
        cont._add_to_path("com.nokia", container.ObjectProxyContainer(TestB(),"bee"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   532
        cont.com.nokia._add(container.ObjectProxyContainer(TestB(),"vee"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   533
        ret = cont._traverse(filters=[lambda x: hasattr(x,'_obj') and isinstance(x._obj, TestB)])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   534
        self.assertEquals(len(ret),2)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   535
        self.assertEquals(ret[0]._path(cont),"com.nokia.bee")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   536
        self.assertEquals(ret[1]._path(cont),"com.nokia.vee")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   537
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   538
    def test_add_children_and_traverse_filter_class_proxies(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   539
        cont = container.ObjectProxyContainer(None,"default")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   540
        cont._add_to_path("com.nokia", container.ObjectProxyContainer(TestC(),"test"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   541
        cont._add_to_path("com.nokia", container.ObjectProxyContainer(TestC(),"foo"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   542
        cont._add_to_path("com", container.ObjectProxyContainer(TestC(),"bar"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   543
        cont._add_to_path("com.nokia", container.ObjectProxyContainer(TestB(),"bee"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   544
        cont.com.nokia._add(container.ObjectProxyContainer(TestB(),"vee"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   545
        ret = cont._traverse(filters=[lambda x: isinstance(x, container.ObjectProxyContainer)])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   546
        self.assertEquals(len(ret),5)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   547
        self.assertEquals(ret[0]._path(cont),"com.nokia.test")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   548
        self.assertEquals(ret[1]._path(cont),"com.nokia.foo")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   549
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   550
class TestLoadProxy(unittest.TestCase):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   551
    def test_create_load_proxy(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   552
        proxy = container.LoadProxy(importpk, container.LoadInterface())
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   553
        proxy._load()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   554
        self.assertTrue(proxy._obj != None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   555
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   556
    def test_create_load_proxy_and_get(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   557
        proxy = container.LoadProxy(importpk, container.LoadInterface())
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   558
        self.assertEquals(proxy.list_resources(''),['test1.txt', 'test2.txt', 'test3.txt'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   559
        self.assertTrue(proxy._obj != None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   560
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   561
    def test_create_load_proxy_and_unload(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   562
        proxy = container.LoadProxy(importpk, container.LoadInterface())
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   563
        self.assertEquals(proxy.list_resources(''),['test1.txt', 'test2.txt', 'test3.txt'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   564
        proxy.set('path',"unload.pk")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   565
        proxy._unload()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   566
        self.assertTrue(proxy._obj == None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   567
        proxy =None
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   568
        proxy2 = container.LoadProxy("unload.pk", container.LoadInterface())
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   569
        self.assertEquals(proxy2.list_resources(''),['test1.txt', 'test2.txt', 'test3.txt'])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   570
        os.unlink("unload.pk")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   571
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   572
if __name__ == '__main__':
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   573
    unittest.main()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   574