Skip to content

Instantly share code, notes, and snippets.

@pkhuong
Last active April 17, 2020 02:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pkhuong/719b0a27dcf5a0b14624f3cc4b0b4b86 to your computer and use it in GitHub Desktop.
Save pkhuong/719b0a27dcf5a0b14624f3cc4b0b4b86 to your computer and use it in GitHub Desktop.
"""Too many ways to generate pairs of two integers in ascending
order.
"""
from hypothesis import assume, given
import hypothesis.strategies as st
import unittest
class TestAscending(unittest.TestCase):
@given(a=st.integers(), b=st.integers())
def test_reject(self, a, b):
"""Reject uninteresting inputs at runtime."""
assume(a <= b)
assert a <= b
@given(a=st.integers(), b=st.integers())
def test_sort(self, a, b):
"""Re-sort values at runtime."""
a, b = min(a, b), max(a, b)
assert a <= b
@given(values=st.lists(st.integers(), min_size=2, max_size=2).map(sorted))
def test_sorted(self, values):
"""Directly generate sorted lists."""
a, b = values
assert a <= b
@given(a=st.integers(), data=st.data())
def test_dynamic_generation(self, a, data):
"""Draw dependent values dynamically"""
b = data.draw(st.integers(min_value=a))
assert a <= b
@given(
values=st.integers().flatmap(
lambda a: st.tuples(st.just(a), st.integers(min_value=a))
)
)
def test_nested_generation(self, values):
"""Create a strategy that's parameterised on generated values."""
a, b = values
assert a <= b
@given(a=st.integers(), delta=st.integers(min_value=0))
def test_reformulate(self, a, delta):
"""Ask for something else."""
b = a + delta
assert a <= b
if __name__ == "__main__":
unittest.main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment