def test_update_annotations(self): annotations = Annotations(finalized=True) updating_fancy_dict = FancyDict(key=1) updating_fancy_dict.annotate("key", annotations) base_fancy_dict = FancyDict() base_fancy_dict.update(updating_fancy_dict) assert base_fancy_dict.get_annotations("key").finalized
def test_if_finalized_dont_update_annotations(self): fancy_dict = FancyDict(key=1) fancy_dict.annotate("key", finalized=True) update = FancyDict(key=2) update.annotate("key", finalized=False) fancy_dict.update(update) assert 1 == fancy_dict["key"]
def test_merge_method(self): base_dict = FancyDict() base_dict["counter"] = 1 update_dict = FancyDict(counter=1) update_dict.annotate("counter", Annotations(merge_method=add)) base_dict.update(update_dict) assert 2 == base_dict["counter"]
def test_use_different_merge_methods_only_once(self): base_fancy_dict = FancyDict(counter=1) update_fancy_dict = fancy_dict_with_merge_methods(MergeMethod(add)) update_fancy_dict["counter"] = 1 base_fancy_dict.update(update_fancy_dict) assert 2 == base_fancy_dict["counter"] base_fancy_dict.update(counter=1) assert 1 == base_fancy_dict["counter"]
def test_create_annotations_from_keyword_arguments(self): fancy_dict = FancyDict(finalized=1) fancy_dict.annotate("finalized", finalized=True) fancy_dict.update(finalized=2) assert 1 == fancy_dict["finalized"] fancy_dict["key"] = "value" fancy_dict["key_not_merging"] = "value" fancy_dict.annotate("key_not_merging", condition=lambda o, n: False) assert "key_not_merging" not in FancyDict(fancy_dict) fancy_dict["counter"] = 1 update_dict = FancyDict(counter=1) update_dict.annotate("counter", merge_method=add) fancy_dict.update(update_dict) assert 2 == fancy_dict["counter"]
def test_with_keyword_arguments(self): base_dict = FancyDict({}) base_dict.update(key=1) assert {"key": 1} == base_dict
def test_overwrite_dict_with_another_type(self): base_dict = FancyDict({"base": {"sub": 1}}) base_dict.update({"base": 0}) assert {"base": 0} == base_dict
def test_updates_nested_dicts(self): base_dict = FancyDict({"base": {"key0": 0}}) update_dict = {"base": {"key1": 1}} base_dict.update(update_dict) assert {"base": {"key0": 0, "key1": 1}} == base_dict
def test_finalized(self): fancy_dict = FancyDict(finalized=1) fancy_dict.annotate("finalized", Annotations(finalized=True)) fancy_dict.update(finalized=2) assert 1 == fancy_dict["finalized"]