def test_deepcopy(self): # deepcopy semantics can get hairy when overriding __setattr__/__getattr__, so we test them. o = OptionValueContainer() o.add_forwardings({'foo': 'bar'}) o.add_forwardings({'baz': 'qux'}) o.bar = 1 o.qux = {'a': 111} p = copy.deepcopy(o) o.baz['b'] = 222 # Add to original dict. self.assertEqual(1, p.foo) self.assertEqual({'a': 111}, p.baz) # Ensure dict was copied.
def test_forwarding(self): o = OptionValueContainer() o.add_forwardings({'foo': 'bar'}) o.bar = 1 self.assertEqual(1, o.foo) o.bar = 2 self.assertEqual(2, o.foo) o.add_forwardings({'baz': 'qux'}) o.qux = 3 self.assertEqual(2, o.foo) self.assertEqual(3, o.baz) # Direct setting overrides forwarding. o.foo = 4 self.assertEqual(4, o.foo)