Exemplo n.º 1
0
def test_callable():
    d = [
        {"a": 1, "b": 2, "c": 3},
        {"a": 1, "b": 4, "c": 6},
    ]

    d1 = qsdict(d, "a", lambda x: "Hello World", "b", "c")

    assert d1 == {
        1 : {
            "Hello World": {
                2: 3,
                4: 6
            }
        }
    }

    d2 = qsdict(d, "b", lambda x: x["a"] + 1,  "c")

    assert d2 == {
        2 : {
            2: 3
        },
        4 : {
            2: 6
        }
    }
Exemplo n.º 2
0
def test_qdict_3_level_nesting():
    d = [
        {"a": 1, "b": 2, "c": 3},
        {"a": 1, "b": 4, "c": 6},
    ]

    d1 = qsdict(d, "a", "b", "c")

    assert d1 == {
        1 : {
            2: 3,
            4: 6
        }
    }

    d2 = qsdict(d, "b", "a", "c")

    assert d2 == {
        2 : {
            1: 3
        },
        4 : {
            1: 6
        }
    }
Exemplo n.º 3
0
def test_qdict_overwrites_value_with_two_parameters():
    d = qsdict([
        {"a": "b", "c": "d"},
        {"a": "b", "c": "f"},
    ], "a", "c")

    assert d == {
        "b": "f"
    }
Exemplo n.º 4
0
def test_qdict_two_rows():
    d = qsdict([
        {"a": "b", "c": "d"},
        {"a": "c", "c": "e"},
    ], "a", "c")

    assert d == {
        "b": "d",
        "c": "e"
    }
Exemplo n.º 5
0
def test_object_properties():
    class TestClass:
        def __init__(self, a, b, c):
            self.a, self.b, self.c = a, b, c

    c1 = TestClass(1, 2, 3)
    c2 = TestClass(1, 4, 6)

    d = [c1, c2]

    d1 = qsdict(d, "a", "b", "c")

    assert d1 == {1: {2: 3, 4: 6}}
Exemplo n.º 6
0
def test_tuple():
    d = [
        {"a": 1, "b": 2, "c": 3, "d": 4},
        {"a": 1, "b": 4, "c": 6, "d": 8},
    ]

    d1 = qsdict(d, "a", "b", ("c", "d"))

    assert d1 == {
        1 : OrderedDict({
            2: [3, 4],
            4: [6, 8]
        })
    }

    T = namedtuple('T', ['x', 'y'])
    d2 = qsdict(d, "a", "b", T("c", "d"))

    assert d1 == {
        1 : OrderedDict({
            2: [3, 4],
            4: [6, 8]
        })
    }
Exemplo n.º 7
0
def test_long_input():
    d = [
        {"a": 1, "b": 2, "c": 3, "d": 4, "e": 5},
        {"a": 1, "b": 2, "c": 3, "d": 7, "e": 8},
    ]

    d1 = qsdict(d, "a", "b", "c", "d",  "e")

    assert d1 == {
        1: {
            2: {
                3: {
                    4: 5,
                    7: 8
                }
            }
        }
    }
Exemplo n.º 8
0
def test_qdict_no_arguments():
    with pytest.raises(ValueError):
        d = qsdict([])
Exemplo n.º 9
0
def test_with_int_arguments():
    d = qsdict([{1: 2, 3: 4}], 1, 3)
    assert d == {2: 4}
Exemplo n.º 10
0
def test_qdict_basic_input():
    d = qsdict([{"a": "b", "c": "d"}], "a", "c")
    assert d == {"b": "d"}
Exemplo n.º 11
0
def test_with_missing_parameters():
    d = qsdict([{"1": "2", "3": 4}], "1", "9")
    assert d == {"2": None}
Exemplo n.º 12
0
def test_qdict_more_than_one_argument():
    d = qsdict([], 1, 2, 3)
    assert d == {}