From: Sergey Matveev Date: Sat, 30 Nov 2024 16:15:18 +0000 (+0300) Subject: Add commonly used junk-generation strategy X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=5096bc4f867e4d2d6f0127980955949480bf42110958f8abf2b2d0e353e4f106;p=keks.git Add commonly used junk-generation strategy --- diff --git a/pyac/tests/strategies.py b/pyac/tests/strategies.py index b84dd7c..72fa859 100644 --- a/pyac/tests/strategies.py +++ b/pyac/tests/strategies.py @@ -13,6 +13,7 @@ from hypothesis.strategies import uuids from pyac import Blob +junk_st = binary(max_size=20) blobs_st = tuples(integers(1, 20), binary(max_size=60)).map(lambda x: Blob(*x)) unicode_allowed = characters(exclude_characters="\x00", exclude_categories=("Cs",)) text_st = text(alphabet=unicode_allowed, max_size=32) diff --git a/pyac/tests/test_blob.py b/pyac/tests/test_blob.py index 3aae82d..1289ca8 100644 --- a/pyac/tests/test_blob.py +++ b/pyac/tests/test_blob.py @@ -1,13 +1,13 @@ from unittest import TestCase from hypothesis import given -from hypothesis.strategies import binary from pyac import Blob from pyac import DecodeError from pyac import dumps from pyac import loads from pyac import NotEnoughData +from tests.strategies import junk_st class TestBlob(TestCase): @@ -18,7 +18,7 @@ class TestBlob(TestCase): encoded, b"\x0b\x00\x00\x00\x00\x00\x00\x00\x03\x01test\x01data\x80" ) - @given(binary(max_size=20)) + @given(junk_st) def test_blob_decode(self, junk: bytes) -> None: encoded = b"\x0B\x00\x00\x00\x00\x00\x00\x00\x03\x01test\x01data\x80" + junk decoded, remaining = loads(encoded) diff --git a/pyac/tests/test_bool.py b/pyac/tests/test_bool.py index c711a00..b9eb81b 100644 --- a/pyac/tests/test_bool.py +++ b/pyac/tests/test_bool.py @@ -1,10 +1,10 @@ from unittest import TestCase from hypothesis import given -from hypothesis.strategies import binary from pyac import dumps from pyac import loads +from tests.strategies import junk_st class TestBool(TestCase): @@ -18,14 +18,14 @@ class TestBool(TestCase): encoded = dumps(False) self.assertEqual(encoded, b"\x02") - @given(binary(max_size=20)) + @given(junk_st) def test_bool_decode_true(self, junk): encoded = b"\x03" + junk decoded, remaining = loads(encoded) self.assertIs(decoded, True) self.assertEqual(remaining, junk) - @given(binary(max_size=20)) + @given(junk_st) def test_bool_decode_false(self, junk): encoded = b"\x02" + junk decoded, remaining = loads(encoded) diff --git a/pyac/tests/test_list.py b/pyac/tests/test_list.py index 9d386b6..3367d2c 100644 --- a/pyac/tests/test_list.py +++ b/pyac/tests/test_list.py @@ -2,13 +2,13 @@ from typing import List from unittest import TestCase from hypothesis import given -from hypothesis.strategies import binary from hypothesis.strategies import lists from pyac import dumps from pyac import loads from pyac import NotEnoughData from tests.strategies import any_st +from tests.strategies import junk_st class TestList(TestCase): @@ -29,7 +29,7 @@ class TestList(TestCase): self.assertEqual(decoded, []) self.assertEqual(remaining, b"") - @given(lists(any_st, max_size=4), binary(max_size=20)) + @given(lists(any_st, max_size=4), junk_st) def test_list_decode_non_empty(self, test_list: List, junk: bytes) -> None: encoded = b"\x08" + b"".join(dumps(i) for i in test_list) + b"\x00" + junk decoded, remaining = loads(encoded) diff --git a/pyac/tests/test_map.py b/pyac/tests/test_map.py index 0d069ff..0e9215d 100644 --- a/pyac/tests/test_map.py +++ b/pyac/tests/test_map.py @@ -1,7 +1,6 @@ from unittest import TestCase from hypothesis import given -from hypothesis.strategies import binary from hypothesis.strategies import dictionaries from hypothesis.strategies import lists @@ -9,6 +8,7 @@ from pyac import DecodeError from pyac import dumps from pyac import loads from tests.strategies import any_st +from tests.strategies import junk_st from tests.strategies import mapkey_st @@ -28,7 +28,7 @@ class TestMap(TestCase): ) self.assertEqual(encoded, expected) - @given(dictionaries(keys=mapkey_st, values=any_st, max_size=4), binary(max_size=20)) + @given(dictionaries(keys=mapkey_st, values=any_st, max_size=4), junk_st) def test_map_decode(self, test_map, junk): encoded = ( b"\x09" + @@ -45,7 +45,7 @@ class TestMap(TestCase): self.assertEqual(decoded, test_map) self.assertEqual(remaining, junk) - @given(binary(max_size=20)) + @given(junk_st) def test_map_empty(self, junk): test_map = {} encoded = dumps(test_map) + junk @@ -55,7 +55,7 @@ class TestMap(TestCase): self.assertEqual(decoded, test_map) self.assertEqual(remaining, junk) - @given(lists(mapkey_st, max_size=4), binary(max_size=20)) + @given(lists(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 diff --git a/pyac/tests/test_symmetric.py b/pyac/tests/test_symmetric.py index 8468cc1..fc91b34 100644 --- a/pyac/tests/test_symmetric.py +++ b/pyac/tests/test_symmetric.py @@ -2,7 +2,6 @@ from typing import Any from unittest import TestCase from hypothesis import given -from hypothesis.strategies import binary from hypothesis.strategies import deferred from hypothesis.strategies import dictionaries from hypothesis.strategies import lists @@ -10,6 +9,7 @@ from hypothesis.strategies import lists from pyac import dumps from pyac import loads from tests.strategies import any_st +from tests.strategies import junk_st from tests.strategies import mapkey_st @@ -21,7 +21,7 @@ everything_st = deferred( class TestSymmetric(TestCase): - @given(everything_st, binary(max_size=20)) + @given(everything_st, junk_st) def test_symmetric(self, obj: Any, junk: bytes) -> None: encoded: bytes = dumps(obj) + junk decoded: Any diff --git a/pyac/tests/test_tai.py b/pyac/tests/test_tai.py index e117bef..1bcebf6 100644 --- a/pyac/tests/test_tai.py +++ b/pyac/tests/test_tai.py @@ -2,7 +2,6 @@ from datetime import datetime from unittest import TestCase from hypothesis import given -from hypothesis.strategies import binary from pyac import DecodeError from pyac import dumps @@ -11,6 +10,8 @@ from pyac import loads from pyac import NotEnoughData from pyac import Raw from pyac import TAI64Base +from tests.strategies import junk_st + TagTAI64 = 0x18 TagTAI64N = 0x19 @@ -48,7 +49,7 @@ DJB_Leapsecs = ( class TestTAI64(TestCase): - @given(binary(max_size=20)) + @given(junk_st) def test_encode_decode_tai64(self, junk: bytes) -> None: dt = datetime(2023, 10, 1, 12, 0, 0) encoded = dumps(dt) @@ -57,7 +58,7 @@ class TestTAI64(TestCase): self.assertEqual(dt, decoded) self.assertEqual(remaining, junk) - @given(binary(max_size=20)) + @given(junk_st) def test_encode_decode_tai64n(self, junk: bytes) -> None: dt = datetime(2023, 10, 1, 12, 0, 0, 123456) encoded = dumps(dt) + junk @@ -68,7 +69,7 @@ class TestTAI64(TestCase): self.assertEqual(dt, decoded) self.assertEqual(remaining, junk) - @given(binary(max_size=20)) + @given(junk_st) def test_decode_tai64na(self, junk: bytes) -> None: encoded = ( b"\x1A\x40\x00\x00\x00\x65\x19\x5f\x65\x07\x5b\xca\x00\x07\x5b\xca\x00" +