示例#1
0
def test_where_does_not_have_all():
    a = WD({"a": 1, "b": {"child": {"a": 1, "b": 2, "c": 3}}})
    b = a.where("child", "does not have all", ["a", "d"])
    assert len(b.keys()) == 1
    assert list(b.keys())[0] == "b"

    a = WD({"a": 1, "b": {"child": {"a": 1, "b": 2, "c": 3, "d": 4}}})
    b = a.where("child", "does not have all", ["a", "d"])
    assert len(b.keys()) == 0

    a = WD({
        "a": 1,
        "b": {
            "child": {
                "a": 1,
                "b": 2,
                "c": 3
            }
        },
        "bb": {
            "child": {
                "e": 1,
                "f": 2,
                "g": 3
            }
        }
    })
    b = a.where("child", "does not have all", ["a", "c"])
    assert len(b.keys()) == 1
    assert list(b.keys())[0] == "bb"
示例#2
0
def test_where_does_not_have():
    a = WD({"a": {"child": 1}, "b": {"child": [0, 1, 2]}, "c": {"child": "1"}})
    b = a.where("child", "does not have", 1)
    assert len(b.keys()) == 2
    assert len([key for key in b.keys() if key in ["a", "c"]]) == 2

    a = WD({
        "a": {
            "child1": "1"
        },
        "b": {
            "child2": {
                "g_child": [0]
            }
        },
        "bb": {
            "child2": {
                "g_child": [5]
            }
        },
        "c": {
            "child3": [5]
        },
    })
    b = a.where("*/g_child", "does not have", 5)
    assert len(b.keys()) == 1
    assert len([key for key in b.keys() if key in ["b"]]) == 1
示例#3
0
def test_where_has_all():
    a = WD({"a": 1, "b": {"child": {"a": 1, "b": 2, "c": 3}}})
    b = a.where("child", "has all", ["a", "d"])
    assert len(b.keys()) == 0

    a = WD({
        "a": 1,
        "b": {
            "child": {
                "a": 1,
                "b": 2,
                "c": 3
            }
        },
        "bb": {
            "child": {
                "e": 1,
                "f": 2,
                "g": 3
            }
        }
    })
    b = a.where("child", "has all", ["a", "c"])
    assert len(b.keys()) == 1
    assert list(b.keys())[0] == "b"
示例#4
0
def test_where_subset_of():
    a = WD({"a": 1, "b": {"child": {"a": 1, "b": 2, "c": 3}}})
    b = a.where("child", "subset of", ["a", "b", "c", "d"])
    assert len(b.keys()) == 1
    assert list(b.keys())[0] == "b"

    a = WD({"a": 1, "b": {"child": {"a": 1, "b": 2, "c": 3, "d": 4}}})
    b = a.where("child", "subset of", ["e", "f", "g"])
    assert len(b.keys()) == 0

    a = WD({
        "a": 1,
        "b": {
            "child": {
                "a": 1,
                "b": 2,
                "c": 3
            }
        },
        "bb": {
            "child": {
                "e": 1,
                "f": 2,
                "g": 3
            }
        }
    })
    b = a.where("child", "subset of", ["a", "b", "c", "e", "f"])
    assert len(b.keys()) == 1
    assert list(b.keys())[0] == "b"
示例#5
0
def test_int_int():
    a = WD({"a": 1})
    b = WD({"a": 2, "b": 2})
    c = a + b
    assert c["a"] == [1, 2]
    assert c["b"] == 2
    assert c.a == [1, 2]
    assert c.b == 2
示例#6
0
def test_float_float():
    a = WD({"a": 1.0})
    b = WD({"a": 2.0, "b": 2.0})
    c = a + b
    assert c["a"] == [1.0, 2.0]
    assert c["b"] == 2.0
    assert c.a == [1.0, 2.0]
    assert c.b == 2.0
示例#7
0
def test_sum():
    a = WD({"a": 1})
    b = WD({"a": 2, "b": 2})
    c = sum([a, b])
    assert c["a"] == [1, 2]
    assert c["b"] == 2
    assert c.a == [1, 2]
    assert c.b == 2
示例#8
0
def test_npy_npy():
    a = WD({"a": np.zeros(3, dtype=int)})
    b = WD({"a": np.ones(3, dtype=float), "b": {"c": {"d": 1}}})
    c = a + b
    assert c["a"] == [0, 0, 0, 1.0, 1.0, 1.0]
    assert c["b"]["c"]["d"] == 1
    assert c.a == [0, 0, 0, 1.0, 1.0, 1.0]
    assert c.b.c.d == 1
示例#9
0
def test_dict_dict():
    a = WD({"a": {"k": "1a"}})
    b = WD({"a": {"k": "1b"}, "b": {"c": {"d": 1}}})
    c = a + b
    assert c["a"]["k"] == ["1a", "1b"]
    assert c["b"]["c"]["d"] == 1
    assert c.a.k == ["1a", "1b"]
    assert c.b.c.d == 1
示例#10
0
def test_float_int():
    a = WD({"a": 1.0})
    b = WD({"a": 2, "b": 2})
    c = a + b
    assert c["a"] == [1.0, 2]
    assert c["b"] == 2
    assert c.a == [1.0, 2]
    assert c.b == 2
示例#11
0
def test_list_str():
    a = WD({"a": [1, 1, 1]})
    b = WD({"a": "str b", "b": {"c": {"d": 1}}})
    c = a + b
    assert c["a"] == [1, 1, 1, "str b"]
    assert c["b"]["c"]["d"] == 1
    assert c.a == [1, 1, 1, "str b"]
    assert c.b.c.d == 1
示例#12
0
def test_list_to_ndarray():
    a = WD(a=[0, 1])
    a.list_to_ndarray()
    b = WD(a=[0, 1], force_ndarray=True)
    assert a.a.tolist() == [0, 1]
    assert a["a"].tolist() == [0, 1]
    assert b.a.tolist() == [0, 1]
    assert b["a"].tolist() == [0, 1]
示例#13
0
def test_list_int():
    a = WD({"a": [1, 1, 1]})
    b = WD({"a": 7, "b": {"c": {"d": 1}}})
    c = a + b
    assert c["a"] == [1, 1, 1, 7]
    assert c["b"]["c"]["d"] == 1
    assert c.a == [1, 1, 1, 7]
    assert c.b.c.d == 1
示例#14
0
def test_npy_list():
    a = WD({"a": np.zeros(3, dtype=int)})
    b = WD({"a": [2.0, 2.0, 2.0], "b": {"c": {"d": 1}}})
    c = a + b
    assert c["a"] == [0, 0, 0, 2.0, 2.0, 2.0]
    assert c["b"]["c"]["d"] == 1
    assert c.a == [0, 0, 0, 2.0, 2.0, 2.0]
    assert c.b.c.d == 1
示例#15
0
def test_str_str():
    a = WD({"a": "str_a"})
    b = WD({"a": "str_b", "b": "str_b2"})
    c = a + b
    assert c["a"] == ["str_a", "str_b"]
    assert c["b"] == "str_b2"
    assert c.a == ["str_a", "str_b"]
    assert c.b == "str_b2"
示例#16
0
def test_where_lt():
    a = WD({"a": 1, "b": {"child": 1}})
    b = a.where("child", "<", 2)
    assert len(b.keys()) == 1
    assert list(b.keys())[0] == "b"

    a = WD({"a": 1, "b": {"child": 1}})
    b = a.where("child", "<", 1)
    assert len(b.keys()) == 0
示例#17
0
def test_str_int_list():
    a = WD({"a": "str 0"})
    b = WD({"a": 8, "b": {"c": {"d": 1}}})
    c = WD({"a": [9, 0]})
    d = a + b + c
    assert d["a"] == ["str 0", 8, 9, 0]
    assert d["b"]["c"]["d"] == 1
    assert d.a == ["str 0", 8, 9, 0]
    assert d.b.c.d == 1
示例#18
0
def test_where_neq():
    a = WD({"a": 1, "b": {"child": 1}})
    b = a.where("child", "!=", 1)
    assert len(b.keys()) == 0

    a = WD({"a": 1, "b": {"child": 1}})
    b = a.where("child", "!=", 0)
    assert len(b.keys()) == 1
    assert list(b.keys())[0] == "b"
示例#19
0
def test_dict_int():
    a = WD({"a": {"k": "1a"}})
    b = WD({"a": 1, "b": {"c": {"d": 1}}})
    c = a + b
    assert c["a"][0]["k"] == "1a"
    assert c["a"][1] == 1
    assert c["b"]["c"]["d"] == 1
    assert c.a[0].k == "1a"
    assert c.a[1] == 1
    assert c.b.c.d == 1
示例#20
0
def test_where_in():
    a = WD({"a": {"child": 1}, "b": {"child": [0, 1, 2]}, "c": {"child": "A"}})
    b = a.where("child", "in", ["A", 1])
    assert len(b.keys()) == 2
    assert len([key for key in b.keys() if key in ["a", "c"]]) == 2

    a = WD({"a": {"child": 1}, "b": {"child": [0, 1, 2]}, "c": {"child": "A"}})
    b = a.where("child", "in", "A")
    assert len(b.keys()) == 1
    assert len([key for key in b.keys() if key in ["c"]]) == 1
示例#21
0
def test_extract():
    a = WD({"a": 2, "b": 2, "c": 2})
    a = a.extract(["a", "c"])
    assert len(a.keys()) == 2
    assert len([key for key in a.keys() if key in ["a", "c"]]) == 2

    a = WD({"a": 2, "b": 2, "c": 2})
    a = a.extract(["a"])
    assert len(a.keys()) == 1
    assert list(a.keys())[0] == "a"
示例#22
0
def test_where_has():
    a = WD({"a": 1, "b": {"child": [0, 1, 2]}})
    b = a.where("child", "has", 1)
    assert len(b.keys()) == 1
    assert list(b.keys())[0] == "b"

    a = WD({"a": 1, "b": {"child": [0, 1, 2, 5]}, "bb": {"child": [0, 1, 2]}})
    b = a.where("child", "has", 5)
    assert len(b.keys()) == 1
    assert list(b.keys())[0] == "b"
示例#23
0
def test_str_int_list_update():
    a = WD({"a": "str 0"})
    b = WD({"a": 8, "b": {"c": {"d": 1}}})
    c = WD({"a": [9, 0]})
    d = a + b + c
    b["b"] = None
    a["a"] = None
    c["a"] = "None"
    assert d["a"] == ["str 0", 8, 9, 0]
    assert d["b"]["c"]["d"] == 1
    assert d.a == ["str 0", 8, 9, 0]
    assert d.b.c.d == 1
示例#24
0
def test_ndarray_to_list():
    a = WD(a=np.array([0, 1]))
    a.ndarray_to_list()
    b = WD(a=[0, 1], force_ndarray=True)
    b.ndarray_to_list()
    assert isinstance(a.a, list)
    assert isinstance(a["a"], list)
    assert isinstance(b.a, list)
    assert isinstance(b["a"], list)
    assert a.a == [0, 1]
    assert a["a"] == [0, 1]
    assert b.a == [0, 1]
    assert b["a"] == [0, 1]
示例#25
0
def test_mul():
    a = WD({"a": 1})
    b = list(a * 2)
    assert b[0]["a"] == 1
    assert b[0].a == 1
    assert b[1]["a"] == 1
    assert b[1].a == 1
示例#26
0
def test_extract_child():
    a = WD({
        "a": {
            "1": {
                "2": {
                    "3": "A",
                    "33": "A"
                }
            }
        },
        "b": {
            "1": {
                "2": {
                    "3": "A",
                    "33": "A"
                }
            }
        },
        "c": {
            "1": {
                "2c": {
                    "3": "C",
                    "33": "A"
                }
            }
        },
        "d": {
            "1": {
                "2d": {
                    "3": "D",
                    "33": "A"
                }
            }
        }
    })
    # print(a.extract_child("1/2/3"))
    assert len([
        key for key in a.extract_child("1/2/3").keys() if key in ["a", "b"]
    ]) == 2
    assert len([
        key for key in a.extract_child("1/*/3").keys()
        if key in ["a", "b", "c", "d"]
    ]) == 4
示例#27
0
def test_where_eq():
    a = WD({
        "a": 1,
        "b": {
            "child": {
                "gchild": 1,
                "a": 1
            },
            "son": {
                "gchild": 0
            }
        },
        "c": {
            "child": 1
        }
    })
    b = a.where("*/gchild", "==", 1)
    print(b)
    assert len(b.keys()) == 1
    assert list(b.keys())[0] == "b"
示例#28
0
def test_get_keys():
    a = WD({
        "a": {
            "1": {
                "2": {
                    "3": "A"
                }
            }
        },
        "b": {
            "1": {
                "2": {
                    "3": "A"
                }
            }
        },
        "c": {
            "1": {
                "2": {
                    "3": "C"
                }
            }
        },
        "d": {
            "1": {
                "22": {
                    "33": "D"
                }
            }
        }
    })
    assert len(list(a.get_child_keys("1/2/3"))) == 0
    assert list(a.get_child_keys("1/2")) == ["3"]
    assert list(a.get_child_keys("1")) == ["2", "22"] or \
           list(a.get_child_keys("1")) == ["2", "22"][::-1]
    assert list(a.get_child_keys()) == ["1"]
示例#29
0
def test_drop():
    a = WD({
        "a": {
            "1": {
                "2": {
                    "3": "A"
                }
            }
        },
        "b": {
            "1": {
                "2": {
                    "3": "A"
                }
            }
        },
        "c": {
            "1": {
                "2": {
                    "3": "C"
                }
            }
        }
    })
    b = a.drop(0)
    assert b["1"]["2"]["3"] == ["A", "A", "C"]
    b = a.drop(1)
    b = b.where("2/3", "in", ["A"])
    assert len([key for key in b.keys() if key in ["a", "b"]]) == 2
    b = a.drop(2)
    b = b.where("1/3", "in", ["C"])
    assert len(b.keys()) == 1
    assert list(b.keys())[0] == "c"
    a = WD({
        "a": {
            "1": {
                "2": {
                    "3": "A"
                }
            }
        },
        "b": {
            "1": {
                "2": {
                    "3": "A"
                }
            },
            "11": {
                "2": {
                    "3": "A"
                }
            }
        },
        "c": {
            "1": {
                "2": {
                    "3": "C"
                }
            }
        }
    })
    b = a.drop(1)
    b = b.where("2/3", "has", "A")
    assert len([key for key in b.keys() if key in ["a", "b"]]) == 2
示例#30
0
def test_has_child():
    a = WD({
        "a": {
            "child": 1
        },
        "b": {
            "son": 1
        },
        "c": {
            "daughter": {
                "g_daughter": {
                    "gg_daughter": 1
                }
            }
        }
    })
    b = a.has_child("son")
    assert len(b.keys()) == 1
    assert list(b.keys())[0] == "b"

    b = a.has_child("*/g_daughter/gg_daughter")
    assert len(b.keys()) == 1
    assert list(b.keys())[0] == "c"

    b = a.has_child("*/*/*")
    assert len(b.keys()) == 1
    assert list(b.keys())[0] == "c"

    b = a.has_child("daughter/g_daughter/gg_daughter")
    assert len(b.keys()) == 1
    assert list(b.keys())[0] == "c"

    a = WD({"a": {"child": 1}, "b": {"son": 1}})
    b = a.has_child("*")
    assert len(b.keys()) == 2
    assert len([key for key in b.keys() if key in ["a", "b"]]) == 2

    a = WD({
        "a": {
            "child": {
                "g_child": 1
            }
        },
        "b": {
            "son": {
                "g_daughter": {
                    "gg_son": 1
                }
            }
        },
        "c": {
            "daughter": {
                "g_daughter": {
                    "gg_daughter": 1
                }
            }
        }
    })

    b = a.has_child("*")
    assert len(b.keys()) == 3

    b = a.has_child("*/g_daughter")
    assert len(b.keys()) == 2
    assert len([key for key in b.keys() if key in ["b", "c"]]) == 2

    b = a.has_child("*/*/gg_son")
    assert len(b.keys()) == 1
    assert list(b.keys())[0] == "b"