Exemple #1
0
def test_trie_dict_copy():
    t = Trie()
    t.put(['x'], 'value')
    t.put(['x', 'y'], 'value')
    clone = t.clone()
    assert t.flatten() == clone.flatten()
    assert t.to_json() == clone.to_json()
    assert _join_keys(t.keys([])) == _join_keys(clone.keys([]))
    assert _join_items(t.items([])) == _join_items(clone.items([]))
Exemple #2
0
def test_trie_dict_hypothesis():
    random.seed(0)
    trials = 10000
    size = 8
    key_len = 8
    for _ in range(trials):
        t = Trie()
        normal_dict = {}
        # insert
        num_keys = random.randint(0, size)
        for _ in range(num_keys):
            key = ''.join(
                random.choices('a0!///', k=random.randint(1, key_len)))
            value = str(random.randint(1, key_len))
            clean_key = '/'.join(split(key))
            t.put(split(key), value)
            normal_dict[clean_key] = value
            assert split(key) in t
            assert t.flatten() == normal_dict
            assert set(_join_items(t.items([]))) == set(normal_dict.items())
            assert set(_join_keys(t.keys([]))) == set(normal_dict.keys())
            assert len(t) == len(normal_dict)
        # clone
        clone = t.clone()
        assert t.flatten() == clone.flatten()
        assert t.to_json() == clone.to_json()
        assert _join_keys(t.keys([])) == _join_keys(clone.keys([]))
        assert _join_items(t.items([])) == _join_items(clone.items([]))
        # delete
        for key in list(normal_dict.keys()):
            del normal_dict[key]
            t.discard(split(key))
            assert split(key) not in t
            assert t.flatten() == normal_dict
            assert set(_join_items(t.items([]))) == set(normal_dict.items())
            assert set(_join_keys(t.keys([]))) == set(normal_dict.keys())
            assert len(t) == len(normal_dict)
Exemple #3
0
def test_trie_dict_del_key():
    t = Trie()
    t.put(['x'], 'value')
    assert t.discard(['x']) == 'value'
    assert t.flatten() == {}
Exemple #4
0
def test_trie_dict_del_nested_key():
    t = Trie()
    t.put(['x'], 'value1')
    t.put(['x', 'y'], 'value2')
    assert t.discard(['x', 'y']) == 'value2'
    assert t.flatten() == {'x': 'value1'}