Beispiel #1
0
def test_add_key():
    dol = {"a": [1, 2], "b": {"c": {"d": 1}, "e": 2}}
    set_value(dol, "f", 3)
    ref = {"a": [1, 2], "b": {"c": {"d": 1}, "e": 2}, "f": 3}
    assert dol == ref

    set_value(dol, "b/1", 3)
    ref = {"a": [1, 2], "b": {"c": {"d": 1}, "e": 2, 1: 3}, "f": 3}
    assert dol == ref
Beispiel #2
0
def test_append_to_list():
    dol = {"a": [1, 2], "b": {"c": {"d": 1}, "e": 2}}
    set_value(dol, "a/2", 3)
    ref = {"a": [1, 2, 3], "b": {"c": {"d": 1}, "e": 2}}
    assert dol == ref

    set_value(dol, "a/5", 6)
    ref = {"a": [1, 2, 3, None, None, 6], "b": {"c": {"d": 1}, "e": 2}}
    assert dol == ref
Beispiel #3
0
def test_top_is_list():
    dol = [{"a": [1, 2], "b": {"c": {"d": 1}}, "e": 2}, 2, 3]

    set_value(dol, "0/k", 4)
    ref = [{"a": [1, 2], "b": {"c": {"d": 1}}, "e": 2, "k": 4}, 2, 3]
    assert ref == dol

    set_value(dol, "0", 1)
    ref = [1, 2, 3]
    assert ref == dol
Beispiel #4
0
def test_fancy_overwriting():
    dol = {"a": [1, 2], "b": {"c": {"d": 1}}, "e": 2}

    set_value(dol, "a/1", 3)
    ref = {"a": [1, 3], "b": {"c": {"d": 1}}, "e": 2}
    assert ref == dol

    set_value(dol, "e/f", 3)
    ref = {"a": [1, 3], "b": {"c": {"d": 1}}, "e": {"f": 3}}
    assert ref == dol

    set_value(dol, "e/f/1/g", 3)
    ref = {"a": [1, 3], "b": {"c": {"d": 1}}, "e": {"f": [None, {"g": 3}]}}
    assert ref == dol
Beispiel #5
0
def test_set_value():
    dol = {"a": [1, 2], "b": {"c": {"d": 1}, "e": 2}}
    ref = {"a": [3, 2], "b": {"c": {"d": 1}, "e": 2}}

    set_value(dol, "a/0", 3)
    assert dol == ref

    ref = {"a": [3, 2], "b": {"c": {"d": 1}, "e": 3}}

    set_value(dol, "b/e", 3)
    assert dol == ref

    set_value(dol, "a/1/f", 3)

    ref = {"a": [3, {"f": 3}], "b": {"c": {"d": 1}, "e": 3}}
    assert dol == ref
Beispiel #6
0
def test_top_is_dict():
    dol = {"a": [1, 2], "b": {"c": {"d": 1}}, "e": 2}

    set_value(dol, "h", 4)
    ref = {"a": [1, 2], "b": {"c": {"d": 1}}, "e": 2, "h": 4}
    assert ref == dol

    set_value(dol, "i/j/k", 4)
    ref = {"a": [1, 2], "b": {"c": {"d": 1}}, "e": 2, "h": 4, "i": {"j": {"k": 4}}}
    assert ref == dol

    set_value(dol, "j/0/k", 4)
    ref = {
        "a": [1, 2],
        "b": {"c": {"d": 1}},
        "e": 2,
        "h": 4,
        "i": {"j": {"k": 4}},
        "j": [{"k": 4}],
    }
    assert ref == dol
Beispiel #7
0
def test_set_value_fail():
    with pytest.raises(Exception):
        dol = {"a": [1, 2], "b": {"c": {"d": 1}, "e": 2}}
        set_value(dol, "a/g", 3)  # should raise