def testMutability_03(self):
        # Makes sure that stored branches are handled correctly
        
        p1 = TreeDict('root')
        
        p1.a = (13, (123, 32))
        p1.b = 123
        p1.c.a = 145
        p1.c.b = "1231321321231321"
        
        p2 = TreeDict('node')

        p2.a = 432

        p1.node = p2

        self.assert_(p1.isMutable())

        p1.freeze()
        
        self.assert_(p1.isMutable())

        p2.freeze()
        
        self.assert_(not p1.isMutable())
Exemple #2
0
    def testBranchStructureFrozen_01(self):

        p = TreeDict()
        p.a = TreeDict(x = 1)
        p.freeze(structure_only = True)

        self.assertRaises(TypeError, lambda: p.attach(recursive = True))
Exemple #3
0
    def testBranchHasValuePropegationFlags_02(self):

        p = TreeDict()
        p.a = 1
        p.freeze(values_only = True)
        p.makeBranch('b')

        self.assert_(p.b.valuesAreFrozen())
Exemple #4
0
    def testhashes_17_pythonkeys(self):
        p1 = TreeDict()
        p1.a.b = [123, 43]
        p1.freeze()

        def f(): return {p1 : 0}

        self.assertRaises(TypeError, f)
    def testRetrieve_01_NonExistantBranchFromFrozenTree(self):
        p = TreeDict()
        p.a.b.c = 1
        p.freeze()

        self.assert_(p.a.b.c == 1)

        self.assertRaises(AttributeError, lambda: p.a.d)
Exemple #6
0
    def testDangling_15_DanglingWhileValueFrozen_01(self):

        p = TreeDict()
        p.freeze(values_only = True)

        p.x = 1
        p.b.x = 2
        p.a.b.c.d = 3
        p.a.b.c.e = 4
Exemple #7
0
    def testhashes_20b_infinite_recursion_raises_error__frozen(self):
        p = TreeDict()

        p.makeBranch("a")

        p.a.b.c = p.a

        p.freeze()

        self.assertRaises(RuntimeError, lambda: p.hash())
Exemple #8
0
    def testAttaching_12_propegatingFrozenFlags(self):
        p1 = TreeDict()

        p1.a.b = TreeDict()

        p1.freeze(values_only = True)

        p1.attach('c', TreeDict() )

        self.assert_(p1.c.valuesAreFrozen())
    def testDeletion_11_Frozen_StructureOnly(self):
        p = TreeDict()

        p.a.x = 1

        p.freeze("a", structure_only=True)

        del p.a

        self.assert_("a" not in p)
Exemple #10
0
    def testDeletionPI_14_Frozen_ValuesOnly(self):
        p = TreeDict()

        p.a.x = 1

        p.freeze('a', values_only = True)

        del p.a

        self.assert_('a' not in p)
Exemple #11
0
    def testDrySet_10_makeBranch_Frozen_ValuesOnly_01(self):
        p = TreeDict()
        p.b.a = 1
        p.freeze(values_only = True)

        p_before = p.copy()

        self.assertRaises(TypeError, lambda: p.checkset("b.a", 2))

        self.assert_(p_before == p)
Exemple #12
0
    def testDeletionPI_11_Frozen_StructureOnly(self):
        p = TreeDict()

        p.a.x = 1

        p.freeze('a', structure_only = True)

        p.popitem('a')

        self.assert_('a' not in p)
Exemple #13
0
    def testDeletionPI_08_Frozen(self):
        p = TreeDict()

        p.a.x = 1

        p.freeze('a')

        p.popitem('a')

        self.assert_('a' not in p)
Exemple #14
0
    def testDeletion_08_Frozen(self):
        p = TreeDict()

        p.a.x = 1

        p.freeze('a')

        del p.a

        self.assert_('a' not in p)
Exemple #15
0
    def testDeletionPI_09_Frozen_StructureOnly(self):
        p = TreeDict()

        p.a.x = 1

        p.freeze(structure_only = True)

        def f():
            p.popitem('a')

        self.assertRaises(TypeError, f)
    def testFreezingStructure_01(self):
        p = TreeDict()

        p.a = 1

        p.freeze(structure_only = True)

        p.a = 2

        self.assert_(p.a == 2)
        self.assertRaises(TypeError, lambda: p.set('b',1))
Exemple #17
0
    def testDeletionPI_07_Frozen(self):
        p = TreeDict()

        p.a.x = 1

        p.freeze('a')

        def f():
            p.popitem('a.x')

        self.assertRaises(TypeError, f)
    def testDeletion_10_Frozen_StructureOnly(self):
        p = TreeDict()

        p.a.x = 1

        p.freeze("a", structure_only=True)

        def f():
            del p.a.x

        self.assertRaises(TypeError, f)
Exemple #19
0
    def testDeletion_07_Frozen(self):
        p = TreeDict()

        p.a.x = 1

        p.freeze('a')

        def f():
            del p.a.x

        self.assertRaises(TypeError, f)
Exemple #20
0
    def testUpdate_WithFreezing_ValuesOnly_06(self):

        p = TreeDict()

        p.a.b.c = 1
        p.freeze(values_only=True)

        q = TreeDict()
        q.a.b = 2

        self.assertRaises(TypeError, lambda: p.update(q))
Exemple #21
0
    def testDangling_08_Freezing_01(self):
        p = TreeDict()

        b = p.a.b

        p.freeze()

        def f():
            b.v = 1

        self.assertRaises(TypeError, f)
Exemple #22
0
    def testDangling_08_Freezing_02(self):
        p = TreeDict()

        b = p.a.b

        del p['a']

        p.freeze()

        # Okay now as it's disconnected from b
        b.v = 1
Exemple #23
0
    def testRecursiveAttach_04_error_on_frozen(self):

        p = TreeDict()
        p.b = TreeDict(x = 1)
        p.freeze()

        self.assertRaises(TypeError, lambda: p.attach(recursive = True))

        self.assert_(p.b.isRoot())
        self.assert_(p.b not in p.branches())
        self.assert_(p.size() == 1)
Exemple #24
0
    def testhashes_16_pythonkeys(self):
        p1 = TreeDict()
        p1.a.b = 123

        def f(): return {p1 : 0}

        self.assertRaises(TypeError, f)

        p1.freeze()

        # Should work now
        d = {p1 : 0}
Exemple #25
0
    def testAttaching_09_frozen_2(self):
        p = TreeDict('p')
        p.b.c = 1
        p.freeze()

        p2 = TreeDict()
        p2.attach(p, copy=True)

        self.assert_(p2.p.b.c == 1)
        self.assert_(not p2.p.isFrozen())
        self.assert_(not p2.p.b.isFrozen())
        self.assert_(not p2.isFrozen())
    def testIterators_05_branches(self):
        p = TreeDict()
        items = [('a.v', 1), ('b', 2), ('c', 3), ('aa.b.c.d.e', 4)]

        p.set(**dict(items))

        bl  = [(k, p.get(k)) for k in ['a', 'aa']]

        p.freeze()

        self.assert_(set(p.itervalues(False, branch_mode = "only")) == set([v for k, v in bl]))
        self.assert_(set(p.iterkeys(False, branch_mode = "only")) == set([k for k, v in bl]))
        self.assert_(set(p.iteritems(False, branch_mode = "only")) == set(bl))
Exemple #27
0
def resetAndInitGlobalParameterTree():
    global __default_tree
    global __default_tree_finalized
    global __pmodule_branch_tree
        
    __pmodule_branch_tree = TreeDict()
    __pmodule_branch_tree.freeze(values_only = True)  # disable value clobbering

    __default_tree = TreeDict("defaults")
    __default_tree["__defaultpresettree__"] = True
    __default_tree.freeze(values_only = True)

    __default_tree_finalized = False
Exemple #28
0
    def testDeletion_12_Frozen_ValuesOnly(self):
        p = TreeDict()

        p.x = 1

        p.freeze(values_only = True)

        def f():
            del p.x

        self.assertRaises(TypeError, f)

        self.assert_(p.x == 1)
Exemple #29
0
    def testDeletionPI_13_Frozen_ValuesOnly(self):
        p = TreeDict()

        p.a.x = 1

        p.freeze('a', values_only = True)

        def f():
            p.popitem('a.x')

        self.assertRaises(TypeError, f)

        self.assert_(p.a.x == 1)
Exemple #30
0
    def testAttaching_10_Atomic_02_noImplicitOverwrite(self):
        p = TreeDict()
        p.makeBranch('a')
        p.freeze()

        self.assert_('a' in p.keys(branch_mode = 'only', recursive=False))

        self.assertRaises(TypeError, lambda: p.attach("a.b.c.d", TreeDict(x = 1),
                                                      protect_structure=True))

        self.assert_('a' in p.keys(branch_mode = 'only', recursive=False))

        self.assert_(p.a.size() == 0)