Ejemplo n.º 1
0
        track.pop()

    with pytest.raises(AssertionError):
        record_and_test_size()

    assert track[0] == example


def nary_tree_to_strategy(tree):
    if isinstance(tree, Leaf):
        return integers()
    else:
        return tuples(*map(nary_tree_to_strategy, tree.children))


dav_strategy = n_ary_tree(just(None), just(None),
                          just(None)).flatmap(nary_tree_to_strategy)


def test_will_find_a_failure_from_the_database():
    db = ExampleDatabase()

    class Rejected(Exception):
        pass

    @given(dav_strategy, settings=Settings(max_examples=10, database=db))
    def nope(x):
        print(x)
        raise Rejected()

    try:
        with pytest.raises(Rejected):
Ejemplo n.º 2
0
    TestIntBool = strategy_test_suite(tuples(integers(), booleans()))
    TestFloats = strategy_test_suite(floats())
    TestComplex = strategy_test_suite(complex_numbers())
    TestJust = strategy_test_suite(just('hi'))
    TestTemplates = strategy_test_suite(templates_for(sets(integers())))

    TestEmptyString = strategy_test_suite(text(alphabet=''))
    TestSingleString = strategy_test_suite(
        strategy(text(alphabet='a'), Settings(average_list_length=10.0)))
    TestManyString = strategy_test_suite(text(alphabet='abcdef☃'))

    Stuff = namedtuple('Stuff', ('a', 'b'))
    TestNamedTuple = strategy_test_suite(builds(Stuff, integers(), integers()))

    TestTrees = strategy_test_suite(
        n_ary_tree(integers(), integers(), integers()))

    TestMixedSets = strategy_test_suite(
        sets(one_of(integers(), booleans(), floats())))
    TestFrozenSets = strategy_test_suite(frozensets(booleans()))

    TestNestedSets = strategy_test_suite(
        frozensets(frozensets(complex_numbers(), max_size=2)))

    TestMisc1 = strategy_test_suite(
        fixed_dictionaries({(2, -374): frozensets(none())}))
    TestMisc2 = strategy_test_suite(
        fixed_dictionaries({b'': frozensets(integers())}))
    TestMisc3 = strategy_test_suite(tuples(sets(none() | text())))

    TestEmptyTuple = strategy_test_suite(tuples())
Ejemplo n.º 3
0
    with pytest.raises(AssertionError):
        record_and_test_size()

    assert track[0] == example


def nary_tree_to_strategy(tree):
    if isinstance(tree, Leaf):
        return integers()
    else:
        return tuples(*map(nary_tree_to_strategy, tree.children))


dav_strategy = n_ary_tree(just(None), just(None), just(None)).flatmap(
    nary_tree_to_strategy
)


def test_will_find_a_failure_from_the_database():
    db = ExampleDatabase()

    class Rejected(Exception):
        pass

    @given(
        dav_strategy,
        settings=Settings(max_examples=10, database=db))
    def nope(x):
        print(x)
        raise Rejected()
Ejemplo n.º 4
0
def smallest_tree(predicate):
    return minimal(n_ary_tree(integers(), integers(), integers()), predicate)
Ejemplo n.º 5
0
def test_serializes_arbitrary_trees(tree):
    strat = n_ary_tree(booleans(), booleans(), booleans())

    assert strat.from_basic(strat.to_basic(tree)) == tree
Ejemplo n.º 6
0
EvalledIntStream = streaming(integers()).map(lambda x: list(x[:5]) and x)

ABC = namedtuple(u'ABC', (u'a', u'b', u'c'))


def abc(x, y, z):
    return builds(ABC, x, y, z)

with Settings(average_list_length=10.0):
    standard_types = [
        basic(Bitfields),
        EvalledIntStream,
        lists(max_size=0), tuples(), sets(max_size=0), frozensets(max_size=0),
        fixed_dictionaries({}),
        n_ary_tree(booleans(), booleans(), booleans()),
        n_ary_tree(integers(), integers(), integers()),
        abc(booleans(), booleans(), booleans()),
        abc(booleans(), booleans(), integers()),
        templates_for(one_of(*map(just, hrange(10)))),
        fixed_dictionaries({u'a': integers(), u'b': booleans()}),
        dictionaries(booleans(), integers()),
        dictionaries(text(), booleans()),
        one_of(integers(), tuples(booleans())),
        sampled_from(range(10)),
        one_of(just(u'a'), just(u'b'), just(u'c')),
        sampled_from((u'a', u'b', u'c')),
        integers(),
        integers(min_value=3),
        integers(min_value=(-2 ** 32), max_value=(2 ** 64)),
        floats(), floats(min_value=-2.0, max_value=3.0),
Ejemplo n.º 7
0
def depth(tree):
    if isinstance(tree, Leaf):
        return 1
    else:
        if not tree.keyed_children:
            return 1
        return 1 + max(depth(v) for k, v in tree.keyed_children)


def test_deep_trees():
    tree = smallest_tree(lambda t: depth(t) >= 3)
    assert depth(tree) == 3
    while isinstance(tree, Branch):
        assert len(tree.keyed_children) == 1
        tree = tree.keyed_children[0][1]


def test_tree_minimizes_individual_branch_children():
    assert smallest_tree(
        lambda t: len(getattr(t, u'keyed_children', ())) > 1) == Branch(
            0, ((0, Leaf(0)), (0, Leaf(0))))


@given(n_ary_tree(booleans(), booleans(), booleans()),
       settings=Settings(max_examples=100))
def test_serializes_arbitrary_trees(tree):
    strat = n_ary_tree(booleans(), booleans(), booleans())

    assert strat.from_basic(strat.to_basic(tree)) == tree
Ejemplo n.º 8
0

def abc(x, y, z):
    return builds(ABC, x, y, z)


with Settings(average_list_length=10.0):
    standard_types = [
        basic(Bitfields),
        EvalledIntStream,
        lists(max_size=0),
        tuples(),
        sets(max_size=0),
        frozensets(max_size=0),
        fixed_dictionaries({}),
        n_ary_tree(booleans(), booleans(), booleans()),
        n_ary_tree(integers(), integers(), integers()),
        abc(booleans(), booleans(), booleans()),
        abc(booleans(), booleans(), integers()),
        templates_for(one_of(*map(just, hrange(10)))),
        fixed_dictionaries({u"a": integers(), u"b": booleans()}),
        dictionaries(booleans(), integers()),
        dictionaries(text(), booleans()),
        one_of(integers(), tuples(booleans())),
        sampled_from(range(10)),
        one_of(just(u"a"), just(u"b"), just(u"c")),
        sampled_from((u"a", u"b", u"c")),
        integers(),
        integers(min_value=3),
        integers(min_value=(-2 ** 32), max_value=(2 ** 64)),
        floats(),
Ejemplo n.º 9
0
    (fixed_dictionaries({True: sets(integers())}), []),
    (randoms(), []),
    (integers(), ''),
    (integers(), [0, '']),
    (text(), 'kittens'),
    (tuples(integers(), integers(), integers()), (1, 2)),
    (sampled_from((1, 2, 3)), 'fish'),
    (sampled_from((1, 2, 3)), 5),
    (sampled_from((1, 2, 3)), -2),
    (one_of(integers(), floats()), 1),
    (one_of(integers(), floats()), 'tv'),
    (one_of(integers(), floats()), [-2, 0]),
    (binary(), '1'),
    (floats(), -1),
    (lists(one_of(frozensets(floats()), frozensets(floats()))), [[8, 0], []]),
    (floats(), 252010555201342071294067021251680995120),
    (tuples(integers(), integers()), 10),
    (n_ary_tree(integers(), integers(), integers()), []),
    (n_ary_tree(integers(), integers(), integers()), [1, 2, 3, 4, 5]),
    (floats(1, 2), (0, floats().to_basic(float('nan')))),
    (floats(1, 2), floats().to_basic(float('nan'))),
    (floats(1), [0, floats().to_basic(float('nan'))]),
    (floats(1), [0, floats().to_basic(0.0)]),
    (floats(max_value=1), [0, floats().to_basic(float('nan'))]),
    (floats(max_value=1), [0, floats().to_basic(2.0)]),
])
def test_simple_data_validation(specifier, data):
    converter = strategy(specifier)
    with pytest.raises(BadData):
        converter.from_basic(data)
Ejemplo n.º 10
0
def test_serializes_arbitrary_trees(tree):
    strat = n_ary_tree(booleans(), booleans(), booleans())

    assert strat.from_basic(strat.to_basic(tree)) == tree
Ejemplo n.º 11
0
    TestFloats = strategy_test_suite(floats())
    TestComplex = strategy_test_suite(complex_numbers())
    TestJust = strategy_test_suite(just('hi'))
    TestTemplates = strategy_test_suite(templates_for(sets(integers())))

    TestEmptyString = strategy_test_suite(text(alphabet=''))
    TestSingleString = strategy_test_suite(strategy(
        text(alphabet='a'), Settings(average_list_length=10.0)))
    TestManyString = strategy_test_suite(text(alphabet='abcdef☃'))

    Stuff = namedtuple('Stuff', ('a', 'b'))
    TestNamedTuple = strategy_test_suite(
        builds(Stuff, integers(), integers()))

    TestTrees = strategy_test_suite(
        n_ary_tree(integers(), integers(), integers()))

    TestMixedSets = strategy_test_suite(sets(
        one_of(integers(), booleans(), floats())))
    TestFrozenSets = strategy_test_suite(frozensets(booleans()))

    TestNestedSets = strategy_test_suite(
        frozensets(frozensets(complex_numbers(), max_size=2)))

    TestMisc1 = strategy_test_suite(fixed_dictionaries(
        {(2, -374): frozensets(none())}))
    TestMisc2 = strategy_test_suite(fixed_dictionaries(
        {b'': frozensets(integers())}))
    TestMisc3 = strategy_test_suite(tuples(sets(none() | text())))

    TestEmptyTuple = strategy_test_suite(tuples())
Ejemplo n.º 12
0
def smallest_tree(predicate):
    return minimal(
        n_ary_tree(integers(), integers(), integers()), predicate
    )
Ejemplo n.º 13
0
    if isinstance(tree, Leaf):
        return 1
    else:
        if not tree.keyed_children:
            return 1
        return 1 + max(depth(v) for k, v in tree.keyed_children)


def test_deep_trees():
    tree = smallest_tree(lambda t: depth(t) >= 3)
    assert depth(tree) == 3
    while isinstance(tree, Branch):
        assert len(tree.keyed_children) == 1
        tree = tree.keyed_children[0][1]


def test_tree_minimizes_individual_branch_children():
    assert smallest_tree(
        lambda t: len(getattr(t, u'keyed_children', ())) > 1) == Branch(
            0, ((0, Leaf(0)), (0, Leaf(0)))
    )


@given(n_ary_tree(booleans(), booleans(), booleans()), settings=Settings(
    max_examples=100
))
def test_serializes_arbitrary_trees(tree):
    strat = n_ary_tree(booleans(), booleans(), booleans())

    assert strat.from_basic(strat.to_basic(tree)) == tree
Ejemplo n.º 14
0
def smallest_tree(predicate):
    return minimal(
        n_ary_tree(integers(), integers(), integers()), predicate,
        settings=Settings(database=None, max_examples=1000000),
    )
Ejemplo n.º 15
0
def smallest_tree(predicate):
    return minimal(
        n_ary_tree(integers(), integers(), integers()),
        predicate,
        settings=Settings(database=None, max_examples=1000000),
    )
Ejemplo n.º 16
0
    TestString = strategy_test_suite(text())
    BinaryString = strategy_test_suite(binary())
    TestIntBool = strategy_test_suite(tuples(integers(), booleans()))
    TestFloats = strategy_test_suite(floats())
    TestComplex = strategy_test_suite(complex_numbers())
    TestJust = strategy_test_suite(just("hi"))
    TestTemplates = strategy_test_suite(templates_for(sets(integers())))

    TestEmptyString = strategy_test_suite(text(alphabet=""))
    TestSingleString = strategy_test_suite(strategy(text(alphabet="a"), Settings(average_list_length=10.0)))
    TestManyString = strategy_test_suite(text(alphabet="abcdef☃"))

    Stuff = namedtuple("Stuff", ("a", "b"))
    TestNamedTuple = strategy_test_suite(builds(Stuff, integers(), integers()))

    TestTrees = strategy_test_suite(n_ary_tree(integers(), integers(), integers()))

    TestMixedSets = strategy_test_suite(sets(one_of(integers(), booleans(), floats())))
    TestFrozenSets = strategy_test_suite(frozensets(booleans()))

    TestNestedSets = strategy_test_suite(frozensets(frozensets(integers(), max_size=2)))

    TestMisc1 = strategy_test_suite(fixed_dictionaries({(2, -374): frozensets(none())}))
    TestMisc2 = strategy_test_suite(fixed_dictionaries({b"": frozensets(integers())}))
    TestMisc3 = strategy_test_suite(tuples(sets(none() | text())))

    TestEmptyTuple = strategy_test_suite(tuples())
    TestEmptyList = strategy_test_suite(lists(max_size=0))
    TestEmptySet = strategy_test_suite(sets(max_size=0))
    TestEmptyFrozenSet = strategy_test_suite(frozensets(max_size=0))
    TestEmptyDict = strategy_test_suite(fixed_dictionaries({}))