From a079c57bf9f1ab9cca6147599107bdd01e034121 Mon Sep 17 00:00:00 2001 From: Rutherther Date: Sun, 12 Nov 2023 15:42:32 +0100 Subject: [PATCH] tests: add more custom tests --- programs/branches.c | 29 +++++++++++++++-------------- programs/memory_bytes.c | 23 +++++++++++++++++++++++ programs/operations.c | 15 +++++++++++++++ tests/custom/custom_tests.py | 11 ++++++----- tests/run.py | 5 ++++- 5 files changed, 63 insertions(+), 20 deletions(-) create mode 100755 programs/memory_bytes.c create mode 100755 programs/operations.c diff --git a/programs/branches.c b/programs/branches.c index c679b32..99fe8e5 100755 --- a/programs/branches.c +++ b/programs/branches.c @@ -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; } } diff --git a/programs/memory_bytes.c b/programs/memory_bytes.c new file mode 100755 index 0000000..57d0d4d --- /dev/null +++ b/programs/memory_bytes.c @@ -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; +} diff --git a/programs/operations.c b/programs/operations.c new file mode 100755 index 0000000..5b9614f --- /dev/null +++ b/programs/operations.c @@ -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; +} diff --git a/tests/custom/custom_tests.py b/tests/custom/custom_tests.py index 3627673..8c7350d 100755 --- a/tests/custom/custom_tests.py +++ b/tests/custom/custom_tests.py @@ -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) diff --git a/tests/run.py b/tests/run.py index 955debf..3647e19 100755 --- a/tests/run.py +++ b/tests/run.py @@ -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, -- 2.48.1