コード例 #1
0
ファイル: find.py プロジェクト: adamchainz/conjecture
def find(draw, check, settings=None):
    seen = False

    def test_function(data):
        nonlocal seen
        value = draw(data)
        try:
            if DEBUG:
                print(data.buffer[:data.index], "->",  value)
            if check(value):
                seen = True
                data.incur_cost(len(repr(data)))
                data.mark_interesting()
            elif not seen and DEBUG:
                print(data.buffer[:data.index], "->",  value)
        except UnsatisfiedAssumption:
            data.mark_invalid()
    buffer = find_interesting_buffer(
        test_function, settings=settings or Settings(
            generations=5000,
        ))
    if buffer is not None:
        result = draw(TestData(buffer))
        assert check(result)
        return result
    raise NoSuchExample()
コード例 #2
0
ファイル: core.py プロジェクト: cfbolz/conjecture
 def new_buffer(self):
     buffer = os.urandom(
         self.fill_size) + bytes(self.settings.buffer_size - self.fill_size)
     self.last_data = TestData(buffer)
     self.test_function(self.last_data)
     self.last_data.freeze()
     self.update_fill_size()
コード例 #3
0
ファイル: core.py プロジェクト: cfbolz/conjecture
 def incorporate_new_buffer(self, buffer: bytes) -> bool:
     if buffer == self.last_data.buffer:
         return False
     data = TestData(buffer)
     self.test_function(data)
     data.freeze()
     if self.consider_new_test_data(data):
         if self.last_data.status == Status.INTERESTING:
             self.shrinks += 1
         self.last_data = data
         self.update_fill_size()
         self.changed += 1
         if self.shrinks >= self.settings.max_shrinks:
             raise StopShrinking()
         return True
     return False
コード例 #4
0
def find(draw, check, settings=None):
    def test_function(data):
        value = draw(data)
        if check(value):
            data.incur_cost(len(repr(data)))
            if DEBUG:
                print(data.buffer[:data.index], "->",  value)
            data.mark_interesting()
    buffer = find_interesting_buffer(
        test_function, settings=settings or Settings(
            mutations=50, generations=500,
        ))
    if buffer is not None:
        result = draw(TestData(buffer))
        assert check(result)
        return result
    raise NoSuchExample()
コード例 #5
0
ファイル: core.py プロジェクト: adamchainz/conjecture
 def new_buffer(self):
     buffer = self.rand_bytes(self.settings.buffer_size)
     self.last_data = TestData(buffer)
     self.test_function(self.last_data)
     self.last_data.freeze()