testgenie-py 0.2.9__py3-none-any.whl → 0.3.1__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.
- testgen/analyzer/ast_analyzer.py +0 -1
- testgen/controller/cli_controller.py +9 -0
- testgen/controller/docker_controller.py +9 -1
- testgen/generator/doctest_generator.py +0 -1
- testgen/service/service.py +41 -1
- testgen/testgen.db +0 -0
- {testgenie_py-0.2.9.dist-info → testgenie_py-0.3.1.dist-info}/METADATA +1 -1
- {testgenie_py-0.2.9.dist-info → testgenie_py-0.3.1.dist-info}/RECORD +10 -12
- testgen/generated_boolean.py +0 -48
- testgen/generated_samplecodebin.py +0 -545
- {testgenie_py-0.2.9.dist-info → testgenie_py-0.3.1.dist-info}/WHEEL +0 -0
- {testgenie_py-0.2.9.dist-info → testgenie_py-0.3.1.dist-info}/entry_points.txt +0 -0
testgen/analyzer/ast_analyzer.py
CHANGED
@@ -56,7 +56,6 @@ class ASTAnalyzer(TestCaseAnalyzerStrategy, ABC):
|
|
56
56
|
generated_file = function_metadata.filename
|
57
57
|
module = testgen.util.file_utils.load_module(generated_file)
|
58
58
|
|
59
|
-
# Check if we're dealing with a class
|
60
59
|
if function_metadata.class_name:
|
61
60
|
cls = getattr(module, function_metadata.class_name)
|
62
61
|
instance = cls()
|
@@ -46,6 +46,10 @@ class CLIController:
|
|
46
46
|
print(f"Querying database for file: {args.file_path}")
|
47
47
|
self.service.query_test_file_data(args.file_path)
|
48
48
|
return
|
49
|
+
|
50
|
+
if args.coverage:
|
51
|
+
self.service.get_coverage(args.file_path)
|
52
|
+
return
|
49
53
|
|
50
54
|
running_in_docker = os.environ.get("RUNNING_IN_DOCKER") is not None
|
51
55
|
if running_in_docker:
|
@@ -159,6 +163,11 @@ class CLIController:
|
|
159
163
|
type=str,
|
160
164
|
help="Path to log file (if not specified, logs will only go to console)"
|
161
165
|
)
|
166
|
+
parser.add_argument(
|
167
|
+
"-c", "--coverage",
|
168
|
+
action="store_true",
|
169
|
+
help="Run coverage analysis on the generated tests"
|
170
|
+
)
|
162
171
|
return parser
|
163
172
|
|
164
173
|
def set_test_format(self, args: argparse.Namespace):
|
@@ -35,12 +35,20 @@ class DockerController:
|
|
35
35
|
|
36
36
|
# Check if Docker image exists, build it if not
|
37
37
|
image_name = "testgen-runner"
|
38
|
-
# If args.safe is set to false it means the image was not found and the system will try to run_locally
|
39
38
|
self.get_image(docker_client, image_name, project_root)
|
40
39
|
if not self.args.safe:
|
41
40
|
self.logger.info("Docker image not found. Running locally...")
|
42
41
|
return False
|
43
42
|
|
43
|
+
src_path = os.path.abspath(args.file_path)
|
44
|
+
dest_path = os.path.join(project_root, os.path.basename(src_path))
|
45
|
+
try:
|
46
|
+
shutil.copy(src_path, dest_path)
|
47
|
+
self.logger.debug(f"Copied file from {src_path} to {dest_path}")
|
48
|
+
except Exception as e:
|
49
|
+
self.logger.error(f"Failed to copy file: {e}")
|
50
|
+
sys.exit(1)
|
51
|
+
|
44
52
|
docker_args = [args.file_path] + [arg for arg in sys.argv[2:] if arg != "--safe"]
|
45
53
|
docker_args[0] = f"/controller/testgen/code_to_test/{os.path.basename(docker_args[0])}"
|
46
54
|
|
testgen/service/service.py
CHANGED
@@ -8,6 +8,8 @@ import sqlite3
|
|
8
8
|
import sys
|
9
9
|
import time
|
10
10
|
import subprocess
|
11
|
+
|
12
|
+
import coverage
|
11
13
|
import testgen.util.coverage_utils as coverage_utils
|
12
14
|
from types import ModuleType
|
13
15
|
from typing import List
|
@@ -155,7 +157,15 @@ class Service:
|
|
155
157
|
|
156
158
|
try:
|
157
159
|
if self.test_format == UNITTEST_FORMAT:
|
158
|
-
|
160
|
+
subprocess.run(["python", "-m", "coverage", "run", "--source=.", "-m", "unittest", test_file], check=True)
|
161
|
+
result = subprocess.run(
|
162
|
+
["python", "-m", "coverage", "report", file_path_to_use],
|
163
|
+
check=True,
|
164
|
+
capture_output=True,
|
165
|
+
text=True
|
166
|
+
)
|
167
|
+
coverage_output = result.stdout
|
168
|
+
print(coverage_output)
|
159
169
|
elif self.test_format == PYTEST_FORMAT:
|
160
170
|
self.execute_and_store_pytest(test_file)
|
161
171
|
elif self.test_format == DOCTEST_FORMAT:
|
@@ -305,6 +315,36 @@ class Service:
|
|
305
315
|
"""Create an analysis context for the given file."""
|
306
316
|
return self.analysis_service.create_analysis_context(filepath)
|
307
317
|
|
318
|
+
def get_coverage(self, file_path: str):
|
319
|
+
"""
|
320
|
+
Use the coverage library to calculate and print the coverage for the specified Python file.
|
321
|
+
Dynamically determine the source directory based on the file being tested.
|
322
|
+
"""
|
323
|
+
# Dynamically determine the source directory
|
324
|
+
source_dir = os.path.dirname(file_path)
|
325
|
+
cov = coverage.Coverage(source=[source_dir]) # Use the directory of the file as the source
|
326
|
+
cov.start()
|
327
|
+
|
328
|
+
try:
|
329
|
+
# Dynamically import and execute the specified file
|
330
|
+
file_name = os.path.basename(file_path)
|
331
|
+
module_name = file_name.rstrip(".py")
|
332
|
+
spec = importlib.util.spec_from_file_location(module_name, file_path)
|
333
|
+
module = importlib.util.module_from_spec(spec)
|
334
|
+
spec.loader.exec_module(module)
|
335
|
+
|
336
|
+
except Exception as e:
|
337
|
+
print(f"Error while executing the file: {e}")
|
338
|
+
return
|
339
|
+
|
340
|
+
finally:
|
341
|
+
cov.stop()
|
342
|
+
cov.save()
|
343
|
+
|
344
|
+
# Report the coverage
|
345
|
+
print(f"Coverage report for {file_path}:")
|
346
|
+
cov.report(file=sys.stdout)
|
347
|
+
|
308
348
|
@staticmethod
|
309
349
|
def wait_for_file(file_path, retries=5, delay=1):
|
310
350
|
"""Wait for the generated file to appear."""
|
testgen/testgen.db
CHANGED
Binary file
|
@@ -1,6 +1,6 @@
|
|
1
1
|
testgen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
2
|
testgen/analyzer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3
|
-
testgen/analyzer/ast_analyzer.py,sha256=
|
3
|
+
testgen/analyzer/ast_analyzer.py,sha256=y4ipJ59RfgJnhT_T1ZJP-Px3JINJovkPWMj7UpID3Ak,6824
|
4
4
|
testgen/analyzer/contracts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
5
5
|
testgen/analyzer/contracts/contract.py,sha256=6rNYJOy_2GrOhGtaXTDIOX6pTEOqo856FxG0yTc8amI,369
|
6
6
|
testgen/analyzer/contracts/no_exception_contract.py,sha256=rTWTuu5XKmvzBPD6yNAqiNehk9lbWn_Z8zFj-_djZ_w,512
|
@@ -11,14 +11,12 @@ testgen/analyzer/reinforcement_analyzer.py,sha256=U6W7g-xDFS_P0aqxjPRnaXjGp2gOC9
|
|
11
11
|
testgen/analyzer/test_case_analyzer.py,sha256=0qLcRKOrQ4Uyh1ZMecVTkY9bWjNnx7OridigNyjfUk4,1620
|
12
12
|
testgen/analyzer/test_case_analyzer_context.py,sha256=7umDPHBjoTaCRvZOdNynpnWsr14Gy0E2hpMBPK8mz3Q,2128
|
13
13
|
testgen/controller/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
14
|
-
testgen/controller/cli_controller.py,sha256=
|
15
|
-
testgen/controller/docker_controller.py,sha256=
|
14
|
+
testgen/controller/cli_controller.py,sha256=DGPAt370TTMurL8gLKrVsl1yAP64a5OvgBBuBqhHX4I,9011
|
15
|
+
testgen/controller/docker_controller.py,sha256=B0wwfuERL2wsRQlt02FFqvW5eYVIV0487ha0xDfeWLE,8608
|
16
16
|
testgen/docker/Dockerfile,sha256=6mutzP0ZkVueuvMLCOy2bsyGxWjLHU-cq7RFkuC8r5Y,781
|
17
|
-
testgen/generated_boolean.py,sha256=i5at_BZ7YHtveTMYB0JKMFIkBe7cwhCeF5AViLhNoWA,1146
|
18
|
-
testgen/generated_samplecodebin.py,sha256=pf_aYtcfpjZzgiZ_FiBOxfug_ii3dRX0jnozBgQm7Xw,17030
|
19
17
|
testgen/generator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
20
18
|
testgen/generator/code_generator.py,sha256=-Nh5Jt4my29YWA_LKWn98I4jvDA-fNi6AGuw-vJhRV0,3171
|
21
|
-
testgen/generator/doctest_generator.py,sha256=
|
19
|
+
testgen/generator/doctest_generator.py,sha256=B9I-nw7G7ubcx51XLOl1kiOEL0YW0aDuCAKebqfkRRI,8751
|
22
20
|
testgen/generator/generator.py,sha256=9M9zg8DO0uU5W5s9hsz2oPCL7bz7sAD087M5TYottSs,2007
|
23
21
|
testgen/generator/pytest_generator.py,sha256=ZjQKPHlizFK2yx9WabAxkW9sM-xa64d08IIQibnvwuk,3369
|
24
22
|
testgen/generator/test_generator.py,sha256=D2Y3DaWH4fdIc5_9Xrznrkm0urFfhpYxuhL81M7RRaw,710
|
@@ -43,11 +41,11 @@ testgen/service/analysis_service.py,sha256=uPoPJFLh4Imf5y_Zd8pX9zxRijr-D0K0WV22Y
|
|
43
41
|
testgen/service/cfg_service.py,sha256=Czr91D5AHVq38yPKyhZDjM5jMObGPvY0yPE-PxNVBYM,2326
|
44
42
|
testgen/service/generator_service.py,sha256=3JCWRlg5UKNhKRG9VXIycDFmuYKsRTzEmhmtlxroWAc,8088
|
45
43
|
testgen/service/logging_service.py,sha256=tCv9LHL1gUScQQp34_iYoUxfCFzLRtFG_DXRsJ73SjA,3189
|
46
|
-
testgen/service/service.py,sha256=
|
44
|
+
testgen/service/service.py,sha256=dhRvc-wzdn8uXozZTAx4qBVm7n48GOPue7AQ-ptMANk,22406
|
47
45
|
testgen/sqlite/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
48
46
|
testgen/sqlite/db.py,sha256=RUt88ndT4CQRo9aZzLGXPHRK1iw0LyDEGnoWlOLzKGM,2390
|
49
47
|
testgen/sqlite/db_service.py,sha256=F2ug_FBrYOQtJwM2cMkvQrTS54_VhWGDAHXndnTi-c8,9768
|
50
|
-
testgen/testgen.db,sha256=
|
48
|
+
testgen/testgen.db,sha256=kXuNHy5rz2mmm9EQOgmhJDqHxbHZysBtc_8xlnMqxRw,53248
|
51
49
|
testgen/tree/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
52
50
|
testgen/tree/node.py,sha256=ONJtbACShN4yNj1X-UslFRgLyBP6mrbg7qZr3c6dWyA,165
|
53
51
|
testgen/tree/tree_utils.py,sha256=gT7jucky6_GWVOlDI6jpv6RMeWCkntGOHIYLvHxD85k,2122
|
@@ -63,7 +61,7 @@ testgen/util/z3_utils/branch_condition.py,sha256=N9FNR-iJmxIC62NpDQNVZ1OP14rXXqY
|
|
63
61
|
testgen/util/z3_utils/constraint_extractor.py,sha256=RXJLpmk6dAvHZ27839VXKXNtdy9St1F-17-pSEFu4bM,1285
|
64
62
|
testgen/util/z3_utils/variable_finder.py,sha256=dUh3F9_L_BDMz1ybiGss09LLcM_egbitgj0FT5Nh9u4,245
|
65
63
|
testgen/util/z3_utils/z3_test_case.py,sha256=yF4oJOrXMLzOwDUqXdoeg83MOTl3pvc_lYaZcS01CuQ,4983
|
66
|
-
testgenie_py-0.
|
67
|
-
testgenie_py-0.
|
68
|
-
testgenie_py-0.
|
69
|
-
testgenie_py-0.
|
64
|
+
testgenie_py-0.3.1.dist-info/METADATA,sha256=nFfR0Vdon8sBl7Gz-_RjikWnHbqpkDA79jE_NOybKLk,4350
|
65
|
+
testgenie_py-0.3.1.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
|
66
|
+
testgenie_py-0.3.1.dist-info/entry_points.txt,sha256=OUN4GqB4zHlHWwWGjwIPbur4E_ZqQgkeeqaCLhzRZgg,47
|
67
|
+
testgenie_py-0.3.1.dist-info/RECORD,,
|
testgen/generated_boolean.py
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
def bin_and(a: bool, b: bool):
|
2
|
-
if a == True:
|
3
|
-
if b == True:
|
4
|
-
return True
|
5
|
-
else:
|
6
|
-
return False
|
7
|
-
else:
|
8
|
-
if b == True:
|
9
|
-
return False
|
10
|
-
else:
|
11
|
-
return False
|
12
|
-
|
13
|
-
def bin_xor(a: bool, b: bool):
|
14
|
-
if a == True:
|
15
|
-
if b == True:
|
16
|
-
return False
|
17
|
-
else:
|
18
|
-
return True
|
19
|
-
else:
|
20
|
-
if b == True:
|
21
|
-
return True
|
22
|
-
else:
|
23
|
-
return False
|
24
|
-
|
25
|
-
def status_flags(active: bool, verified: bool, admin: bool):
|
26
|
-
if active == True:
|
27
|
-
if verified == True:
|
28
|
-
if admin == True:
|
29
|
-
return 'admin-verified'
|
30
|
-
else:
|
31
|
-
return 'user-verified'
|
32
|
-
else:
|
33
|
-
if admin == True:
|
34
|
-
return 'admin-unverified'
|
35
|
-
else:
|
36
|
-
return 'user-unverified'
|
37
|
-
else:
|
38
|
-
if verified == True:
|
39
|
-
if admin == True:
|
40
|
-
return 'admin-verified'
|
41
|
-
else:
|
42
|
-
return 'inactive'
|
43
|
-
else:
|
44
|
-
if admin == True:
|
45
|
-
return 'admin-unverified'
|
46
|
-
else:
|
47
|
-
return 'inactive'
|
48
|
-
|
@@ -1,545 +0,0 @@
|
|
1
|
-
class GeneratedSampleCodeBin:
|
2
|
-
def bin_and(self, a: bool, b: bool):
|
3
|
-
"""
|
4
|
-
>>> GeneratedSampleCodeBin().bin_and(True, True)
|
5
|
-
True
|
6
|
-
|
7
|
-
>>> GeneratedSampleCodeBin().bin_and(True, False)
|
8
|
-
False
|
9
|
-
|
10
|
-
>>> GeneratedSampleCodeBin().bin_and(False, True)
|
11
|
-
False
|
12
|
-
"""
|
13
|
-
if a == True:
|
14
|
-
if b == True:
|
15
|
-
return True
|
16
|
-
else:
|
17
|
-
return False
|
18
|
-
else:
|
19
|
-
if b == True:
|
20
|
-
return False
|
21
|
-
else:
|
22
|
-
return False
|
23
|
-
|
24
|
-
|
25
|
-
def bin_and_bad(self, a: bool, b: bool):
|
26
|
-
"""
|
27
|
-
>>> GeneratedSampleCodeBin().bin_and_bad(True, True)
|
28
|
-
True
|
29
|
-
|
30
|
-
>>> GeneratedSampleCodeBin().bin_and_bad(True, False)
|
31
|
-
True
|
32
|
-
|
33
|
-
>>> GeneratedSampleCodeBin().bin_and_bad(False, True)
|
34
|
-
True
|
35
|
-
"""
|
36
|
-
if a == True:
|
37
|
-
if b == True:
|
38
|
-
return True
|
39
|
-
else:
|
40
|
-
return True
|
41
|
-
else:
|
42
|
-
if b == True:
|
43
|
-
return True
|
44
|
-
else:
|
45
|
-
return False
|
46
|
-
|
47
|
-
|
48
|
-
def bin_nand(self, a: bool, b: bool):
|
49
|
-
"""
|
50
|
-
>>> GeneratedSampleCodeBin().bin_nand(True, True)
|
51
|
-
False
|
52
|
-
|
53
|
-
>>> GeneratedSampleCodeBin().bin_nand(True, False)
|
54
|
-
True
|
55
|
-
|
56
|
-
>>> GeneratedSampleCodeBin().bin_nand(False, True)
|
57
|
-
True
|
58
|
-
"""
|
59
|
-
if a == True:
|
60
|
-
if b == True:
|
61
|
-
return False
|
62
|
-
else:
|
63
|
-
return True
|
64
|
-
else:
|
65
|
-
if b == True:
|
66
|
-
return True
|
67
|
-
else:
|
68
|
-
return True
|
69
|
-
|
70
|
-
|
71
|
-
def bin_nor(self, a: bool, b: bool):
|
72
|
-
"""
|
73
|
-
>>> GeneratedSampleCodeBin().bin_nor(True, True)
|
74
|
-
False
|
75
|
-
|
76
|
-
>>> GeneratedSampleCodeBin().bin_nor(True, False)
|
77
|
-
False
|
78
|
-
|
79
|
-
>>> GeneratedSampleCodeBin().bin_nor(False, True)
|
80
|
-
False
|
81
|
-
"""
|
82
|
-
if a == True:
|
83
|
-
if b == True:
|
84
|
-
return False
|
85
|
-
else:
|
86
|
-
return False
|
87
|
-
else:
|
88
|
-
if b == True:
|
89
|
-
return False
|
90
|
-
else:
|
91
|
-
return True
|
92
|
-
|
93
|
-
|
94
|
-
def bin_or(self, a: bool, b: bool):
|
95
|
-
"""
|
96
|
-
>>> GeneratedSampleCodeBin().bin_or(True, True)
|
97
|
-
True
|
98
|
-
|
99
|
-
>>> GeneratedSampleCodeBin().bin_or(True, False)
|
100
|
-
True
|
101
|
-
|
102
|
-
>>> GeneratedSampleCodeBin().bin_or(False, True)
|
103
|
-
True
|
104
|
-
"""
|
105
|
-
if a == True:
|
106
|
-
if b == True:
|
107
|
-
return True
|
108
|
-
else:
|
109
|
-
return True
|
110
|
-
else:
|
111
|
-
if b == True:
|
112
|
-
return True
|
113
|
-
else:
|
114
|
-
return False
|
115
|
-
|
116
|
-
|
117
|
-
def bin_or_bad(self, a: bool, b: bool):
|
118
|
-
"""
|
119
|
-
>>> GeneratedSampleCodeBin().bin_or_bad(True, True)
|
120
|
-
False
|
121
|
-
|
122
|
-
>>> GeneratedSampleCodeBin().bin_or_bad(True, False)
|
123
|
-
False
|
124
|
-
|
125
|
-
>>> GeneratedSampleCodeBin().bin_or_bad(False, True)
|
126
|
-
False
|
127
|
-
"""
|
128
|
-
if a == True:
|
129
|
-
if b == True:
|
130
|
-
return False
|
131
|
-
else:
|
132
|
-
return False
|
133
|
-
else:
|
134
|
-
if b == True:
|
135
|
-
return False
|
136
|
-
else:
|
137
|
-
return True
|
138
|
-
|
139
|
-
|
140
|
-
def bin_xor(self, a: bool, b: bool):
|
141
|
-
"""
|
142
|
-
>>> GeneratedSampleCodeBin().bin_xor(True, True)
|
143
|
-
False
|
144
|
-
|
145
|
-
>>> GeneratedSampleCodeBin().bin_xor(True, False)
|
146
|
-
True
|
147
|
-
|
148
|
-
>>> GeneratedSampleCodeBin().bin_xor(False, True)
|
149
|
-
True
|
150
|
-
"""
|
151
|
-
if a == True:
|
152
|
-
if b == True:
|
153
|
-
return False
|
154
|
-
else:
|
155
|
-
return True
|
156
|
-
else:
|
157
|
-
if b == True:
|
158
|
-
return True
|
159
|
-
else:
|
160
|
-
return False
|
161
|
-
|
162
|
-
|
163
|
-
def mux(self, c1: bool, c2: bool, x0: bool, x1: bool, x2: bool, x3: bool):
|
164
|
-
"""
|
165
|
-
>>> GeneratedSampleCodeBin().mux(True, True, True, True, True, True)
|
166
|
-
True
|
167
|
-
|
168
|
-
>>> GeneratedSampleCodeBin().mux(True, True, True, True, True, False)
|
169
|
-
True
|
170
|
-
|
171
|
-
>>> GeneratedSampleCodeBin().mux(True, True, True, True, False, True)
|
172
|
-
True
|
173
|
-
|
174
|
-
>>> GeneratedSampleCodeBin().mux(True, True, True, True, False, False)
|
175
|
-
True
|
176
|
-
|
177
|
-
>>> GeneratedSampleCodeBin().mux(True, True, True, False, True, True)
|
178
|
-
True
|
179
|
-
|
180
|
-
>>> GeneratedSampleCodeBin().mux(True, True, True, False, True, False)
|
181
|
-
True
|
182
|
-
|
183
|
-
>>> GeneratedSampleCodeBin().mux(True, True, True, False, False, True)
|
184
|
-
True
|
185
|
-
|
186
|
-
>>> GeneratedSampleCodeBin().mux(True, True, True, False, False, False)
|
187
|
-
True
|
188
|
-
|
189
|
-
>>> GeneratedSampleCodeBin().mux(True, True, False, True, True, True)
|
190
|
-
False
|
191
|
-
|
192
|
-
>>> GeneratedSampleCodeBin().mux(True, True, False, True, True, False)
|
193
|
-
False
|
194
|
-
|
195
|
-
>>> GeneratedSampleCodeBin().mux(True, True, False, True, False, True)
|
196
|
-
False
|
197
|
-
|
198
|
-
>>> GeneratedSampleCodeBin().mux(True, True, False, True, False, False)
|
199
|
-
False
|
200
|
-
|
201
|
-
>>> GeneratedSampleCodeBin().mux(True, True, False, False, True, True)
|
202
|
-
False
|
203
|
-
|
204
|
-
>>> GeneratedSampleCodeBin().mux(True, True, False, False, True, False)
|
205
|
-
False
|
206
|
-
|
207
|
-
>>> GeneratedSampleCodeBin().mux(True, True, False, False, False, True)
|
208
|
-
False
|
209
|
-
|
210
|
-
>>> GeneratedSampleCodeBin().mux(True, True, False, False, False, False)
|
211
|
-
False
|
212
|
-
|
213
|
-
>>> GeneratedSampleCodeBin().mux(True, False, True, True, True, True)
|
214
|
-
True
|
215
|
-
|
216
|
-
>>> GeneratedSampleCodeBin().mux(True, False, True, True, True, False)
|
217
|
-
True
|
218
|
-
|
219
|
-
>>> GeneratedSampleCodeBin().mux(True, False, True, True, False, True)
|
220
|
-
True
|
221
|
-
|
222
|
-
>>> GeneratedSampleCodeBin().mux(True, False, True, True, False, False)
|
223
|
-
True
|
224
|
-
|
225
|
-
>>> GeneratedSampleCodeBin().mux(True, False, True, False, True, True)
|
226
|
-
False
|
227
|
-
|
228
|
-
>>> GeneratedSampleCodeBin().mux(True, False, True, False, True, False)
|
229
|
-
False
|
230
|
-
|
231
|
-
>>> GeneratedSampleCodeBin().mux(True, False, True, False, False, True)
|
232
|
-
False
|
233
|
-
|
234
|
-
>>> GeneratedSampleCodeBin().mux(True, False, True, False, False, False)
|
235
|
-
False
|
236
|
-
|
237
|
-
>>> GeneratedSampleCodeBin().mux(True, False, False, True, True, True)
|
238
|
-
True
|
239
|
-
|
240
|
-
>>> GeneratedSampleCodeBin().mux(True, False, False, True, True, False)
|
241
|
-
True
|
242
|
-
|
243
|
-
>>> GeneratedSampleCodeBin().mux(True, False, False, True, False, True)
|
244
|
-
True
|
245
|
-
|
246
|
-
>>> GeneratedSampleCodeBin().mux(True, False, False, True, False, False)
|
247
|
-
True
|
248
|
-
|
249
|
-
>>> GeneratedSampleCodeBin().mux(True, False, False, False, True, True)
|
250
|
-
False
|
251
|
-
|
252
|
-
>>> GeneratedSampleCodeBin().mux(True, False, False, False, True, False)
|
253
|
-
False
|
254
|
-
|
255
|
-
>>> GeneratedSampleCodeBin().mux(True, False, False, False, False, True)
|
256
|
-
False
|
257
|
-
|
258
|
-
>>> GeneratedSampleCodeBin().mux(True, False, False, False, False, False)
|
259
|
-
False
|
260
|
-
|
261
|
-
>>> GeneratedSampleCodeBin().mux(False, True, True, True, True, True)
|
262
|
-
True
|
263
|
-
|
264
|
-
>>> GeneratedSampleCodeBin().mux(False, True, True, True, True, False)
|
265
|
-
True
|
266
|
-
|
267
|
-
>>> GeneratedSampleCodeBin().mux(False, True, True, True, False, True)
|
268
|
-
False
|
269
|
-
|
270
|
-
>>> GeneratedSampleCodeBin().mux(False, True, True, True, False, False)
|
271
|
-
False
|
272
|
-
|
273
|
-
>>> GeneratedSampleCodeBin().mux(False, True, True, False, True, True)
|
274
|
-
True
|
275
|
-
|
276
|
-
>>> GeneratedSampleCodeBin().mux(False, True, True, False, True, False)
|
277
|
-
True
|
278
|
-
|
279
|
-
>>> GeneratedSampleCodeBin().mux(False, True, True, False, False, True)
|
280
|
-
False
|
281
|
-
|
282
|
-
>>> GeneratedSampleCodeBin().mux(False, True, True, False, False, False)
|
283
|
-
False
|
284
|
-
|
285
|
-
>>> GeneratedSampleCodeBin().mux(False, True, False, True, True, True)
|
286
|
-
True
|
287
|
-
|
288
|
-
>>> GeneratedSampleCodeBin().mux(False, True, False, True, True, False)
|
289
|
-
True
|
290
|
-
|
291
|
-
>>> GeneratedSampleCodeBin().mux(False, True, False, True, False, True)
|
292
|
-
False
|
293
|
-
|
294
|
-
>>> GeneratedSampleCodeBin().mux(False, True, False, True, False, False)
|
295
|
-
False
|
296
|
-
|
297
|
-
>>> GeneratedSampleCodeBin().mux(False, True, False, False, True, True)
|
298
|
-
True
|
299
|
-
|
300
|
-
>>> GeneratedSampleCodeBin().mux(False, True, False, False, True, False)
|
301
|
-
True
|
302
|
-
|
303
|
-
>>> GeneratedSampleCodeBin().mux(False, True, False, False, False, True)
|
304
|
-
False
|
305
|
-
|
306
|
-
>>> GeneratedSampleCodeBin().mux(False, True, False, False, False, False)
|
307
|
-
False
|
308
|
-
|
309
|
-
>>> GeneratedSampleCodeBin().mux(False, False, True, True, True, True)
|
310
|
-
True
|
311
|
-
|
312
|
-
>>> GeneratedSampleCodeBin().mux(False, False, True, True, True, False)
|
313
|
-
False
|
314
|
-
|
315
|
-
>>> GeneratedSampleCodeBin().mux(False, False, True, True, False, True)
|
316
|
-
True
|
317
|
-
|
318
|
-
>>> GeneratedSampleCodeBin().mux(False, False, True, True, False, False)
|
319
|
-
False
|
320
|
-
|
321
|
-
>>> GeneratedSampleCodeBin().mux(False, False, True, False, True, True)
|
322
|
-
True
|
323
|
-
|
324
|
-
>>> GeneratedSampleCodeBin().mux(False, False, True, False, True, False)
|
325
|
-
False
|
326
|
-
|
327
|
-
>>> GeneratedSampleCodeBin().mux(False, False, True, False, False, True)
|
328
|
-
True
|
329
|
-
|
330
|
-
>>> GeneratedSampleCodeBin().mux(False, False, True, False, False, False)
|
331
|
-
False
|
332
|
-
|
333
|
-
>>> GeneratedSampleCodeBin().mux(False, False, False, True, True, True)
|
334
|
-
True
|
335
|
-
|
336
|
-
>>> GeneratedSampleCodeBin().mux(False, False, False, True, True, False)
|
337
|
-
False
|
338
|
-
|
339
|
-
>>> GeneratedSampleCodeBin().mux(False, False, False, True, False, True)
|
340
|
-
True
|
341
|
-
|
342
|
-
>>> GeneratedSampleCodeBin().mux(False, False, False, True, False, False)
|
343
|
-
False
|
344
|
-
|
345
|
-
>>> GeneratedSampleCodeBin().mux(False, False, False, False, True, True)
|
346
|
-
True
|
347
|
-
|
348
|
-
>>> GeneratedSampleCodeBin().mux(False, False, False, False, True, False)
|
349
|
-
False
|
350
|
-
|
351
|
-
>>> GeneratedSampleCodeBin().mux(False, False, False, False, False, True)
|
352
|
-
True
|
353
|
-
"""
|
354
|
-
if c1 == True:
|
355
|
-
if c2 == True:
|
356
|
-
if x0 == True:
|
357
|
-
if x1 == True:
|
358
|
-
if x2 == True:
|
359
|
-
if x3 == True:
|
360
|
-
return True
|
361
|
-
else:
|
362
|
-
return True
|
363
|
-
else:
|
364
|
-
if x3 == True:
|
365
|
-
return True
|
366
|
-
else:
|
367
|
-
return True
|
368
|
-
else:
|
369
|
-
if x2 == True:
|
370
|
-
if x3 == True:
|
371
|
-
return True
|
372
|
-
else:
|
373
|
-
return True
|
374
|
-
else:
|
375
|
-
if x3 == True:
|
376
|
-
return True
|
377
|
-
else:
|
378
|
-
return True
|
379
|
-
else:
|
380
|
-
if x1 == True:
|
381
|
-
if x2 == True:
|
382
|
-
if x3 == True:
|
383
|
-
return False
|
384
|
-
else:
|
385
|
-
return False
|
386
|
-
else:
|
387
|
-
if x3 == True:
|
388
|
-
return False
|
389
|
-
else:
|
390
|
-
return False
|
391
|
-
else:
|
392
|
-
if x2 == True:
|
393
|
-
if x3 == True:
|
394
|
-
return False
|
395
|
-
else:
|
396
|
-
return False
|
397
|
-
else:
|
398
|
-
if x3 == True:
|
399
|
-
return False
|
400
|
-
else:
|
401
|
-
return False
|
402
|
-
else:
|
403
|
-
if x0 == True:
|
404
|
-
if x1 == True:
|
405
|
-
if x2 == True:
|
406
|
-
if x3 == True:
|
407
|
-
return True
|
408
|
-
else:
|
409
|
-
return True
|
410
|
-
else:
|
411
|
-
if x3 == True:
|
412
|
-
return True
|
413
|
-
else:
|
414
|
-
return True
|
415
|
-
else:
|
416
|
-
if x2 == True:
|
417
|
-
if x3 == True:
|
418
|
-
return False
|
419
|
-
else:
|
420
|
-
return False
|
421
|
-
else:
|
422
|
-
if x3 == True:
|
423
|
-
return False
|
424
|
-
else:
|
425
|
-
return False
|
426
|
-
else:
|
427
|
-
if x1 == True:
|
428
|
-
if x2 == True:
|
429
|
-
if x3 == True:
|
430
|
-
return True
|
431
|
-
else:
|
432
|
-
return True
|
433
|
-
else:
|
434
|
-
if x3 == True:
|
435
|
-
return True
|
436
|
-
else:
|
437
|
-
return True
|
438
|
-
else:
|
439
|
-
if x2 == True:
|
440
|
-
if x3 == True:
|
441
|
-
return False
|
442
|
-
else:
|
443
|
-
return False
|
444
|
-
else:
|
445
|
-
if x3 == True:
|
446
|
-
return False
|
447
|
-
else:
|
448
|
-
return False
|
449
|
-
else:
|
450
|
-
if c2 == True:
|
451
|
-
if x0 == True:
|
452
|
-
if x1 == True:
|
453
|
-
if x2 == True:
|
454
|
-
if x3 == True:
|
455
|
-
return True
|
456
|
-
else:
|
457
|
-
return True
|
458
|
-
else:
|
459
|
-
if x3 == True:
|
460
|
-
return False
|
461
|
-
else:
|
462
|
-
return False
|
463
|
-
else:
|
464
|
-
if x2 == True:
|
465
|
-
if x3 == True:
|
466
|
-
return True
|
467
|
-
else:
|
468
|
-
return True
|
469
|
-
else:
|
470
|
-
if x3 == True:
|
471
|
-
return False
|
472
|
-
else:
|
473
|
-
return False
|
474
|
-
else:
|
475
|
-
if x1 == True:
|
476
|
-
if x2 == True:
|
477
|
-
if x3 == True:
|
478
|
-
return True
|
479
|
-
else:
|
480
|
-
return True
|
481
|
-
else:
|
482
|
-
if x3 == True:
|
483
|
-
return False
|
484
|
-
else:
|
485
|
-
return False
|
486
|
-
else:
|
487
|
-
if x2 == True:
|
488
|
-
if x3 == True:
|
489
|
-
return True
|
490
|
-
else:
|
491
|
-
return True
|
492
|
-
else:
|
493
|
-
if x3 == True:
|
494
|
-
return False
|
495
|
-
else:
|
496
|
-
return False
|
497
|
-
else:
|
498
|
-
if x0 == True:
|
499
|
-
if x1 == True:
|
500
|
-
if x2 == True:
|
501
|
-
if x3 == True:
|
502
|
-
return True
|
503
|
-
else:
|
504
|
-
return False
|
505
|
-
else:
|
506
|
-
if x3 == True:
|
507
|
-
return True
|
508
|
-
else:
|
509
|
-
return False
|
510
|
-
else:
|
511
|
-
if x2 == True:
|
512
|
-
if x3 == True:
|
513
|
-
return True
|
514
|
-
else:
|
515
|
-
return False
|
516
|
-
else:
|
517
|
-
if x3 == True:
|
518
|
-
return True
|
519
|
-
else:
|
520
|
-
return False
|
521
|
-
else:
|
522
|
-
if x1 == True:
|
523
|
-
if x2 == True:
|
524
|
-
if x3 == True:
|
525
|
-
return True
|
526
|
-
else:
|
527
|
-
return False
|
528
|
-
else:
|
529
|
-
if x3 == True:
|
530
|
-
return True
|
531
|
-
else:
|
532
|
-
return False
|
533
|
-
else:
|
534
|
-
if x2 == True:
|
535
|
-
if x3 == True:
|
536
|
-
return True
|
537
|
-
else:
|
538
|
-
return False
|
539
|
-
else:
|
540
|
-
if x3 == True:
|
541
|
-
return True
|
542
|
-
else:
|
543
|
-
return False
|
544
|
-
|
545
|
-
|
File without changes
|
File without changes
|