def test_tuple(): data = ('a', 1) kvr = KeyValueRegistry(data) assert kvr['a'] == 1 kvr = KeyValueRegistry(default=data) assert kvr['a'] == 1 assert kvr[None] == 1
def test_fn(): def fn(): return 1 kvr = KeyValueRegistry(fn) assert kvr[fn.__name__] == fn kvr = KeyValueRegistry(default=fn) assert kvr[fn.__name__] == fn assert kvr[None] == fn
def test_decorator(): kvr = KeyValueRegistry() @kvr def fn(): return 1 assert kvr[fn.__name__] == fn assert kvr[fn.__name__]() == fn()
def test_default(): kvr = KeyValueRegistry(default={'a': 1}) assert kvr.default == 'a' assert kvr[None] == 1
def test_dict_like(): """Test the basic to ensure similar to a dict""" data = {'a': 1, 'b': 2} kvr = KeyValueRegistry(data) assert data.keys() == kvr.keys() assert set(data.values()) == set(kvr.values()) assert kvr.get('a') == 1 assert kvr.get('c', 3) == 3 keys, values = zip(*kvr.items()) assert set(data.keys()) == set(keys) assert set(data.values()) == set(values) kvr_copy = kvr.copy() assert set(kvr_copy) == set(kvr) assert kvr.pop('a') == 1 assert kvr.pop('a', 3) == 3 assert kvr.popitem() == ('b', 2) with pytest.raises(KeyError): kvr.popitem() kvr = KeyValueRegistry() kvr.update(data) assert data.keys() == kvr.keys() assert set(data.values()) == set(kvr.values()) kvr.clear() assert len(kvr) == 0