def test_process_makefile__shared_subtrees_with_defaults__defaults_disabled(): subtree = {"A": IsInt(default=1234), "B": IsInt(default=5678)} specs = {"A": subtree, "B": WithoutDefaults(subtree)} current = {"A": {"B": 17}, "B": {"A": 71}} expected = {"A": {"A": 1234, "B": 17}, "B": {"A": 71}} result = process_makefile(current, specs) assert_equal(result, expected)
def test_process_makefile__mixed_keys(): current = {"A": 1} specs = {IsStr: IsInt, "B": IsInt(default=-1), "C": IsInt(default=-2)} expected = {"A": 1, "B": -1, "C": -2} result = process_makefile(current, specs) assert_equal(result, expected)
def test_process_makefile__sets_missing_recursive__with_missing_substructure(): current = {"A": 1} specs = {"A": IsInt(default=0), "B": {"C": IsInt(default=-1), "D": IsInt(default=-2)}} expected = {"A": 1, "B": {"C": -1, "D": -2}} result = process_makefile(current, specs) assert_equal(result, expected)
def test_process_makefile__sets_missing_keys(): current = {"A": 1} specs = { "A": IsInt(default=0), "B": IsInt(default=-1), "C": IsInt(default=-2) } expected = {"A": 1, "B": -1, "C": -2} result = process_makefile(current, specs) assert_equal(result, expected)
def test_process_makefile__sets_missing_recursive__with_missing_substructure(): current = {"A": 1} specs = { "A": IsInt(default=0), "B": { "C": IsInt(default=-1), "D": IsInt(default=-2) } } expected = {"A": 1, "B": {"C": -1, "D": -2}} result = process_makefile(current, specs) assert_equal(result, expected)
def test_process_makefile__accept_when_required_value_is_set(): current = {"A": 1, "B": {"C": 3}} expected = {"A": 1, "B": {"C": 3}} specs = {"A": IsInt, "B": {"C": IsInt(default=REQUIRED_VALUE)}} result = process_makefile(current, specs) assert_equal(result, expected)
def test_process_makefile__missing_list_default_value(): current = {"A": 1} expected = {"A": 1, "B": [1, 2, 3]} specs = {"A": IsInt, "B": IsListOf(IsInt, default=[1, 2, 3])} result = process_makefile(current, specs) assert_equal(result, expected)
def test_process_makefile__list_types_accepted(): current = {"A": 1, "B": [17, "Foo"]} expected = {"A": 1, "B": [17, "Foo"]} specs = {"A": IsInt, "B": [IsInt, IsStr]} result = process_makefile(current, specs) assert_equal(result, expected)
def test_process_makefile__missing_list_defaults_to_empty(): current = {"A": 1} expected = {"A": 1, "B": {"C": []}} specs = {"A": IsInt, "B": {"C": [IsInt]}} result = process_makefile(current, specs) assert_equal(result, expected)
def test_process_makefile__implicit_subdict_is_allowed(): current = {"A": 1, "B": None} expected = {"A": 1, "B": {"C": 3}} specs = {"A": IsInt, "B": {"C": IsInt(default=3)}} result = process_makefile(current, specs) assert_equal(result, expected)
def test_process_makefile__accept_missing_value_if_in_implicit_subtree(): current = {"A": 1} expected = {"A": 1} specs = {"A": IsInt, IsStr: {"C": IsInt(default=REQUIRED_VALUE)}} result = process_makefile(current, specs) assert_equal(result, expected)
def test_process_makefile__key_specified_but_no_entries(): current = {"A": 1, "B": None} expected = {"A": 1, "B": []} specs = {"A": IsInt, "B": [IsInt]} result = process_makefile(current, specs) assert_equal(result, expected)
def _dict_keys_found(current, specs): process_makefile(current, specs)