Пример #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'})
Пример #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')
Пример #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')
Пример #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'})
Пример #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')