def test_detects_too_small_block_starts(): def f(data): data.draw_bytes(8) data.mark_interesting() runner = ConjectureRunner(f, settings=settings(database=None)) r = ConjectureData.for_buffer(hbytes(8)) runner.test_function(r) assert r.status == Status.INTERESTING assert not runner.prescreen_buffer(hbytes([255] * 7))
def test_prescreen_with_masked_byte_agrees_with_results(byte_a, byte_b): def f(data): data.draw_bits(2) runner = ConjectureRunner(f) data_a = ConjectureData.for_buffer(hbytes([byte_a])) data_b = ConjectureData.for_buffer(hbytes([byte_b])) runner.test_function(data_a) prescreen_b = runner.prescreen_buffer(hbytes([byte_b])) # Always test buffer B, to check whether the prescreen was correct. runner.test_function(data_b) # If the prescreen passed, then the buffers should be different. # If it failed, then the buffers should be the same. assert prescreen_b == (data_a.buffer != data_b.buffer)