From: Sergey Matveev Date: Mon, 2 Dec 2024 16:00:16 +0000 (+0300) Subject: More set-related coverage X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=f55d38edbce265909cd9e7a1697bdb59ee6d8b0535ae19e78437939e233a64aa;p=keks.git More set-related coverage --- diff --git a/pyac/tests/test_map.py b/pyac/tests/test_map.py index 5e895b7..ef99fae 100644 --- a/pyac/tests/test_map.py +++ b/pyac/tests/test_map.py @@ -16,6 +16,7 @@ from typing import Any from typing import Mapping +from typing import Set from unittest import TestCase from hypothesis import given @@ -59,14 +60,6 @@ class TestMap(TestCase): self.assertEqual(decoded, test_map) self.assertSequenceEqual(tail, junk) - @given(sets(mapkey_st, max_size=4), junk_st) - def test_decode_to_set(self, keys, junk): - test_map = {key: None for key in keys} - encoded = dumps(test_map) + junk - decoded, tail = loads(encoded, sets=True) - self.assertSetEqual(decoded, keys) - self.assertSequenceEqual(tail, junk) - def test_throws_when_decoding_unsorted_value_keys(self): encoded = b"".join(( bytes.fromhex("09"), @@ -136,3 +129,19 @@ class TestMap(TestCase): with self.assertRaises(DecodeError) as err: decoded, tail = loads(encoded) self.assertEqual(str(err.exception), "empty key") + + +class TestSet(TestCase): + @given(sets(mapkey_st, max_size=4), junk_st) + def test_symmetric(self, values: Set[str], junk: bytes) -> None: + test_map = {key: None for key in values} + encoded = dumps(test_map) + decoded, tail = loads(encoded + junk, sets=True) + self.assertSetEqual(decoded, values) + self.assertSequenceEqual(tail, junk) + self.assertSequenceEqual(dumps(values), encoded) + + def test_non_str(self) -> None: + with self.assertRaises(ValueError) as err: + dumps(set((123,))) + self.assertEqual(str(err.exception), "set can contain only strings")