Example #1
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"
Example #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
Example #3
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]
Example #4
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
Example #5
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"
Example #6
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"
Example #7
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
Example #8
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"
Example #9
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
Example #10
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"
Example #11
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"
Example #12
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"
Example #13
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"]
Example #14
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]
Example #15
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
Example #16
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"