Author: Ronan Lamy <ronan.l...@gmail.com>
Branch: union-side-effects-2
Changeset: r88353:76d338a9c8b1
Date: 2016-09-06 15:38 +0100
http://bitbucket.org/pypy/pypy/changeset/76d338a9c8b1/

Log:    Improve and simplify hypothesis tests

diff --git a/rpython/annotator/test/test_model.py 
b/rpython/annotator/test/test_model.py
--- a/rpython/annotator/test/test_model.py
+++ b/rpython/annotator/test/test_model.py
@@ -1,6 +1,6 @@
 import pytest
 
-from hypothesis import given
+from hypothesis import given, assume, settings
 from hypothesis import strategies as st
 
 from rpython.flowspace.model import Variable
@@ -165,27 +165,30 @@
     lambda st_ann: valid_unions(st_ann) | st.builds(SomeTuple, 
st.lists(st_ann)),
     max_leaves=3)
 
-@given(s=st_numeric)
+@given(s=st_annotation)
 def test_union_unary(s):
     assert union(s, s) == s
     assert union(s_ImpossibleValue, s) == s
 
-@given(s1=st_numeric, s2=st_numeric)
+@given(s1=st_annotation, s2=st_annotation)
 def test_commutativity_of_union_compatibility(s1, s2):
     assert compatible(s1, s2) == compatible(s2, s1)
 
-@given(st.tuples(st_annotation, st_annotation).filter(lambda t: 
compatible(*t)))
-def test_union_commutative(t):
-    s1, s2 = t
-    s_union = union(s1, s2)
+@given(st_annotation, st_annotation)
+def test_union_commutative(s1, s2):
+    try:
+        s_union = union(s1, s2)
+    except UnionError:
+        assume(False)
     assert union(s2, s1) == s_union
     assert s_union.contains(s1)
     assert s_union.contains(s2)
 
-@given(st.tuples(st_annotation, st_annotation, st_annotation).filter(
-    lambda t: compatible(t[0], t[1]) and compatible(t[1], t[2]) and 
compatible(t[0], t[2])))
-def test_union_associative(t):
-    s1, s2, s3 = t
+@pytest.mark.xfail
+@settings(max_examples=500)
+@given(st_annotation, st_annotation, st_annotation)
+def test_union_associative(s1, s2, s3):
+    assume(compatible(s1, s2) and compatible(union(s1, s2), s3))
     assert union(union(s1, s2), s3) == union(s1, union(s2, s3))
 
 
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to