diff --git a/setup.py b/setup.py index 45fc517..41b6f54 100644 --- a/setup.py +++ b/setup.py @@ -25,7 +25,7 @@ setup( install_requires=["click", "click-default-group", "tabulate"], setup_requires=["pytest-runner"], extras_require={ - "test": ["pytest", "black"], + "test": ["pytest", "black", "hypothesis"], "docs": ["sphinx_rtd_theme", "sphinx-autobuild"], }, entry_points=""" diff --git a/tests/test_hypothesis.py b/tests/test_hypothesis.py new file mode 100644 index 0000000..5759c5e --- /dev/null +++ b/tests/test_hypothesis.py @@ -0,0 +1,43 @@ +from hypothesis import given +import hypothesis.strategies as st +import sqlite_utils + +# SQLite integers are -(2^63) to 2^63 - 1 +@given(st.integers(-9223372036854775808, 9223372036854775807)) +def test_roundtrip_integers(integer): + db = sqlite_utils.Database(memory=True) + row = { + "integer": integer, + } + db["test"].insert(row) + assert list(db["test"].rows) == [row] + + +@given(st.text()) +def test_roundtrip_text(text): + db = sqlite_utils.Database(memory=True) + row = { + "text": text, + } + db["test"].insert(row) + assert list(db["test"].rows) == [row] + + +@given(st.binary(max_size=1024 * 1024)) +def test_roundtrip_binary(binary): + db = sqlite_utils.Database(memory=True) + row = { + "binary": binary, + } + db["test"].insert(row) + assert list(db["test"].rows) == [row] + + +@given(st.floats(allow_nan=False)) +def test_roundtrip_floats(floats): + db = sqlite_utils.Database(memory=True) + row = { + "floats": floats, + } + db["test"].insert(row) + assert list(db["test"].rows) == [row]