M programs/branches.c => programs/branches.c +15 -14
@@ 1,42 1,43 @@
void main()
{
int *result_address = 0;
- int a = 1;
- int b = 5;
+ int *load_address = 0;
+ int a = *(load_address);
+ int b = *(load_address + 1);
if (a < b) {
- *result_address = 1;
+ *(result_address + 0) = 1;
} else {
- *result_address = 2;
+ *(result_address + 0) = 2;
}
if (a >= b) {
- *result_address = 1;
+ *(result_address + 1) = 1;
} else {
- *result_address = 2;
+ *(result_address + 1) = 2;
}
if (a != b) {
- *result_address = 1;
+ *(result_address + 2) = 1;
} else {
- *result_address = 2;
+ *(result_address + 2) = 2;
}
if (a == b) {
- *result_address = 1;
+ *(result_address + 3) = 1;
} else {
- *result_address = 2;
+ *(result_address + 3) = 2;
}
if (a <= b) {
- *result_address = 1;
+ *(result_address + 4) = 1;
} else {
- *result_address = 2;
+ *(result_address + 4) = 2;
}
if (a > b) {
- *result_address = 1;
+ *(result_address + 5) = 1;
} else {
- *result_address = 2;
+ *(result_address + 5) = 2;
}
}
A programs/memory_bytes.c => programs/memory_bytes.c +23 -0
@@ 0,0 1,23 @@
+
+int main()
+{
+ char *load_address = 0;
+ int *result_address = 0;
+
+ char a = *load_address;
+ char b = *(load_address + 1);
+ char c = *(load_address + 2);
+ char d = *(load_address + 3);
+
+ *(result_address + 3) = a;
+ *(result_address + 2) = b;
+ *(result_address + 1) = c;
+ *(result_address + 0) = d;
+
+ char* result_bytes = (char*)(result_address + 4);
+
+ *(result_bytes + 0) = a;
+ *(result_bytes + 1) = b;
+ *(result_bytes + 2) = c;
+ *(result_bytes + 3) = d;
+}
A programs/operations.c => programs/operations.c +15 -0
@@ 0,0 1,15 @@
+int main()
+{
+ int *load_address = 0;
+ int *result_address = 0;
+
+ int a = *load_address;
+ int b = *(load_address + 1);
+
+ *(result_address + 0) = a + b;
+ *(result_address + 1) = a - b;
+ *(result_address + 2) = a > b;
+ *(result_address + 3) = a < b;
+ *(result_address + 4) = a << b;
+ *(result_address + 5) = a >> b;
+}
M tests/custom/custom_tests.py => tests/custom/custom_tests.py +6 -5
@@ 6,12 6,12 @@ sys.path.append('../')
from test_types import *
from pathlib import Path
-def find_tests(groups_dir: Path, programs_dir: Path, out_dir: Path, group_name: str|None, test_name: str|None) -> list[TestGroup]:
+def find_tests(groups_dir: Path, programs_dir: Path, out_dir: Path, filter_group_name: str|None, filter_test_name: str|None) -> list[TestGroup]:
group_names: list[Path] = []
- if group_name is None:
+ if filter_group_name is None:
group_names = [f for f in groups_dir.iterdir() if f.is_dir()]
else:
- group_names = [groups_dir / group_name]
+ group_names = [groups_dir / filter_group_name]
groups: list[TestGroup] = []
for group_dir in group_names:
@@ 25,10 25,10 @@ def find_tests(groups_dir: Path, programs_dir: Path, out_dir: Path, group_name:
)
test_names = []
- if test_name is None:
+ if filter_test_name is None:
test_names = [f.name[:-len("-input.dat")] for f in group_dir.iterdir() if f.is_file() and f.name.endswith("-input.dat")]
else:
- test_names = [test_name]
+ test_names = [filter_test_name]
for test_name in test_names:
test = Test(
@@ 41,6 41,7 @@ def find_tests(groups_dir: Path, programs_dir: Path, out_dir: Path, group_name:
)
if not test.memory_in_file.exists() or not test.memory_exp_file.exists():
+ print("could not find both input and expected")
continue
tests.append(test)
M tests/run.py => tests/run.py +4 -1
@@ 29,9 29,12 @@ def validate_test(test: Test) -> Validation:
expected_arr = list(filter(lambda word: word != "", re.split(r"[\n ]+", expected)))
actual_arr = re.split(r"[\n ]+", actual)
- # trim leading
+ # ignore rest of memory
actual_arr = actual_arr[:len(expected_arr)]
+ actual_arr = [item.upper() for item in actual_arr]
+ expected_arr = [item.upper() for item in expected_arr]
+
return Validation(
test = test,
expected = expected_arr,