File: test_fuzzing.py

package info (click to toggle)
python-cmaes 0.11.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 408 kB
  • sloc: python: 3,115; sh: 88; makefile: 4
file content (65 lines) | stat: -rw-r--r-- 2,125 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import hypothesis.extra.numpy as npst
import unittest
from hypothesis import given, settings, strategies as st

from cmaes import CMA, SepCMA


class TestFuzzing(unittest.TestCase):
    @settings(deadline=1800000)
    @given(
        data=st.data(),
    )
    def test_cma_tell(self, data):
        dim = data.draw(st.integers(min_value=2, max_value=100))
        mean = data.draw(npst.arrays(dtype=float, shape=dim))
        sigma = data.draw(st.floats(min_value=1e-16))
        n_iterations = data.draw(st.integers(min_value=1))
        try:
            optimizer = CMA(mean, sigma)
        except AssertionError:
            return
        popsize = optimizer.population_size
        for _ in range(n_iterations):
            tell_solutions = data.draw(
                st.lists(
                    st.tuples(npst.arrays(dtype=float, shape=dim), st.floats()),
                    min_size=popsize,
                    max_size=popsize,
                )
            )
            optimizer.ask()
            try:
                optimizer.tell(tell_solutions)
            except AssertionError:
                return
            optimizer.ask()

    @settings(deadline=1800000)
    @given(
        data=st.data(),
    )
    def test_sepcma_tell(self, data):
        dim = data.draw(st.integers(min_value=2, max_value=100))
        mean = data.draw(npst.arrays(dtype=float, shape=dim))
        sigma = data.draw(st.floats(min_value=1e-16))
        n_iterations = data.draw(st.integers(min_value=1))
        try:
            optimizer = SepCMA(mean, sigma)
        except AssertionError:
            return
        popsize = optimizer.population_size
        for _ in range(n_iterations):
            tell_solutions = data.draw(
                st.lists(
                    st.tuples(npst.arrays(dtype=float, shape=dim), st.floats()),
                    min_size=popsize,
                    max_size=popsize,
                )
            )
            optimizer.ask()
            try:
                optimizer.tell(tell_solutions)
            except AssertionError:
                return
            optimizer.ask()