testgenie-py 0.1.6__py3-none-any.whl → 0.1.7__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. testgen/.coverage +0 -0
  2. testgen/analyzer/random_feedback_analyzer.py +3 -3
  3. testgen/code_to_test/__init__.py +0 -0
  4. testgen/code_to_test/boolean.py +146 -0
  5. testgen/code_to_test/calculator.py +29 -0
  6. testgen/code_to_test/code_to_fuzz.py +234 -0
  7. testgen/code_to_test/code_to_fuzz_lite.py +397 -0
  8. testgen/code_to_test/decisions.py +57 -0
  9. testgen/code_to_test/math_utils.py +47 -0
  10. testgen/code_to_test/no_types.py +35 -0
  11. testgen/code_to_test/sample_code_bin.py +141 -0
  12. testgen/controller/cli_controller.py +119 -99
  13. testgen/controller/docker_controller.py +34 -19
  14. testgen/docker/Dockerfile +2 -2
  15. testgen/docker/poetry.lock +246 -8
  16. testgen/docker/pyproject.toml +9 -2
  17. testgen/q_table/global_q_table.json +1 -1
  18. testgen/reinforcement/environment.py +42 -10
  19. testgen/reinforcement/statement_coverage_state.py +1 -1
  20. testgen/service/analysis_service.py +8 -2
  21. testgen/service/cfg_service.py +1 -1
  22. testgen/service/generator_service.py +11 -3
  23. testgen/service/logging_service.py +100 -0
  24. testgen/service/service.py +81 -41
  25. testgen/testgen.db +0 -0
  26. testgen/util/coverage_utils.py +41 -14
  27. testgen/util/coverage_visualizer.py +2 -2
  28. testgen/util/file_utils.py +46 -0
  29. testgen/util/randomizer.py +27 -12
  30. testgen/util/z3_utils/z3_test_case.py +26 -11
  31. {testgenie_py-0.1.6.dist-info → testgenie_py-0.1.7.dist-info}/METADATA +1 -1
  32. {testgenie_py-0.1.6.dist-info → testgenie_py-0.1.7.dist-info}/RECORD +34 -22
  33. {testgenie_py-0.1.6.dist-info → testgenie_py-0.1.7.dist-info}/WHEEL +0 -0
  34. {testgenie_py-0.1.6.dist-info → testgenie_py-0.1.7.dist-info}/entry_points.txt +0 -0
@@ -1,4 +1,4 @@
1
- # This file is automatically @generated by Poetry 1.8.4 and should not be changed by hand.
1
+ # This file is automatically @generated by Poetry 2.1.2 and should not be changed by hand.
2
2
 
3
3
  [[package]]
4
4
  name = "astor"
@@ -6,6 +6,7 @@ version = "0.8.1"
6
6
  description = "Read/rewrite/write Python ASTs"
7
7
  optional = false
8
8
  python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7"
9
+ groups = ["main"]
9
10
  files = [
10
11
  {file = "astor-0.8.1-py2.py3-none-any.whl", hash = "sha256:070a54e890cefb5b3739d19f30f5a5ec840ffc9c50ffa7d23cc9fc1a38ebbfc5"},
11
12
  {file = "astor-0.8.1.tar.gz", hash = "sha256:6a6effda93f4e1ce9f618779b2dd1d9d84f1e32812c23a29b3fff6fd7f63fa5e"},
@@ -17,6 +18,7 @@ version = "2.3.0"
17
18
  description = "A coverage-guided fuzzer for Python and Python extensions."
18
19
  optional = false
19
20
  python-versions = "*"
21
+ groups = ["main"]
20
22
  files = [
21
23
  {file = "atheris-2.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91cb296d60915c3efa4f6db48f09c4678b574cddb7ca98035f1cb9d9fb96f64"},
22
24
  {file = "atheris-2.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4e43d1ee4760916a84ff73c9c6cf9ac6eee80fc030479bbed43fe0b8e994981"},
@@ -27,12 +29,128 @@ files = [
27
29
  {file = "atheris-2.3.0.tar.gz", hash = "sha256:cf1fdf5fa220a41a2f262b32363fc566549502b2cb0addf4e1baad5531c0e825"},
28
30
  ]
29
31
 
32
+ [[package]]
33
+ name = "certifi"
34
+ version = "2025.1.31"
35
+ description = "Python package for providing Mozilla's CA Bundle."
36
+ optional = false
37
+ python-versions = ">=3.6"
38
+ groups = ["main"]
39
+ files = [
40
+ {file = "certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe"},
41
+ {file = "certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651"},
42
+ ]
43
+
44
+ [[package]]
45
+ name = "charset-normalizer"
46
+ version = "3.4.1"
47
+ description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
48
+ optional = false
49
+ python-versions = ">=3.7"
50
+ groups = ["main"]
51
+ files = [
52
+ {file = "charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de"},
53
+ {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176"},
54
+ {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037"},
55
+ {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f"},
56
+ {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a"},
57
+ {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a"},
58
+ {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247"},
59
+ {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408"},
60
+ {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb"},
61
+ {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d"},
62
+ {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807"},
63
+ {file = "charset_normalizer-3.4.1-cp310-cp310-win32.whl", hash = "sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f"},
64
+ {file = "charset_normalizer-3.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f"},
65
+ {file = "charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125"},
66
+ {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1"},
67
+ {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3"},
68
+ {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd"},
69
+ {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00"},
70
+ {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12"},
71
+ {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77"},
72
+ {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146"},
73
+ {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd"},
74
+ {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6"},
75
+ {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8"},
76
+ {file = "charset_normalizer-3.4.1-cp311-cp311-win32.whl", hash = "sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b"},
77
+ {file = "charset_normalizer-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76"},
78
+ {file = "charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545"},
79
+ {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7"},
80
+ {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757"},
81
+ {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa"},
82
+ {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d"},
83
+ {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616"},
84
+ {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b"},
85
+ {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d"},
86
+ {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a"},
87
+ {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9"},
88
+ {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1"},
89
+ {file = "charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35"},
90
+ {file = "charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f"},
91
+ {file = "charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda"},
92
+ {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313"},
93
+ {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9"},
94
+ {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b"},
95
+ {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11"},
96
+ {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f"},
97
+ {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd"},
98
+ {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2"},
99
+ {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886"},
100
+ {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601"},
101
+ {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd"},
102
+ {file = "charset_normalizer-3.4.1-cp313-cp313-win32.whl", hash = "sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407"},
103
+ {file = "charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971"},
104
+ {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f30bf9fd9be89ecb2360c7d94a711f00c09b976258846efe40db3d05828e8089"},
105
+ {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:97f68b8d6831127e4787ad15e6757232e14e12060bec17091b85eb1486b91d8d"},
106
+ {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7974a0b5ecd505609e3b19742b60cee7aa2aa2fb3151bc917e6e2646d7667dcf"},
107
+ {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc54db6c8593ef7d4b2a331b58653356cf04f67c960f584edb7c3d8c97e8f39e"},
108
+ {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:311f30128d7d333eebd7896965bfcfbd0065f1716ec92bd5638d7748eb6f936a"},
109
+ {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:7d053096f67cd1241601111b698f5cad775f97ab25d81567d3f59219b5f1adbd"},
110
+ {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:807f52c1f798eef6cf26beb819eeb8819b1622ddfeef9d0977a8502d4db6d534"},
111
+ {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:dccbe65bd2f7f7ec22c4ff99ed56faa1e9f785482b9bbd7c717e26fd723a1d1e"},
112
+ {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:2fb9bd477fdea8684f78791a6de97a953c51831ee2981f8e4f583ff3b9d9687e"},
113
+ {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:01732659ba9b5b873fc117534143e4feefecf3b2078b0a6a2e925271bb6f4cfa"},
114
+ {file = "charset_normalizer-3.4.1-cp37-cp37m-win32.whl", hash = "sha256:7a4f97a081603d2050bfaffdefa5b02a9ec823f8348a572e39032caa8404a487"},
115
+ {file = "charset_normalizer-3.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:7b1bef6280950ee6c177b326508f86cad7ad4dff12454483b51d8b7d673a2c5d"},
116
+ {file = "charset_normalizer-3.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ecddf25bee22fe4fe3737a399d0d177d72bc22be6913acfab364b40bce1ba83c"},
117
+ {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c60ca7339acd497a55b0ea5d506b2a2612afb2826560416f6894e8b5770d4a9"},
118
+ {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b7b2d86dd06bfc2ade3312a83a5c364c7ec2e3498f8734282c6c3d4b07b346b8"},
119
+ {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd78cfcda14a1ef52584dbb008f7ac81c1328c0f58184bf9a84c49c605002da6"},
120
+ {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e27f48bcd0957c6d4cb9d6fa6b61d192d0b13d5ef563e5f2ae35feafc0d179c"},
121
+ {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01ad647cdd609225c5350561d084b42ddf732f4eeefe6e678765636791e78b9a"},
122
+ {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:619a609aa74ae43d90ed2e89bdd784765de0a25ca761b93e196d938b8fd1dbbd"},
123
+ {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:89149166622f4db9b4b6a449256291dc87a99ee53151c74cbd82a53c8c2f6ccd"},
124
+ {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:7709f51f5f7c853f0fb938bcd3bc59cdfdc5203635ffd18bf354f6967ea0f824"},
125
+ {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:345b0426edd4e18138d6528aed636de7a9ed169b4aaf9d61a8c19e39d26838ca"},
126
+ {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0907f11d019260cdc3f94fbdb23ff9125f6b5d1039b76003b5b0ac9d6a6c9d5b"},
127
+ {file = "charset_normalizer-3.4.1-cp38-cp38-win32.whl", hash = "sha256:ea0d8d539afa5eb2728aa1932a988a9a7af94f18582ffae4bc10b3fbdad0626e"},
128
+ {file = "charset_normalizer-3.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:329ce159e82018d646c7ac45b01a430369d526569ec08516081727a20e9e4af4"},
129
+ {file = "charset_normalizer-3.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b97e690a2118911e39b4042088092771b4ae3fc3aa86518f84b8cf6888dbdb41"},
130
+ {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78baa6d91634dfb69ec52a463534bc0df05dbd546209b79a3880a34487f4b84f"},
131
+ {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a2bc9f351a75ef49d664206d51f8e5ede9da246602dc2d2726837620ea034b2"},
132
+ {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75832c08354f595c760a804588b9357d34ec00ba1c940c15e31e96d902093770"},
133
+ {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0af291f4fe114be0280cdd29d533696a77b5b49cfde5467176ecab32353395c4"},
134
+ {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0167ddc8ab6508fe81860a57dd472b2ef4060e8d378f0cc555707126830f2537"},
135
+ {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2a75d49014d118e4198bcee5ee0a6f25856b29b12dbf7cd012791f8a6cc5c496"},
136
+ {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:363e2f92b0f0174b2f8238240a1a30142e3db7b957a5dd5689b0e75fb717cc78"},
137
+ {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ab36c8eb7e454e34e60eb55ca5d241a5d18b2c6244f6827a30e451c42410b5f7"},
138
+ {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4c0907b1928a36d5a998d72d64d8eaa7244989f7aaaf947500d3a800c83a3fd6"},
139
+ {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:04432ad9479fa40ec0f387795ddad4437a2b50417c69fa275e212933519ff294"},
140
+ {file = "charset_normalizer-3.4.1-cp39-cp39-win32.whl", hash = "sha256:3bed14e9c89dcb10e8f3a29f9ccac4955aebe93c71ae803af79265c9ca5644c5"},
141
+ {file = "charset_normalizer-3.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:49402233c892a461407c512a19435d1ce275543138294f7ef013f0b63d5d3765"},
142
+ {file = "charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85"},
143
+ {file = "charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3"},
144
+ ]
145
+
30
146
  [[package]]
31
147
  name = "colorama"
32
148
  version = "0.4.6"
33
149
  description = "Cross-platform colored terminal text."
34
150
  optional = false
35
151
  python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
152
+ groups = ["main"]
153
+ markers = "sys_platform == \"win32\""
36
154
  files = [
37
155
  {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
38
156
  {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
@@ -44,6 +162,7 @@ version = "1.7"
44
162
  description = "A drop-in replacement for argparse that allows options to also be set via config files and/or environment variables."
45
163
  optional = false
46
164
  python-versions = ">=3.5"
165
+ groups = ["main"]
47
166
  files = [
48
167
  {file = "ConfigArgParse-1.7-py3-none-any.whl", hash = "sha256:d249da6591465c6c26df64a9f73d2536e743be2f244eb3ebe61114af2f94f86b"},
49
168
  {file = "ConfigArgParse-1.7.tar.gz", hash = "sha256:e7067471884de5478c58a511e529f0f9bd1c66bfef1dea90935438d6c23306d1"},
@@ -59,6 +178,7 @@ version = "7.6.4"
59
178
  description = "Code coverage measurement for Python"
60
179
  optional = false
61
180
  python-versions = ">=3.9"
181
+ groups = ["main"]
62
182
  files = [
63
183
  {file = "coverage-7.6.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5f8ae553cba74085db385d489c7a792ad66f7f9ba2ee85bfa508aeb84cf0ba07"},
64
184
  {file = "coverage-7.6.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8165b796df0bd42e10527a3f493c592ba494f16ef3c8b531288e3d0d72c1f6f0"},
@@ -125,7 +245,30 @@ files = [
125
245
  ]
126
246
 
127
247
  [package.extras]
128
- toml = ["tomli"]
248
+ toml = ["tomli ; python_full_version <= \"3.11.0a6\""]
249
+
250
+ [[package]]
251
+ name = "docker"
252
+ version = "7.1.0"
253
+ description = "A Python library for the Docker Engine API."
254
+ optional = false
255
+ python-versions = ">=3.8"
256
+ groups = ["main"]
257
+ files = [
258
+ {file = "docker-7.1.0-py3-none-any.whl", hash = "sha256:c96b93b7f0a746f9e77d325bcfb87422a3d8bd4f03136ae8a85b37f1898d5fc0"},
259
+ {file = "docker-7.1.0.tar.gz", hash = "sha256:ad8c70e6e3f8926cb8a92619b832b4ea5299e2831c14284663184e200546fa6c"},
260
+ ]
261
+
262
+ [package.dependencies]
263
+ pywin32 = {version = ">=304", markers = "sys_platform == \"win32\""}
264
+ requests = ">=2.26.0"
265
+ urllib3 = ">=1.26.0"
266
+
267
+ [package.extras]
268
+ dev = ["coverage (==7.2.7)", "pytest (==7.4.2)", "pytest-cov (==4.1.0)", "pytest-timeout (==2.1.0)", "ruff (==0.1.8)"]
269
+ docs = ["myst-parser (==0.18.0)", "sphinx (==5.1.1)"]
270
+ ssh = ["paramiko (>=2.4.3)"]
271
+ websockets = ["websocket-client (>=1.3.0)"]
129
272
 
130
273
  [[package]]
131
274
  name = "exceptiongroup"
@@ -133,6 +276,8 @@ version = "1.2.2"
133
276
  description = "Backport of PEP 654 (exception groups)"
134
277
  optional = false
135
278
  python-versions = ">=3.7"
279
+ groups = ["main"]
280
+ markers = "python_version == \"3.10\""
136
281
  files = [
137
282
  {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"},
138
283
  {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"},
@@ -147,6 +292,7 @@ version = "0.20.3"
147
292
  description = "Simple Python interface for Graphviz"
148
293
  optional = false
149
294
  python-versions = ">=3.8"
295
+ groups = ["main"]
150
296
  files = [
151
297
  {file = "graphviz-0.20.3-py3-none-any.whl", hash = "sha256:81f848f2904515d8cd359cc611faba817598d2feaac4027b266aa3eda7b3dde5"},
152
298
  {file = "graphviz-0.20.3.zip", hash = "sha256:09d6bc81e6a9fa392e7ba52135a9d49f1ed62526f96499325930e87ca1b5925d"},
@@ -157,15 +303,31 @@ dev = ["flake8", "pep8-naming", "tox (>=3)", "twine", "wheel"]
157
303
  docs = ["sphinx (>=5,<7)", "sphinx-autodoc-typehints", "sphinx-rtd-theme"]
158
304
  test = ["coverage", "pytest (>=7,<8.1)", "pytest-cov", "pytest-mock (>=3)"]
159
305
 
306
+ [[package]]
307
+ name = "idna"
308
+ version = "3.10"
309
+ description = "Internationalized Domain Names in Applications (IDNA)"
310
+ optional = false
311
+ python-versions = ">=3.6"
312
+ groups = ["main"]
313
+ files = [
314
+ {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"},
315
+ {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"},
316
+ ]
317
+
318
+ [package.extras]
319
+ all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"]
320
+
160
321
  [[package]]
161
322
  name = "iniconfig"
162
- version = "2.1.0"
323
+ version = "2.0.0"
163
324
  description = "brain-dead simple config-ini parsing"
164
325
  optional = false
165
- python-versions = ">=3.8"
326
+ python-versions = ">=3.7"
327
+ groups = ["main"]
166
328
  files = [
167
- {file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760"},
168
- {file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7"},
329
+ {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"},
330
+ {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"},
169
331
  ]
170
332
 
171
333
  [[package]]
@@ -174,6 +336,7 @@ version = "0.6.3"
174
336
  description = "Automatic test case generation and static analysis library"
175
337
  optional = false
176
338
  python-versions = ">=3.6.2,<4.0"
339
+ groups = ["main"]
177
340
  files = [
178
341
  {file = "klara-0.6.3-py3-none-any.whl", hash = "sha256:9687fb2503e0d0ae1ecc789d88af46d4008522a89db5d542c9c993ee6d0875d2"},
179
342
  {file = "klara-0.6.3.tar.gz", hash = "sha256:8a739b58b94f01b5464ca8d90282cb320e8aff8e221441a43bc423c3595525c1"},
@@ -191,6 +354,7 @@ version = "24.2"
191
354
  description = "Core utilities for Python packages"
192
355
  optional = false
193
356
  python-versions = ">=3.8"
357
+ groups = ["main"]
194
358
  files = [
195
359
  {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"},
196
360
  {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"},
@@ -202,6 +366,7 @@ version = "1.5.0"
202
366
  description = "plugin and hook calling mechanisms for python"
203
367
  optional = false
204
368
  python-versions = ">=3.8"
369
+ groups = ["main"]
205
370
  files = [
206
371
  {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"},
207
372
  {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"},
@@ -217,6 +382,7 @@ version = "8.3.5"
217
382
  description = "pytest: simple powerful testing with Python"
218
383
  optional = false
219
384
  python-versions = ">=3.8"
385
+ groups = ["main"]
220
386
  files = [
221
387
  {file = "pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820"},
222
388
  {file = "pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845"},
@@ -233,12 +399,62 @@ tomli = {version = ">=1", markers = "python_version < \"3.11\""}
233
399
  [package.extras]
234
400
  dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"]
235
401
 
402
+ [[package]]
403
+ name = "pywin32"
404
+ version = "310"
405
+ description = "Python for Window Extensions"
406
+ optional = false
407
+ python-versions = "*"
408
+ groups = ["main"]
409
+ markers = "sys_platform == \"win32\""
410
+ files = [
411
+ {file = "pywin32-310-cp310-cp310-win32.whl", hash = "sha256:6dd97011efc8bf51d6793a82292419eba2c71cf8e7250cfac03bba284454abc1"},
412
+ {file = "pywin32-310-cp310-cp310-win_amd64.whl", hash = "sha256:c3e78706e4229b915a0821941a84e7ef420bf2b77e08c9dae3c76fd03fd2ae3d"},
413
+ {file = "pywin32-310-cp310-cp310-win_arm64.whl", hash = "sha256:33babed0cf0c92a6f94cc6cc13546ab24ee13e3e800e61ed87609ab91e4c8213"},
414
+ {file = "pywin32-310-cp311-cp311-win32.whl", hash = "sha256:1e765f9564e83011a63321bb9d27ec456a0ed90d3732c4b2e312b855365ed8bd"},
415
+ {file = "pywin32-310-cp311-cp311-win_amd64.whl", hash = "sha256:126298077a9d7c95c53823934f000599f66ec9296b09167810eb24875f32689c"},
416
+ {file = "pywin32-310-cp311-cp311-win_arm64.whl", hash = "sha256:19ec5fc9b1d51c4350be7bb00760ffce46e6c95eaf2f0b2f1150657b1a43c582"},
417
+ {file = "pywin32-310-cp312-cp312-win32.whl", hash = "sha256:8a75a5cc3893e83a108c05d82198880704c44bbaee4d06e442e471d3c9ea4f3d"},
418
+ {file = "pywin32-310-cp312-cp312-win_amd64.whl", hash = "sha256:bf5c397c9a9a19a6f62f3fb821fbf36cac08f03770056711f765ec1503972060"},
419
+ {file = "pywin32-310-cp312-cp312-win_arm64.whl", hash = "sha256:2349cc906eae872d0663d4d6290d13b90621eaf78964bb1578632ff20e152966"},
420
+ {file = "pywin32-310-cp313-cp313-win32.whl", hash = "sha256:5d241a659c496ada3253cd01cfaa779b048e90ce4b2b38cd44168ad555ce74ab"},
421
+ {file = "pywin32-310-cp313-cp313-win_amd64.whl", hash = "sha256:667827eb3a90208ddbdcc9e860c81bde63a135710e21e4cb3348968e4bd5249e"},
422
+ {file = "pywin32-310-cp313-cp313-win_arm64.whl", hash = "sha256:e308f831de771482b7cf692a1f308f8fca701b2d8f9dde6cc440c7da17e47b33"},
423
+ {file = "pywin32-310-cp38-cp38-win32.whl", hash = "sha256:0867beb8addefa2e3979d4084352e4ac6e991ca45373390775f7084cc0209b9c"},
424
+ {file = "pywin32-310-cp38-cp38-win_amd64.whl", hash = "sha256:30f0a9b3138fb5e07eb4973b7077e1883f558e40c578c6925acc7a94c34eaa36"},
425
+ {file = "pywin32-310-cp39-cp39-win32.whl", hash = "sha256:851c8d927af0d879221e616ae1f66145253537bbdd321a77e8ef701b443a9a1a"},
426
+ {file = "pywin32-310-cp39-cp39-win_amd64.whl", hash = "sha256:96867217335559ac619f00ad70e513c0fcf84b8a3af9fc2bba3b59b97da70475"},
427
+ ]
428
+
429
+ [[package]]
430
+ name = "requests"
431
+ version = "2.32.3"
432
+ description = "Python HTTP for Humans."
433
+ optional = false
434
+ python-versions = ">=3.8"
435
+ groups = ["main"]
436
+ files = [
437
+ {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"},
438
+ {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"},
439
+ ]
440
+
441
+ [package.dependencies]
442
+ certifi = ">=2017.4.17"
443
+ charset-normalizer = ">=2,<4"
444
+ idna = ">=2.5,<4"
445
+ urllib3 = ">=1.21.1,<3"
446
+
447
+ [package.extras]
448
+ socks = ["PySocks (>=1.5.6,!=1.5.7)"]
449
+ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
450
+
236
451
  [[package]]
237
452
  name = "staticfg"
238
453
  version = "0.9.5"
239
454
  description = "Control flow graph generator for Python3 programs"
240
455
  optional = false
241
456
  python-versions = "*"
457
+ groups = ["main"]
242
458
  files = [
243
459
  {file = "staticfg-0.9.5-py3-none-any.whl", hash = "sha256:968091fb26ecfdd68d28078de39568c07273f3f3aa107f6352929790e1f2338a"},
244
460
  {file = "staticfg-0.9.5.tar.gz", hash = "sha256:19ac946be56500026297d98b9a2c9a7928ecc47cb8fa53f7585e969856d16ffe"},
@@ -254,6 +470,8 @@ version = "2.2.1"
254
470
  description = "A lil' TOML parser"
255
471
  optional = false
256
472
  python-versions = ">=3.8"
473
+ groups = ["main"]
474
+ markers = "python_version == \"3.10\""
257
475
  files = [
258
476
  {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"},
259
477
  {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"},
@@ -295,6 +513,7 @@ version = "1.5.5"
295
513
  description = "a fork of Python 2 and 3 ast modules with type comment support"
296
514
  optional = false
297
515
  python-versions = ">=3.6"
516
+ groups = ["main"]
298
517
  files = [
299
518
  {file = "typed_ast-1.5.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4bc1efe0ce3ffb74784e06460f01a223ac1f6ab31c6bc0376a21184bf5aabe3b"},
300
519
  {file = "typed_ast-1.5.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5f7a8c46a8b333f71abd61d7ab9255440d4a588f34a21f126bbfc95f6049e686"},
@@ -339,12 +558,31 @@ files = [
339
558
  {file = "typed_ast-1.5.5.tar.gz", hash = "sha256:94282f7a354f36ef5dbce0ef3467ebf6a258e370ab33d5b40c249fa996e590dd"},
340
559
  ]
341
560
 
561
+ [[package]]
562
+ name = "urllib3"
563
+ version = "2.4.0"
564
+ description = "HTTP library with thread-safe connection pooling, file post, and more."
565
+ optional = false
566
+ python-versions = ">=3.9"
567
+ groups = ["main"]
568
+ files = [
569
+ {file = "urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813"},
570
+ {file = "urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466"},
571
+ ]
572
+
573
+ [package.extras]
574
+ brotli = ["brotli (>=1.0.9) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\""]
575
+ h2 = ["h2 (>=4,<5)"]
576
+ socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"]
577
+ zstd = ["zstandard (>=0.18.0)"]
578
+
342
579
  [[package]]
343
580
  name = "z3-solver"
344
581
  version = "4.13.3.0"
345
582
  description = "an efficient SMT solver library"
346
583
  optional = false
347
584
  python-versions = "*"
585
+ groups = ["main"]
348
586
  files = [
349
587
  {file = "z3_solver-4.13.3.0-py3-none-macosx_13_0_arm64.whl", hash = "sha256:cae621cb47ebcf055f6a27285343d5c932f4c282b15c5d2840327e73e15a86a4"},
350
588
  {file = "z3_solver-4.13.3.0-py3-none-macosx_13_0_x86_64.whl", hash = "sha256:7900fbd1917164c938a20bea7845f7b95fcb431d0ade474d408f979196bccb8f"},
@@ -356,6 +594,6 @@ files = [
356
594
  ]
357
595
 
358
596
  [metadata]
359
- lock-version = "2.0"
597
+ lock-version = "2.1"
360
598
  python-versions = "^3.10"
361
- content-hash = "5518ded3eac2d267e911d85fb93a70d1b28d4349bc331cc4e79a29b7ba19e5fc"
599
+ content-hash = "d9c6341af6c20b82c0a160e681dd00638b498bcf37ba5f964ae0c4068a3f81b7"
@@ -1,10 +1,16 @@
1
1
  [tool.poetry]
2
- name = "testgen"
3
- version = "0.1.0"
2
+ name = "testgenie-py"
3
+ version = "0.1.6"
4
4
  description = ""
5
5
  authors = ["cjseitz <charlesjseitz@gmail.com>"]
6
6
  readme = "README.md"
7
7
 
8
+ [[tool.poetry.packages]]
9
+ include = "testgen"
10
+
11
+ [tool.poetry.scripts]
12
+ testgenie = "testgen.main:main"
13
+
8
14
  [tool.poetry.dependencies]
9
15
  python = "^3.10"
10
16
  astor = "0.8.1"
@@ -16,6 +22,7 @@ typed-ast = "1.5.5"
16
22
  z3-solver = "4.13.3.0"
17
23
  staticfg = "^0.9.5"
18
24
  pytest = "^8.3.5"
25
+ docker = "^7.1.0"
19
26
 
20
27
  [build-system]
21
28
  requires = ["poetry-core"]
@@ -1 +1 @@
1
- {"(0.0, 0)|add": 1.0147553256632154, "(62.5, 1)|z3": -0.020000000000000004, "(62.5, 3)|add": -0.010000000000000002, "(62.5, 4)|add": 0.18000000000000002, "(87.5, 5)|add": 0.07100000000000001, "(75.0, 1)|add": 0.6092791100000001, "(87.5, 2)|add": 0.18509310000000004, "(87.5, 3)|z3": 0.0, "(87.5, 3)|add": -0.010000000000000002, "(87.5, 4)|add": 0.26100000000000007, "(87.5, 2)|remove": -0.09000000000000001, "(62.5, 1)|add": -0.019000000000000003, "(62.5, 2)|add": -0.010000000000000002, "(62.5, 3)|z3": -0.020000000000000004, "(62.5, 5)|add": -0.010000000000000002, "(62.5, 6)|add": -0.010000000000000002, "(62.5, 7)|add": 0.07100000000000001, "(87.5, 8)|add": -0.010000000000000002, "(87.5, 9)|z3": -0.010000000000000002, "(87.5, 3)|remove": -0.09000000000000001, "(62.5, 2)|z3": -0.020900000000000002, "(62.5, 4)|merge": -0.010000000000000002, "(62.5, 5)|merge": -0.010000000000000002, "(62.5, 6)|remove": 0.010000000000000002, "(62.5, 5)|z3": -0.011000000000000001, "(87.5, 3)|merge": 0.08000000000000002, "(62.5, 4)|remove": 0.010000000000000002, "(62.5, 3)|merge": -0.0009999999999999996, "(87.5, 6)|z3": 0.0, "(87.5, 6)|merge": 0.09000000000000001, "(87.5, 2)|z3": -0.0009999999999999996, "(75.0, 1)|z3": 0.10056590000000001, "(60.0, 1)|add": 0.18917349, "(60.0, 2)|add": 0.17900000000000002, "(70.0, 3)|add": 0.23680000000000007, "(90.0, 4)|add": -0.010000000000000002, "(90.0, 5)|add": 0.1629, "(90.0, 6)|add": -0.01929, "(90.0, 7)|z3": -0.0046099999999999995, "(90.0, 7)|merge": -0.010000000000000002, "(90.0, 8)|add": -0.010000000000000002, "(0.0, 0)|z3": 0.20518, "(60.0, 4)|add": 0.24390000000000006, "(70.0, 5)|add": -0.010000000000000002, "(70.0, 6)|remove": 0.019000000000000003, "(70.0, 5)|z3": -0.020000000000000004, "(70.0, 7)|add": -0.010000000000000002, "(70.0, 8)|z3": -0.020000000000000004, "(70.0, 10)|add": 0.09000000000000001, "(60.0, 2)|z3": 0.08000000000000002, "(70.0, 4)|add": 0.06100000000000001, "(90.0, 5)|z3": -0.010000000000000002, "(90.0, 6)|z3": -0.0029, "(90.0, 6)|merge": -0.010000000000000002, "(90.0, 7)|add": 0.05390000000000001, "(60.0, 1)|z3": 0.26273490000000005, "(70.0, 5)|merge": -0.009, "(70.0, 5)|remove": -0.08100000000000002, "(80.0, 5)|z3": -0.010000000000000002, "(80.0, 6)|add": 0.18449000000000004, "(80.0, 2)|add": -0.010000000000000002, "(80.0, 3)|add": -0.010000000000000002, "(80.0, 4)|z3": 0.053800000000000014, "(90.0, 8)|z3": -0.010000000000000002, "(90.0, 9)|add": -0.010000000000000002, "(80.0, 3)|remove": -0.08100000000000002, "(90.0, 4)|z3": 0.0, "(90.0, 4)|remove": 0.054200000000000005, "(90.0, 3)|add": 0.09000000000000001, "(90.0, 3)|z3": -0.0072000000000000015, "(80.0, 2)|z3": -0.010000000000000002, "(80.0, 3)|z3": -0.0009999999999999996, "(60.0, 4)|remove": 0.010000000000000002, "(60.0, 3)|add": 0.09710000000000002, "(80.0, 5)|add": 0.08944900000000001, "(90.0, 6)|remove": -0.08100000000000002, "(53.84615384615385, 1)|add": 0.3104837900000001, "(76.92307692307693, 2)|remove": -0.09000000000000001, "(61.53846153846154, 1)|add": 0.17100000000000004, "(76.92307692307693, 2)|add": -0.010000000000000002, "(76.92307692307693, 3)|add": 0.081, "(76.92307692307693, 4)|remove": -0.0719, "(76.92307692307693, 3)|z3": 0.0, "(84.61538461538461, 4)|z3": 0.0, "(53.84615384615385, 2)|z3": -0.04000000000000001, "(53.84615384615385, 6)|add": 0.09000000000000001, "(69.23076923076923, 7)|merge": -0.010000000000000002, "(69.23076923076923, 8)|add": 0.15390000000000004, "(76.92307692307693, 9)|add": -0.010000000000000002, "(76.92307692307693, 10)|add": 0.09000000000000001, "(61.53846153846154, 2)|add": -0.010000000000000002, "(61.53846153846154, 3)|add": -0.010000000000000002, "(61.53846153846154, 4)|add": 0.07100000000000001, "(84.61538461538461, 5)|add": -0.010000000000000002, "(84.61538461538461, 6)|add": 0.17100000000000004, "(92.3076923076923, 7)|add": -0.010000000000000002, "(92.3076923076923, 8)|add": -0.010000000000000002, "(69.23076923076923, 2)|add": 0.171, "(69.23076923076923, 3)|merge": -0.010000000000000002, "(69.23076923076923, 4)|add": -0.010000000000000002, "(69.23076923076923, 5)|add": -0.010000000000000002, "(69.23076923076923, 6)|z3": -0.011000000000000001, "(69.23076923076923, 9)|add": -0.010000000000000002, "(69.23076923076923, 2)|z3": -0.030000000000000006, "(69.23076923076923, 5)|remove": 0.019000000000000003, "(69.23076923076923, 4)|z3": -0.030000000000000006, "(69.23076923076923, 7)|add": -0.0029, "(84.61538461538461, 9)|add": 0.09000000000000001, "(92.3076923076923, 10)|add": 0.07100000000000001, "(53.84615384615385, 2)|merge": -0.010000000000000002, "(53.84615384615385, 3)|add": -0.010000000000000002, "(53.84615384615385, 4)|add": 0.09100000000000001, "(69.23076923076923, 4)|remove": 0.010000000000000002, "(69.23076923076923, 3)|add": 0.23471000000000006, "(76.92307692307693, 4)|add": -0.010000000000000002, "(53.84615384615385, 1)|z3": -0.04000000000000001, "(53.84615384615385, 5)|z3": -0.04000000000000001, "(53.84615384615385, 9)|add": 0.09000000000000001, "(69.23076923076923, 10)|add": -0.010000000000000002, "(69.23076923076923, 11)|add": -0.010000000000000002, "(69.23076923076923, 12)|add": -0.010000000000000002, "(76.92307692307693, 2)|z3": 0.09000000000000001, "(84.61538461538461, 3)|add": -0.010000000000000002, "(84.61538461538461, 4)|add": -0.010000000000000002, "(84.61538461538461, 5)|z3": -0.0009999999999999996, "(92.3076923076923, 7)|z3": -0.010000000000000002, "(92.3076923076923, 8)|z3": -0.010000000000000002, "(76.92307692307693, 4)|z3": -0.020000000000000004, "(76.92307692307693, 6)|add": 0.05904900000000002, "(92.3076923076923, 7)|merge": -0.010000000000000002, "(92.3076923076923, 8)|merge": -0.010000000000000002, "(92.3076923076923, 9)|merge": -0.0009999999999999996, "(53.84615384615385, 2)|add": 0.09000000000000001, "(61.53846153846154, 3)|merge": -0.0009999999999999996, "(61.53846153846154, 5)|z3": 0.08000000000000002, "(76.92307692307693, 7)|remove": 0.034390000000000004, "(75.0, 2)|add": -0.010000000000000002, "(75.0, 3)|merge": -0.010000000000000002, "(87.5, 5)|merge": -0.0029, "(100.0, 6)|add": 0.09000000000000001, "(70.0, 3)|z3": 0.10368000000000002, "(70.0, 3)|remove": -0.06632, "(70.0, 4)|merge": -0.0038999999999999994, "(100.0, 8)|add": 0.09000000000000001, "(53.84615384615385, 1)|remove": -0.058951621, "(69.23076923076923, 4)|merge": -0.009, "(69.23076923076923, 7)|z3": -0.030000000000000006, "(69.23076923076923, 6)|remove": 0.010000000000000002, "(69.23076923076923, 9)|z3": -0.030000000000000006, "(84.61538461538461, 10)|add": 0.09000000000000001}
1
+ {"(0.0, 0)|add": 1.0147553256632154, "(62.5, 1)|z3": -0.020000000000000004, "(62.5, 3)|add": -0.010000000000000002, "(62.5, 4)|add": 0.18000000000000002, "(87.5, 5)|add": 0.06100000000000001, "(75.0, 1)|add": 0.7892791100000003, "(87.5, 2)|add": 0.3650931000000001, "(87.5, 3)|z3": 0.0, "(87.5, 3)|add": 0.0881, "(87.5, 4)|add": 0.26100000000000007, "(87.5, 2)|remove": -0.09000000000000001, "(62.5, 1)|add": 0.07100000000000001, "(62.5, 2)|add": -0.019000000000000003, "(62.5, 3)|z3": -0.020000000000000004, "(62.5, 5)|add": -0.010000000000000002, "(62.5, 6)|add": -0.010000000000000002, "(62.5, 7)|add": 0.07100000000000001, "(87.5, 8)|add": -0.010000000000000002, "(87.5, 9)|z3": -0.010000000000000002, "(87.5, 3)|remove": -0.09000000000000001, "(62.5, 2)|z3": -0.020900000000000002, "(62.5, 4)|merge": -0.010000000000000002, "(62.5, 5)|merge": -0.010000000000000002, "(62.5, 6)|remove": 0.010000000000000002, "(62.5, 5)|z3": -0.011000000000000001, "(87.5, 3)|merge": 0.08000000000000002, "(62.5, 4)|remove": 0.010000000000000002, "(62.5, 3)|merge": -0.0009999999999999996, "(87.5, 6)|z3": 0.0, "(87.5, 6)|merge": 0.09000000000000001, "(87.5, 2)|z3": -0.0009999999999999996, "(75.0, 1)|z3": 0.10056590000000001, "(60.0, 1)|add": 0.37652963100000003, "(60.0, 2)|add": 0.169, "(70.0, 3)|add": 0.23680000000000007, "(90.0, 4)|add": 0.08319800000000001, "(90.0, 5)|add": 0.1629, "(90.0, 6)|add": 0.07234900000000001, "(90.0, 7)|z3": -0.0046099999999999995, "(90.0, 7)|merge": -0.010000000000000002, "(90.0, 8)|add": -0.019000000000000003, "(0.0, 0)|z3": 0.20518, "(60.0, 4)|add": 0.24390000000000006, "(70.0, 5)|add": -0.010000000000000002, "(70.0, 6)|remove": 0.019000000000000003, "(70.0, 5)|z3": -0.020000000000000004, "(70.0, 7)|add": -0.010000000000000002, "(70.0, 8)|z3": -0.020000000000000004, "(70.0, 10)|add": 0.09000000000000001, "(60.0, 2)|z3": 0.08000000000000002, "(70.0, 4)|add": 0.06100000000000001, "(90.0, 5)|z3": -0.010000000000000002, "(90.0, 6)|z3": -0.0029, "(90.0, 6)|merge": -0.010000000000000002, "(90.0, 7)|add": 0.04390000000000001, "(60.0, 1)|z3": 0.26273490000000005, "(70.0, 5)|merge": -0.009, "(70.0, 5)|remove": -0.08100000000000002, "(80.0, 5)|z3": -0.001104690000000002, "(80.0, 6)|add": 0.18449000000000004, "(80.0, 2)|add": 0.07100000000000001, "(80.0, 3)|add": -0.019000000000000003, "(80.0, 4)|z3": 0.04380000000000001, "(90.0, 8)|z3": -0.010000000000000002, "(90.0, 9)|add": -0.010000000000000002, "(80.0, 3)|remove": -0.13661000000000004, "(90.0, 4)|z3": 0.0, "(90.0, 4)|remove": 0.054200000000000005, "(90.0, 3)|add": 0.18000000000000002, "(90.0, 3)|z3": -0.0072000000000000015, "(80.0, 2)|z3": -0.011900000000000003, "(80.0, 3)|z3": -0.0009999999999999996, "(60.0, 4)|remove": 0.010000000000000002, "(60.0, 3)|add": 0.08710000000000002, "(80.0, 5)|add": 0.079449, "(90.0, 6)|remove": -0.08100000000000002, "(53.84615384615385, 1)|add": 1.2104837900000005, "(76.92307692307693, 2)|remove": -0.09000000000000001, "(61.53846153846154, 1)|add": 0.17100000000000004, "(76.92307692307693, 2)|add": -0.010000000000000002, "(76.92307692307693, 3)|add": 0.171, "(76.92307692307693, 4)|remove": -0.0719, "(76.92307692307693, 3)|z3": 0.0, "(84.61538461538461, 4)|z3": 0.0, "(53.84615384615385, 2)|z3": -0.04000000000000001, "(53.84615384615385, 6)|add": 0.08000000000000002, "(69.23076923076923, 7)|merge": -0.010000000000000002, "(69.23076923076923, 8)|add": 0.15390000000000004, "(76.92307692307693, 9)|add": -0.010000000000000002, "(76.92307692307693, 10)|add": 0.09000000000000001, "(61.53846153846154, 2)|add": -0.010000000000000002, "(61.53846153846154, 3)|add": -0.010000000000000002, "(61.53846153846154, 4)|add": 0.07100000000000001, "(84.61538461538461, 5)|add": -0.010000000000000002, "(84.61538461538461, 6)|add": 0.17100000000000004, "(92.3076923076923, 7)|add": -0.010000000000000002, "(92.3076923076923, 8)|add": -0.010000000000000002, "(69.23076923076923, 2)|add": 0.261, "(69.23076923076923, 3)|merge": -0.010000000000000002, "(69.23076923076923, 4)|add": -0.010000000000000002, "(69.23076923076923, 5)|add": -0.010000000000000002, "(69.23076923076923, 6)|z3": -0.011000000000000001, "(69.23076923076923, 9)|add": -0.010000000000000002, "(69.23076923076923, 2)|z3": -0.030000000000000006, "(69.23076923076923, 5)|remove": 0.019000000000000003, "(69.23076923076923, 4)|z3": -0.030000000000000006, "(69.23076923076923, 7)|add": -0.0029, "(84.61538461538461, 9)|add": 0.09000000000000001, "(92.3076923076923, 10)|add": 0.06100000000000001, "(53.84615384615385, 2)|merge": -0.010000000000000002, "(53.84615384615385, 3)|add": -0.05217031000000001, "(53.84615384615385, 4)|add": 0.08100000000000002, "(69.23076923076923, 4)|remove": 0.020000000000000004, "(69.23076923076923, 3)|add": 0.23471000000000006, "(76.92307692307693, 4)|add": 0.07100000000000001, "(53.84615384615385, 1)|z3": 0.004048379000000005, "(53.84615384615385, 5)|z3": -0.04000000000000001, "(53.84615384615385, 9)|add": 0.09000000000000001, "(69.23076923076923, 10)|add": -0.010000000000000002, "(69.23076923076923, 11)|add": -0.010000000000000002, "(69.23076923076923, 12)|add": -0.010000000000000002, "(76.92307692307693, 2)|z3": 0.09000000000000001, "(84.61538461538461, 3)|add": -0.010000000000000002, "(84.61538461538461, 4)|add": -0.010000000000000002, "(84.61538461538461, 5)|z3": -0.0009999999999999996, "(92.3076923076923, 7)|z3": 0.07100000000000001, "(92.3076923076923, 8)|z3": 0.13290000000000002, "(76.92307692307693, 4)|z3": -0.020000000000000004, "(76.92307692307693, 6)|add": 0.05904900000000002, "(92.3076923076923, 7)|merge": -0.010000000000000002, "(92.3076923076923, 8)|merge": -0.010000000000000002, "(92.3076923076923, 9)|merge": -0.010900000000000002, "(53.84615384615385, 2)|add": 0.0027670000000000142, "(61.53846153846154, 3)|merge": -0.0009999999999999996, "(61.53846153846154, 5)|z3": 0.08000000000000002, "(76.92307692307693, 7)|remove": 0.034390000000000004, "(75.0, 2)|add": -0.010000000000000002, "(75.0, 3)|merge": -0.010000000000000002, "(87.5, 5)|merge": -0.0029, "(100.0, 6)|add": 0.18000000000000002, "(70.0, 3)|z3": 0.10368000000000002, "(70.0, 3)|remove": -0.06632, "(70.0, 4)|merge": -0.0038999999999999994, "(100.0, 8)|add": 0.09000000000000001, "(53.84615384615385, 1)|remove": 0.11934110709000006, "(69.23076923076923, 4)|merge": -0.009, "(69.23076923076923, 7)|z3": -0.030000000000000006, "(69.23076923076923, 6)|remove": 0.010000000000000002, "(69.23076923076923, 9)|z3": -0.030000000000000006, "(84.61538461538461, 10)|add": 0.09000000000000001, "(87.5, 4)|merge": 0.016100000000000007, "(80.0, 4)|merge": -0.004619999999999999, "(69.23076923076923, 3)|z3": 0.09347100000000001, "(69.23076923076923, 5)|z3": -0.0181, "(69.23076923076923, 3)|remove": 0.03347100000000001, "(36.36363636363637, 1)|add": 0.09000000000000001, "(36.36363636363637, 2)|add": -0.010000000000000002, "(54.54545454545454, 5)|z3": 0.06999999999999999, "(54.54545454545454, 6)|merge": -0.010000000000000002, "(54.54545454545454, 8)|z3": -0.020000000000000004, "(72.72727272727273, 5)|z3": 0.010000000000000002, "(72.72727272727273, 8)|z3": -0.030000000000000006, "(81.81818181818183, 9)|add": 0.09000000000000001, "(81.81818181818183, 10)|add": -0.010000000000000002, "(66.66666666666666, 1)|add": 0.18000000000000002, "(100.0, 2)|add": 0.36, "(80.0, 1)|add": 0.27, "(80.0, 1)|z3": 0.009000000000000001, "(100.0, 3)|add": 0.18000000000000002, "(85.71428571428571, 1)|add": 0.09000000000000001, "(63.63636363636363, 1)|add": 0.54, "(81.81818181818183, 2)|add": 0.27, "(81.81818181818183, 4)|z3": 0.06200000000000001, "(90.9090909090909, 5)|add": 0.09000000000000001, "(81.81818181818183, 4)|remove": -0.09000000000000001, "(72.72727272727273, 2)|add": 0.18000000000000002, "(72.72727272727273, 3)|add": -0.019000000000000003, "(72.72727272727273, 7)|z3": -0.038000000000000006, "(63.63636363636363, 2)|add": -0.010000000000000002, "(81.81818181818183, 6)|z3": -0.020000000000000004, "(90.9090909090909, 7)|add": 0.09000000000000001, "(90.9090909090909, 3)|add": 0.09000000000000001, "(90.9090909090909, 4)|add": -0.010000000000000002, "(90.9090909090909, 5)|z3": -0.0009999999999999996, "(81.81818181818183, 3)|add": -0.010000000000000002, "(81.81818181818183, 5)|z3": -0.020000000000000004, "(81.81818181818183, 6)|add": -0.010000000000000002, "(72.72727272727273, 8)|add": -0.010000000000000002, "(37.17277486910995, 1)|add": 0.09000000000000001, "(39.79057591623037, 61)|z3": -0.5, "(53.84615384615385, 3)|z3": 0.0, "(53.84615384615385, 2)|remove": 0.029300000000000007, "(53.84615384615385, 3)|merge": -0.019000000000000003, "(50.0, 1)|add": 0.18000000000000002, "(50.0, 2)|add": -0.04341690000000001, "(50.0, 2)|z3": 0.0, "(50.0, 3)|add": -0.018000000000000002, "(50.0, 3)|z3": 0.0, "(50.0, 4)|add": -0.010000000000000002, "(50.0, 4)|z3": -0.020000000000000004, "(53.84615384615385, 8)|z3": -0.095, "(53.84615384615385, 13)|z3": -0.094, "(53.84615384615385, 14)|add": -0.010000000000000002, "(53.84615384615385, 13)|remove": 0.010000000000000002, "(50.0, 3)|remove": 0.010000000000000002, "(50.0, 2)|remove": 0.010000000000000002, "(50.0, 1)|remove": 0.09629200000000002, "(100.0, 4)|add": 0.09000000000000001, "(80.0, 4)|add": 0.09438000000000002, "(90.0, 9)|merge": -0.010000000000000002, "(76.92307692307693, 5)|add": -0.010000000000000002, "(84.61538461538461, 7)|remove": -0.09000000000000001, "(84.61538461538461, 8)|add": -0.010000000000000002, "(92.3076923076923, 11)|add": -0.010000000000000002, "(55.55555555555556, 1)|add": 0.7200000000000001, "(88.88888888888889, 3)|z3": 0.16000000000000006, "(88.88888888888889, 4)|merge": -0.010000000000000002, "(88.88888888888889, 5)|add": -0.010000000000000002, "(88.88888888888889, 5)|z3": 0.17000000000000007, "(53.84615384615385, 6)|z3": -0.03821000000000001, "(53.84615384615385, 7)|merge": -0.010000000000000002, "(53.84615384615385, 6)|remove": 0.03610000000000001, "(53.84615384615385, 7)|add": -0.027100000000000006, "(53.84615384615385, 12)|z3": -0.1345, "(53.84615384615385, 13)|add": -0.024389999999999995, "(55.55555555555556, 2)|add": -0.05217031000000001, "(88.88888888888889, 4)|z3": 0.16000000000000006, "(77.77777777777779, 3)|remove": -0.09000000000000001, "(77.77777777777779, 4)|add": -0.010000000000000002, "(53.84615384615385, 12)|remove": 0.020000000000000004, "(53.84615384615385, 13)|merge": -0.009, "(88.88888888888889, 4)|add": -0.001999999999999998, "(66.66666666666666, 3)|remove": -0.09000000000000001, "(66.66666666666666, 4)|add": -0.010000000000000002, "(66.66666666666666, 5)|merge": -0.010000000000000002, "(66.66666666666666, 6)|add": -0.010000000000000002, "(92.3076923076923, 9)|add": -0.010000000000000002, "(55.55555555555556, 1)|remove": 0.046, "(55.55555555555556, 3)|add": -0.010000000000000002, "(88.88888888888889, 6)|merge": -0.010000000000000002, "(88.88888888888889, 7)|add": -0.010000000000000002, "(88.88888888888889, 8)|add": -0.010000000000000002, "(53.84615384615385, 11)|remove": 0.010000000000000002, "(53.84615384615385, 10)|remove": 0.010000000000000002, "(53.84615384615385, 9)|remove": 0.019000000000000003, "(53.84615384615385, 10)|add": -0.009, "(88.88888888888889, 5)|merge": 0.007000000000000006, "(53.84615384615385, 7)|z3": -0.05, "(53.84615384615385, 8)|add": -0.010000000000000002, "(53.84615384615385, 7)|remove": 0.010000000000000002, "(53.84615384615385, 5)|remove": 0.010000000000000002, "(55.55555555555556, 4)|z3": -0.05420000000000001, "(55.55555555555556, 5)|add": -0.027100000000000006, "(55.55555555555556, 7)|z3": -0.05320000000000001, "(55.55555555555556, 8)|merge": -0.010000000000000002, "(55.55555555555556, 9)|add": -0.010000000000000002, "(55.55555555555556, 8)|remove": 0.010000000000000002, "(55.55555555555556, 10)|z3": -0.020000000000000004, "(55.55555555555556, 8)|add": -0.009, "(55.55555555555556, 7)|remove": 0.010000000000000002, "(55.55555555555556, 6)|remove": 0.020000000000000004, "(55.55555555555556, 7)|add": -0.009, "(55.55555555555556, 9)|z3": -0.020000000000000004, "(55.55555555555556, 10)|merge": -0.010000000000000002, "(55.55555555555556, 12)|z3": -0.020000000000000004}
@@ -12,10 +12,11 @@ from testgen.models.test_case import TestCase
12
12
 
13
13
 
14
14
  class ReinforcementEnvironment:
15
- def __init__(self, file_name, fut: ast.FunctionDef, module, initial_test_cases: List[TestCase], state: AbstractState):
15
+ def __init__(self, file_name, fut: ast.FunctionDef, module, class_name: str | None, initial_test_cases: List[TestCase], state: AbstractState):
16
16
  self.file_name = file_name
17
17
  self.fut = fut
18
18
  self.module = module
19
+ self.class_name = class_name
19
20
  self.initial_test_cases = initial_test_cases
20
21
  self.test_cases = initial_test_cases.copy()
21
22
  self.state = state
@@ -32,13 +33,13 @@ class ReinforcementEnvironment:
32
33
 
33
34
  # Execute action
34
35
  if action == "add":
35
- self.test_cases.append(randomizer.new_random_test_case(self.file_name, self.fut))
36
+ self.test_cases.append(randomizer.new_random_test_case(self.file_name, self.class_name, self.fut))
36
37
  elif action == "merge" and len(self.test_cases) > 1:
37
38
  self.test_cases.append(randomizer.combine_cases(self.test_cases))
38
39
  elif action == "remove" and len(self.test_cases) > 1:
39
40
  self.test_cases = randomizer.remove_case(self.test_cases)
40
41
  elif action == "z3":
41
- self.test_cases = randomizer.get_z3_test_cases(self.file_name, self.fut, self.test_cases)
42
+ self.test_cases = randomizer.get_z3_test_cases(self.file_name, self.class_name, self.fut, self.test_cases)
42
43
  else:
43
44
  raise ValueError("Invalid action")
44
45
 
@@ -97,26 +98,52 @@ class ReinforcementEnvironment:
97
98
 
98
99
  test_cases = [tc for tc in self.test_cases if tc.func_name == self.fut.name]
99
100
 
101
+ executable_lines = set()
100
102
  if not test_cases:
101
103
  print("Warning: No test cases available to determine executable statements")
102
104
  from testgen.util.randomizer import new_random_test_case
103
- temp_case = new_random_test_case(self.file_name, self.fut)
104
- analysis = testgen.util.coverage_utils.get_coverage_analysis(self.file_name, self.fut.name, temp_case.inputs)
105
+ temp_case = new_random_test_case(self.file_name, self.class_name, self.fut)
106
+ analysis = testgen.util.coverage_utils.get_coverage_analysis(self.file_name, self.class_name, self.fut.name, temp_case.inputs)
107
+ executable_lines.update(analysis[1]) # Add executable lines from coverage analysis
105
108
  else:
106
- analysis = testgen.util.coverage_utils.get_coverage_analysis(self.file_name, self.fut.name, test_cases[0].inputs)
109
+ analysis = testgen.util.coverage_utils.get_coverage_analysis(self.file_name, self.class_name, self.fut.name, test_cases[0].inputs)
107
110
 
111
+ executable_lines.update(analysis[1]) # Add executable lines from coverage analysis
108
112
  # Get standard executable lines from coverage.py
109
- executable_lines = list(analysis[1])
113
+ executable_lines = list(executable_lines)
110
114
 
111
115
  # Parse the source file to find else branches
112
116
  with open(self.file_name, 'r') as f:
113
117
  source = f.read()
114
118
 
115
119
  # Parse the code
116
- tree = ast.parse(source)
117
-
120
+ tree = ast.parse(source)
118
121
  # Find our specific function
119
122
  for node in ast.walk(tree):
123
+ if isinstance(node, ast.ClassDef) and node.name == self.class_name:
124
+ # If we have a class, find the method
125
+ for method in node.body:
126
+ if isinstance(method, ast.FunctionDef) and method.name == self.fut.name:
127
+ # Find all if statements in this method
128
+ for if_node in ast.walk(method):
129
+ if isinstance(if_node, ast.If) and if_node.orelse:
130
+ # There's an else branch
131
+ if isinstance(if_node.orelse[0], ast.If):
132
+ # This is an elif - already counted
133
+ continue
134
+
135
+ # Get the line number of the first statement in the else block
136
+ # and subtract 1 to get the 'else:' line
137
+ else_line = if_node.orelse[0].lineno - 1
138
+
139
+ # Check if this is actually an else line (not a nested if)
140
+ with open(self.file_name, 'r') as f:
141
+ lines = f.readlines()
142
+ if else_line <= len(lines):
143
+ line_content = lines[else_line - 1].strip()
144
+ if line_content == "else:":
145
+ if else_line not in executable_lines:
146
+ executable_lines.append(else_line)
120
147
  if isinstance(node, ast.FunctionDef) and node.name == self.fut.name:
121
148
  # Find all if statements in this function
122
149
  for if_node in ast.walk(node):
@@ -153,7 +180,12 @@ class ReinforcementEnvironment:
153
180
  for test_case in self.test_cases:
154
181
  try:
155
182
  module = testgen.util.file_utils.load_module(self.file_name)
156
- func = getattr(module, self.fut.name)
183
+ if self.class_name:
184
+ class_obj = getattr(module, self.class_name)
185
+ instance = class_obj()
186
+ func = getattr(instance, self.fut.name)
187
+ else:
188
+ func = getattr(module, self.fut.name)
157
189
  _ = func(*test_case.inputs)
158
190
  except Exception as e:
159
191
  import traceback
@@ -12,7 +12,7 @@ class StatementCoverageState(AbstractState):
12
12
  """Returns calculated coverage and length of test cases in a tuple"""
13
13
  all_covered_statements = set()
14
14
  for test_case in self.environment.test_cases:
15
- analysis = testgen.util.coverage_utils.get_coverage_analysis(self.environment.file_name, self.environment.fut.name, test_case.inputs)
15
+ analysis = testgen.util.coverage_utils.get_coverage_analysis(self.environment.file_name, self.environment.class_name, self.environment.fut.name, test_case.inputs)
16
16
  covered = testgen.util.coverage_utils.get_list_of_covered_statements(analysis)
17
17
  all_covered_statements.update(covered)
18
18