def test_is_flagged(self) -> None: ob = OptionValueContainerBuilder() ob.foo = RankedValue(Rank.NONE, 11) assert not ob.build().is_flagged("foo") ob.foo = RankedValue(Rank.CONFIG, 11) assert not ob.build().is_flagged("foo") ob.foo = RankedValue(Rank.ENVIRONMENT, 11) assert not ob.build().is_flagged("foo") ob.foo = RankedValue(Rank.FLAG, 11) assert ob.build().is_flagged("foo")
def test_unknown_values(self) -> None: ob = OptionValueContainerBuilder() ob.foo = RankedValue(Rank.HARDCODED, 1) o = ob.build() assert 1 == o.foo with pytest.raises(AttributeError): o.bar
def test_unknown_values(self) -> None: ob = OptionValueContainerBuilder() ob.foo = RankedValue(Rank.HARDCODED, 1) o = ob.build() self.assertEqual(1, o.foo) with self.assertRaises(AttributeError): o.bar
def test_value_ranking(self) -> None: ob = OptionValueContainerBuilder() ob.foo = RankedValue(Rank.CONFIG, 11) o = ob.build() assert 11 == o.foo assert Rank.CONFIG == o.get_rank("foo") ob.foo = RankedValue(Rank.HARDCODED, 22) o = ob.build() assert 11 == o.foo assert Rank.CONFIG == o.get_rank("foo") ob.foo = RankedValue(Rank.ENVIRONMENT, 33) o = ob.build() assert 33 == o.foo assert Rank.ENVIRONMENT == o.get_rank("foo") ob.foo = RankedValue(Rank.FLAG, 44) o = ob.build() assert 44 == o.foo assert Rank.FLAG == o.get_rank("foo")
def test_value_ranking(self) -> None: ob = OptionValueContainerBuilder() ob.foo = RankedValue(Rank.CONFIG, 11) o = ob.build() self.assertEqual(11, o.foo) self.assertEqual(Rank.CONFIG, o.get_rank("foo")) ob.foo = RankedValue(Rank.HARDCODED, 22) o = ob.build() self.assertEqual(11, o.foo) self.assertEqual(Rank.CONFIG, o.get_rank("foo")) ob.foo = RankedValue(Rank.ENVIRONMENT, 33) o = ob.build() self.assertEqual(33, o.foo) self.assertEqual(Rank.ENVIRONMENT, o.get_rank("foo")) ob.foo = RankedValue(Rank.FLAG, 44) o = ob.build() self.assertEqual(44, o.foo) self.assertEqual(Rank.FLAG, o.get_rank("foo"))
def test_indexing(self) -> None: ob = OptionValueContainerBuilder() ob.foo = RankedValue(Rank.CONFIG, 1) o = ob.build() assert 1 == o["foo"] assert 1 == o.get("foo") assert 1 == o.get("foo", 2) assert o.get("unknown") is None assert 2 == o.get("unknown", 2) with pytest.raises(AttributeError): o["bar"]
def test_indexing(self) -> None: ob = OptionValueContainerBuilder() ob.foo = RankedValue(Rank.CONFIG, 1) o = ob.build() self.assertEqual(1, o["foo"]) 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["bar"]
def test_copy(self) -> None: # copy semantics can get hairy when overriding __setattr__/__getattr__, so we test them. ob = OptionValueContainerBuilder() ob.foo = RankedValue(Rank.FLAG, 1) ob.bar = RankedValue(Rank.FLAG, {"a": 111}) p = ob.build() z = ob.build() # Verify that the result is in fact a copy. assert 1 == p.foo # Has original attribute. ob.baz = RankedValue(Rank.FLAG, 42) assert not hasattr( p, "baz") # Does not have attribute added after the copy. # Verify that it's a shallow copy by modifying a referent in o and reading it in p. p.bar["b"] = 222 assert {"a": 111, "b": 222} == z.bar