Example #1
0
 def testShadowingArray(self):
     outer = tdb._ChainedMap()
     inner = tdb._ChainedMap(outer)
     outer.set(('params', 'foo'), 'bar')
     inner.set(('params', 'foo'), 'baz')
     self.assertEquals(inner.get(('params', 'foo')), 'baz')
     self.assertEquals(outer.get(('params', 'foo')), 'bar')
     # Setting in outer is visible to inner
     outer.set(('params', 'yab'), 'dab')
     self.assertEquals(inner.get('params'), {'foo': 'baz', 'yab': 'dab'})
Example #2
0
 def testMismatchedChild(self):
     '''Test that any setting of an inner scope's value checks the outer
     scope to make sure it's a leaf.'''
     outer = tdb._ChainedMap()
     inner = tdb._ChainedMap(outer)
     outer.set(('params', 'foo'), 'bar')
     self.assertRaises(tdb.MapError, inner.set, 'params', 'baz')
     outer.set('xparams', 'bar')
     self.assertRaises(tdb.MapError, inner.set, ('xparams', 'foo'), 'baz')
     outer.set(('foo', 'bar', 'baz'), 'foo')
     self.assertRaises(tdb.MapError, inner.set, ('foo', 'bar'), 'baz')
     outer.set(('fee', 'bar'), 'foo')
     self.assertRaises(tdb.MapError, inner.set, ('fee', 'bar', 'baz'), 'baz')
Example #3
0
 def testMismatchedParent2(self):
     outer = tdb._ChainedMap()
     inner = tdb._ChainedMap(outer)
     inner.set(('xparams', 'foo'), 'bar')
     outer.set('xparams', 'baz')
     # see testMismatchedParent: it's a bug that this doesn't
     # raise tdb.MapError. But the 'get' does raise it.
     self.assertRaises(tdb.MapError, inner.get, 'xparams')
     inner.set(('yparams', 'foo', 'bar', 'baz'), 'foo')
     outer.set(('yparams', 'foo', 'bar'), 'foo')
     self.assertRaises(tdb.MapError, inner.get, 'yparams')
     inner.set(('zparams', 'foo', 'bar'), 'foo')
     outer.set(('zparams', 'foo', 'bar', 'baz'), 'foo')
     self.assertRaises(tdb.MapError, inner.get, 'zparams')
Example #4
0
 def testCombine(self):
     outer = tdb._ChainedMap()
     inner = tdb._ChainedMap(outer)
     inner.set(('params', 'doo', 'foo'), 'baz')
     inner.set(('params', 'doo', 'dum'), 'foo')
     inner.set(('params', 'dee'), 'bax')
     outer.set(('params', 'fip'), 'foo')
     self.assertEquals(inner.get('params'), {'fip': 'foo',
                                             'doo': {'foo': 'baz', 'dum': 'foo'},
                                             'dee': 'bax'})
     outer.set(('params', 'doo', 'foo'), 'bar') # shadowed
     outer.set(('params', 'doo', 'fee'), 'bar') # new
     self.assertEquals(inner.get('params'), {'fip': 'foo',
                                             'doo': {'fee': 'bar', 'foo': 'baz', 'dum': 'foo'},
                                             'dee': 'bax'})
Example #5
0
 def testShadowing(self):
     '''Test that shadowing works correctly'''
     outer = tdb._ChainedMap()
     outer.set('foo', 'bar')
     self.assertEquals(outer.get('foo'), 'bar')
     inner = tdb._ChainedMap(outer)
     # Before inner overrides, it inherits
     self.assertEquals(inner.get('foo'), 'bar')
     # Now it's overridden
     inner.set('foo', 'baz')
     self.assertEquals(outer.get('foo'), 'bar')
     self.assertEquals(inner.get('foo'), 'baz')
     # Likewise a tree.
     m3 = tdb._ChainedMap(outer)
     m3.set('foo', 'yab')
     self.assertEquals(outer.get('foo'), 'bar')
     self.assertEquals(inner.get('foo'), 'baz')
     self.assertEquals(m3.get('foo'), 'yab')