Files
dvc/tests/unit/utils/test_collections.py
T
Saugat Pachhai f8200ca2b8 move parsing params to utils (#5259)
* move parsing params to utils

* fix tests

* move chunk_dict and test it

* update test
2021-01-13 13:36:49 +02:00

61 lines
1.4 KiB
Python

# pylint: disable=unidiomatic-typecheck
from dvc.utils.collections import apply_diff, chunk_dict
class MyDict(dict):
pass
class MyInt(int):
pass
def test_apply_diff_is_inplace():
dest = MyDict()
dest.attr = 42 # pylint: disable=attribute-defined-outside-init
apply_diff({}, dest)
assert type(dest) is MyDict, "Preserves class"
assert dest.attr == 42, "Preserves custom attrs"
def test_apply_diff_mapping():
src = {"a": 1}
dest = {"b": 2}
apply_diff(src, dest)
assert dest == src, "Adds and removes keys"
src = {"a": 1}
dest = {"a": MyInt(1)}
apply_diff(src, dest)
assert type(dest["a"]) is MyInt, "Does not replace equals"
src = {"d": {"a": 1}}
inner = {}
dest = {"d": inner}
apply_diff(src, dest)
assert dest["d"] is inner, "Updates inner dicts"
def test_apply_diff_seq():
src = [1]
dest = [MyInt(1)]
apply_diff(src, dest)
assert type(dest[0]) is MyInt, "Does not replace equals"
src = {"l": [1]}
inner = []
dest = {"l": inner}
apply_diff(src, dest)
assert dest["l"] is inner, "Updates inner lists"
def test_chunk_dict():
assert chunk_dict({}) == []
d = {"a": 1, "b": 2, "c": 3}
assert chunk_dict(d) == [{"a": 1}, {"b": 2}, {"c": 3}]
assert chunk_dict(d, 2) == [{"a": 1, "b": 2}, {"c": 3}]
assert chunk_dict(d, 3) == [d]
assert chunk_dict(d, 4) == [d]