def test_value_ranking(self):
   o = OptionValueContainer()
   o.add_forwardings({'foo': 'bar'})
   o.bar = RankedValue(RankedValue.CONFIG, 11)
   self.assertEqual(11, o.foo)
   o.bar = RankedValue(RankedValue.HARDCODED, 22)
   self.assertEqual(11, o.foo)
   o.bar = RankedValue(RankedValue.ENVIRONMENT, 33)
   self.assertEqual(33, o.foo)
   o.bar = 44  # No explicit rank is assumed to be a FLAG.
   self.assertEqual(44, o.foo)
Esempio n. 2
0
 def test_value_ranking(self):
     o = OptionValueContainer()
     o.add_forwardings({'foo': 'bar'})
     o.bar = RankedValue(RankedValue.CONFIG, 11)
     self.assertEqual(11, o.foo)
     o.bar = RankedValue(RankedValue.HARDCODED, 22)
     self.assertEqual(11, o.foo)
     o.bar = RankedValue(RankedValue.ENVIRONMENT, 33)
     self.assertEqual(33, o.foo)
     o.bar = 44  # No explicit rank is assumed to be a FLAG.
     self.assertEqual(44, o.foo)
  def test_is_flagged(self):
    o = OptionValueContainer()
    o.add_forwardings({'foo': 'bar'})

    o.bar = RankedValue(RankedValue.NONE, 11)
    self.assertFalse(o.is_flagged('foo'))

    o.bar = RankedValue(RankedValue.CONFIG, 11)
    self.assertFalse(o.is_flagged('foo'))

    o.bar = RankedValue(RankedValue.ENVIRONMENT, 11)
    self.assertFalse(o.is_flagged('foo'))

    o.bar = RankedValue(RankedValue.FLAG, 11)
    self.assertTrue(o.is_flagged('foo'))
    def test_is_flagged(self):
        o = OptionValueContainer()
        o.add_forwardings({'foo': 'bar'})

        o.bar = RankedValue(RankedValue.NONE, 11)
        self.assertFalse(o.is_flagged('foo'))

        o.bar = RankedValue(RankedValue.CONFIG, 11)
        self.assertFalse(o.is_flagged('foo'))

        o.bar = RankedValue(RankedValue.ENVIRONMENT, 11)
        self.assertFalse(o.is_flagged('foo'))

        o.bar = RankedValue(RankedValue.FLAG, 11)
        self.assertTrue(o.is_flagged('foo'))
  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)
    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)
 def test_deepcopy(self):
   # deepcopy semantics can get hairy when overriding __setattr__/__getattr__, so we test them.
   o = OptionValueContainer()
   o.foo = 1
   o.bar = {'a': 111}
   p = copy.deepcopy(o)
   o.bar['b'] = 222  # Add to original dict.
   self.assertEqual(1, p.foo)
   self.assertEqual({'a': 111}, p.bar)  # Ensure dict was copied.
Esempio n. 8
0
  def test_indexing(self):
    o = OptionValueContainer()
    o.add_forwardings({'foo': 'bar'})
    o.bar = 1
    self.assertEqual(1, o['foo'])
    self.assertEqual(1, o['bar'])

    with self.assertRaises(AttributeError):
      o['baz']
 def test_copy(self):
   # copy 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.copy(o)
   o.baz['b'] = 222  # Add to original dict.
   self.assertEqual(1, p.foo)
   self.assertEqual({ 'a': 111, 'b': 222 }, p.baz)  # Ensure dict was not copied.
 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.
Esempio n. 11
0
  def test_indexing(self):
    o = OptionValueContainer()
    o.add_forwardings({'foo': 'bar'})
    o.bar = 1
    self.assertEqual(1, o['foo'])
    self.assertEqual(1, o['bar'])

    self.assertEqual(1, o.get('foo'))
    self.assertEqual(1, o.get('foo', 2))
    self.assertIsNone(o.get('unknown'))
    self.assertEqual(2, o.get('unknown', 2))

    with self.assertRaises(AttributeError):
      o['baz']
    def test_indexing(self):
        o = OptionValueContainer()
        o.add_forwardings({'foo': 'bar'})
        o.bar = 1
        self.assertEqual(1, o['foo'])
        self.assertEqual(1, o['bar'])

        self.assertEqual(1, o.get('foo'))
        self.assertEqual(1, o.get('foo', 2))
        self.assertIsNone(o.get('unknown'))
        self.assertEqual(2, o.get('unknown', 2))

        with self.assertRaises(AttributeError):
            o['baz']
  def test_deepcopy(self):
    # copy semantics can get hairy when overriding __setattr__/__getattr__, so we test them.
    o = OptionValueContainer()
    o.foo = RankedValue(RankedValue.FLAG, 1)
    o.bar = RankedValue(RankedValue.FLAG, {'a': 111})

    p = copy.deepcopy(o)

    # Verify that the result is in fact a copy.
    self.assertEqual(1, p.foo)  # Has original attribute.
    o.baz = RankedValue(RankedValue.FLAG, 42)
    self.assertFalse(hasattr(p, 'baz'))  # Does not have attribute added after the copy.

    # Verify that it's a deep copy by modifying a referent in o and reading it in p.
    o.bar['b'] = 222
    self.assertEqual({'a': 111}, p.bar)
Esempio n. 14
0
    def test_deepcopy(self) -> None:
        # copy semantics can get hairy when overriding __setattr__/__getattr__, so we test them.
        o = OptionValueContainer()
        o.foo = RankedValue(RankedValue.FLAG, 1)
        o.bar = RankedValue(RankedValue.FLAG, {"a": 111})

        p = copy.deepcopy(o)

        # Verify that the result is in fact a copy.
        self.assertEqual(1, p.foo)  # Has original attribute.
        o.baz = RankedValue(RankedValue.FLAG, 42)
        self.assertFalse(hasattr(p, "baz"))  # Does not have attribute added after the copy.

        # Verify that it's a deep copy by modifying a referent in o and reading it in p.
        # TODO: add type hints to ranked_value.py and option_value_container.py so that this works.
        o.bar["b"] = 222  # type: ignore[index]
        self.assertEqual({"a": 111}, p.bar)
    def test_deepcopy(self):
        # copy semantics can get hairy when overriding __setattr__/__getattr__, so we test them.
        o = OptionValueContainer()
        o.foo = 1
        o.bar = {'a': 111}

        p = copy.deepcopy(o)

        # Verify that the result is in fact a copy.
        self.assertEqual(1, p.foo)  # Has original attribute.
        o.baz = 42
        self.assertFalse(hasattr(
            p, 'baz'))  # Does not have attribute added after the copy.

        # Verify that it's a deep copy by modifying a referent in o and reading it in p.
        o.bar['b'] = 222
        self.assertEqual({'a': 111}, p.bar)