diff options
author | rekby <rekby@ydb.tech> | 2023-12-14 16:56:50 +0300 |
---|---|---|
committer | rekby <rekby@ydb.tech> | 2023-12-14 18:09:44 +0300 |
commit | b2b2bb5997507072ca64548efe64447dd6395426 (patch) | |
tree | bbfbf77d11f1972c93ae4101fe561fd440d6ad6a /contrib/python/multidict/tests/test_update.py | |
parent | 8b8678a6a4f57c62e348cdad8afd3849011a5f11 (diff) | |
download | ydb-b2b2bb5997507072ca64548efe64447dd6395426.tar.gz |
KIKIMR-19900 switch arcadia to python ydb sdk from contrib
Этот PR создан скриптом - для переключения зависимостей на python ydb sdk с версии внутри ydb на код, приезжающий через контриб.
Код в обеих версиях одинаковый, так что поломок/изменения функционала на ожидается.
На всякий случай посмотрите свои проекты и если будут возражения пишите сюда в issues или в тикет KIKIMR-19900.
Если всё ок - шипните, для определённости.
При отсутствии блокеров PR будет перегенерирован и влит с force-мёрджем в четверг, 14 декабря.
Diffstat (limited to 'contrib/python/multidict/tests/test_update.py')
-rw-r--r-- | contrib/python/multidict/tests/test_update.py | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/contrib/python/multidict/tests/test_update.py b/contrib/python/multidict/tests/test_update.py new file mode 100644 index 0000000000..4bacdbce77 --- /dev/null +++ b/contrib/python/multidict/tests/test_update.py @@ -0,0 +1,147 @@ +from collections import deque + +import pytest + +from multidict._compat import USE_EXTENSIONS +from multidict._multidict_py import CIMultiDict as PyCIMultiDict +from multidict._multidict_py import MultiDict as PyMultiDict # noqa: E402 + +if USE_EXTENSIONS: + from multidict._multidict import CIMultiDict, MultiDict # type: ignore + + +@pytest.fixture( + params=([MultiDict, CIMultiDict] if USE_EXTENSIONS else []) + + [PyMultiDict, PyCIMultiDict], + ids=(["MultiDict", "CIMultiDict"] if USE_EXTENSIONS else []) + + ["PyMultiDict", "PyCIMultiDict"], +) +def cls(request): + return request.param + + +@pytest.fixture +def md_cls(_multidict): + return _multidict.MultiDict + + +@pytest.fixture +def ci_md_cls(_multidict): + return _multidict.CIMultiDict + + +@pytest.fixture +def istr(_multidict): + return _multidict.istr + + +def test_update_replace(cls): + obj1 = cls([("a", 1), ("b", 2), ("a", 3), ("c", 10)]) + obj2 = cls([("a", 4), ("b", 5), ("a", 6)]) + obj1.update(obj2) + expected = [("a", 4), ("b", 5), ("a", 6), ("c", 10)] + assert list(obj1.items()) == expected + + +def test_update_append(cls): + obj1 = cls([("a", 1), ("b", 2), ("a", 3), ("c", 10)]) + obj2 = cls([("a", 4), ("a", 5), ("a", 6)]) + obj1.update(obj2) + expected = [("a", 4), ("b", 2), ("a", 5), ("c", 10), ("a", 6)] + assert list(obj1.items()) == expected + + +def test_update_remove(cls): + obj1 = cls([("a", 1), ("b", 2), ("a", 3), ("c", 10)]) + obj2 = cls([("a", 4)]) + obj1.update(obj2) + expected = [("a", 4), ("b", 2), ("c", 10)] + assert list(obj1.items()) == expected + + +def test_update_replace_seq(cls): + obj1 = cls([("a", 1), ("b", 2), ("a", 3), ("c", 10)]) + obj2 = [("a", 4), ("b", 5), ("a", 6)] + obj1.update(obj2) + expected = [("a", 4), ("b", 5), ("a", 6), ("c", 10)] + assert list(obj1.items()) == expected + + +def test_update_replace_seq2(cls): + obj1 = cls([("a", 1), ("b", 2), ("a", 3), ("c", 10)]) + obj1.update([("a", 4)], b=5, a=6) + expected = [("a", 4), ("b", 5), ("a", 6), ("c", 10)] + assert list(obj1.items()) == expected + + +def test_update_append_seq(cls): + obj1 = cls([("a", 1), ("b", 2), ("a", 3), ("c", 10)]) + obj2 = [("a", 4), ("a", 5), ("a", 6)] + obj1.update(obj2) + expected = [("a", 4), ("b", 2), ("a", 5), ("c", 10), ("a", 6)] + assert list(obj1.items()) == expected + + +def test_update_remove_seq(cls): + obj1 = cls([("a", 1), ("b", 2), ("a", 3), ("c", 10)]) + obj2 = [("a", 4)] + obj1.update(obj2) + expected = [("a", 4), ("b", 2), ("c", 10)] + assert list(obj1.items()) == expected + + +def test_update_md(md_cls): + d = md_cls() + d.add("key", "val1") + d.add("key", "val2") + d.add("key2", "val3") + + d.update(key="val") + + assert [("key", "val"), ("key2", "val3")] == list(d.items()) + + +def test_update_istr_ci_md(ci_md_cls, istr): + d = ci_md_cls() + d.add(istr("KEY"), "val1") + d.add("key", "val2") + d.add("key2", "val3") + + d.update({istr("key"): "val"}) + + assert [("key", "val"), ("key2", "val3")] == list(d.items()) + + +def test_update_ci_md(ci_md_cls): + d = ci_md_cls() + d.add("KEY", "val1") + d.add("key", "val2") + d.add("key2", "val3") + + d.update(Key="val") + + assert [("Key", "val"), ("key2", "val3")] == list(d.items()) + + +def test_update_list_arg_and_kwds(cls): + obj = cls() + arg = [("a", 1)] + obj.update(arg, b=2) + assert list(obj.items()) == [("a", 1), ("b", 2)] + assert arg == [("a", 1)] + + +def test_update_tuple_arg_and_kwds(cls): + obj = cls() + arg = (("a", 1),) + obj.update(arg, b=2) + assert list(obj.items()) == [("a", 1), ("b", 2)] + assert arg == (("a", 1),) + + +def test_update_deque_arg_and_kwds(cls): + obj = cls() + arg = deque([("a", 1)]) + obj.update(arg, b=2) + assert list(obj.items()) == [("a", 1), ("b", 2)] + assert arg == deque([("a", 1)]) |