]> Cypherpunks repositories - keks.git/commitdiff
More set-related coverage
authorSergey Matveev <stargrave@stargrave.org>
Mon, 2 Dec 2024 16:00:16 +0000 (19:00 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Mon, 2 Dec 2024 16:00:16 +0000 (19:00 +0300)
pyac/tests/test_map.py

index 5e895b7327062b94e1ab8dfd2ce024a4ee068d14c6b7a072dde627045cd6eb73..ef99fae8a89d4763a037cb366d96486d7758a16b05481cf46b6f6bffc6b1283d 100644 (file)
@@ -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")