mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-05 15:28:27 +01:00
* move parsing params to utils * fix tests * move chunk_dict and test it * update test
61 lines
1.4 KiB
Python
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]
|