Ejemplo n.º 1
0
def test_lexmin_of_mutated_regex_is_refutation(x, data):
    assume(rd.has_matches(x))

    accepting, transitions = rd.build_dfa(x)

    j = data.draw(st.integers(0, len(accepting) - 1))

    assume(transitions[j])
    c = data.draw(st.sampled_from(sorted(transitions[j])))
    transitions[j][c] = data.draw(st.integers(0, len(accepting) - 1))

    y = rd.decompile_dfa(accepting, transitions)

    assume(rd.has_matches(y))
    assume(not rd.equivalent(x, y))

    w = rd.lexmin(symdiff(x, y))
    assert w is not None
    assert w == rd.witness_difference(x, y)
Ejemplo n.º 2
0
def test_no_refutation_for_decompilation(re):
    dec = rd.decompile_dfa(*rd.build_dfa(re))
    assert rd.witness_difference(dec, re) is None
Ejemplo n.º 3
0
def test_lexmin_of_symmetric_difference_is_refutation(x, y):
    assume(not rd.equivalent(x, y))
    w = rd.lexmin(symdiff(x, y))
    assert w is not None
    assert w == rd.witness_difference(x, y)
Ejemplo n.º 4
0
def test_witness_difference_of_literals_is_smaller_of_two():
    assert rd.witness_difference(rd.literal(b'00'), rd.literal(b'01')) == b'00'
Ejemplo n.º 5
0
def test_difference_of_epsilon_and_non_nullable_is_epsilon():
    assert rd.witness_difference(rd.char(0), rd.Epsilon) is b''
Ejemplo n.º 6
0
def test_difference_of_same_is_none():
    x = rd.char(0)
    assert rd.witness_difference(x, x) is None