Skip to content

Commit

Permalink
add more tests for coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
tybug committed May 9, 2024
1 parent 4e435a8 commit df180d4
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 2 deletions.
7 changes: 5 additions & 2 deletions hypothesis-python/tests/conjecture/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -300,8 +300,11 @@ def draw_value(ir_type, kwargs):


@st.composite
def ir_nodes(draw, *, was_forced=None):
(ir_type, kwargs) = draw(ir_types_and_kwargs())
def ir_nodes(draw, *, was_forced=None, ir_type=None):
if ir_type is None:
(ir_type, kwargs) = draw(ir_types_and_kwargs())
else:
kwargs = draw(kwargs_strategy(ir_type))
# ir nodes don't include forced in their kwargs. see was_forced attribute
del kwargs["forced"]
value = draw_value(ir_type, kwargs)
Expand Down
13 changes: 13 additions & 0 deletions hypothesis-python/tests/conjecture/test_alt_backend.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
from hypothesis.internal.intervalsets import IntervalSet

from tests.common.debug import minimal
from tests.conjecture.common import ir_nodes


class PrngProvider(PrimitiveProvider):
Expand Down Expand Up @@ -245,6 +246,18 @@ def test_backend_can_shrink_floats():
assert f == 101.0


# mostly a shoehorned coverage test until the shrinker is migrated to the ir
# and calls cached_test_function_ir with backends consistently.
@given(ir_nodes())
def test_new_conjecture_data_ir_with_backend(node):
def test(data):
getattr(data, f"draw_{node.ir_type}")(**node.kwargs)

with temp_register_backend("prng", PrngProvider):
runner = ConjectureRunner(test, settings=settings(backend="prng"))
runner.cached_test_function_ir([node])


# trivial provider for tests which don't care about drawn distributions.
class TrivialProvider(PrimitiveProvider):
def draw_integer(self, *args, **kwargs):
Expand Down
15 changes: 15 additions & 0 deletions hypothesis-python/tests/conjecture/test_data_tree.py
Original file line number Diff line number Diff line change
Expand Up @@ -667,3 +667,18 @@ def test_misaligned_nodes_before_valid_draw(data):
cd.freeze()
assert cd.status is Status.VALID
assert cd.examples.ir_tree_nodes == [node]


@given(ir_nodes(was_forced=True, ir_type="float"))
def test_simulate_forced_floats(node):
tree = DataTree()

cd = ConjectureData.for_ir_tree([node], observer=tree.new_observer())
cd.draw_float(**node.kwargs, forced=node.value)
with pytest.raises(StopTest):
cd.conclude_test(Status.VALID)

cd = ConjectureData.for_ir_tree([node], observer=tree.new_observer())
tree.simulate_test_function(cd)
cd.freeze()
assert cd.examples.ir_tree_nodes == [node]
5 changes: 5 additions & 0 deletions hypothesis-python/tests/conjecture/test_ir.py
Original file line number Diff line number Diff line change
Expand Up @@ -928,3 +928,8 @@ def values(draw):
return getattr(data, f"draw_{node.ir_type}")(**node.kwargs)

assert ir_value_equal(node.ir_type, minimal(values()), node.value)


@given(ir_nodes())
def test_ir_node_is_hashable(ir_node):
hash(ir_node)

0 comments on commit df180d4

Please sign in to comment.