def test_contract_filter_inline(n): assert -1 <= fulfill(invert)(n) <= 1
def test_no_vacuous_fulfill(f): with pytest.raises(InvalidArgument): fulfill(f)
from hypothesis import given from hypothesis.errors import InvalidArgument from hypothesis.strategies import builds, integers from hypothesis.extra.dpcontracts import fulfill def identity(x): return x @require('division is undefined for zero', lambda args: args.n != 0) def invert(n): return 1 / n @given(builds(fulfill(invert), integers())) def test_contract_filter_builds(x): assert -1 <= x <= 1 @given(integers()) def test_contract_filter_inline(n): assert -1 <= fulfill(invert)(n) <= 1 @pytest.mark.parametrize('f', [int, identity, lambda x: None]) def test_no_vacuous_fulfill(f): with pytest.raises(InvalidArgument): fulfill(f)