$(CC) $(CC_FLAGS) -o $@ vv_compiler.c
test: all
- @echo "Starting test suite..."
+ @echo "Starting test suite:"
@./vv_test.py
clean:
+++ /dev/null
-# This test verifies operations under the Stack IMP ([Space]).
-
-SSSTSSSSSTN | ST: Push +65 (ASCII A)
-SSSTSSSSTSN | ST: Push +66 (ASCII B)
-SNS | ST: Duplicate TOS
-TNSS | IO: Output character
-SNT | ST: Swap TOS and NOS
-SNN | ST: Discard TOS
-TNSS | IO: Output character
-NNN | FC: Terminate program
--- /dev/null
+# This test verifies stack IMP push.
+
+SSSTSSSSSTN | ST: Push +65 (ASCII A)
+TNSS | IO: Output character
+NNN | FC: Terminate program
--- /dev/null
+# This test verifies stack IMP duplicate.
+
+SSSTSSSSSTN | ST: Push +65 (ASCII A)
+SNS | ST: Duplicate TOS
+TNSS | IO: Output character
+TNSS | IO: Output character
+NNN | FC: Terminate program
--- /dev/null
+# This test verifies stack IMP swap.
+
+SSSTSSSSSTN | ST: Push +65 (ASCII A)
+SSSTSSSSTSN | ST: Push +66 (ASCII B)
+SNT | ST: Swap TOS and NOS
+TNSS | IO: Output character
+TNSS | IO: Output character
+NNN | FC: Terminate program
--- /dev/null
+# This test verifies stack IMP drop.
+
+SSSTSSSSSTN | ST: Push +65 (ASCII A)
+SSSTSSSSTSN | ST: Push +66 (ASCII B)
+SNN | ST: Discard TOS
+TNSS | IO: Output character
+NNN | FC: Terminate program
--- /dev/null
+# This test verifies arithmetic IMP addition.
+
+SSSTSSSSSTN | ST: Push +65 (ASCII A)
+SSSTN | ST: Push +1
+TSSS | MA: Add
+TNSS | IO: Output character
+NNN | FC: Terminate program
--- /dev/null
+# This test verifies arithmetic IMP subtraction.
+
+SSSTSSSSTSN | ST: Push +66 (ASCII B)
+SSSTN | ST: Push +1
+TSST | MA: Subtract
+TNSS | IO: Output character
+NNN | FC: Terminate program
--- /dev/null
+# This test verifies arithmetic IMP multiplication.
+
+SSSTSSSSTN | ST: Push +33
+SSSTSN | ST: Push +2
+TSSN | MA: Multiply
+TNSS | IO: Output character
+NNN | FC: Terminate program
--- /dev/null
+# This test verifies arithmetic IMP division.
+
+SSSTSSSSSTSN | ST: Push +130
+SSSTSN | ST: Push +2
+TSTS | MA: Divide
+TNSS | IO: Output character
+NNN | FC: Terminate program
--- /dev/null
+# This test verifies arithmetic IMP remainder.
+
+SSSTTSSSSTSN | ST: Push +194
+SSSTSSSSSSTN | ST: Push +128
+TSTT | MA: Remainder
+TNSS | IO: Output character
+NNN | FC: Terminate program
tests = [
['0001_push_printchar_exit', 'A'],
- ['1001_stack_operations', 'BB']
+ ['1001_stack_push', 'A'],
+ ['1002_stack_dup', 'AA'],
+ ['1003_stack_swap', 'AB'],
+ ['1004_stack_drop', 'A'],
+ ['2001_arithmetic_addition', 'B'],
+ ['2002_arithmetic_subtraction', 'A'],
+ ['2003_arithmetic_multiplication', 'B'],
+ ['2004_arithmetic_division', 'A'],
+ ['2005_arithmetic_remainder', 'A'],
]
for test in tests:
+ # TODO: Catch stderr
subprocess.run([compiler_path, '-i', path_to_tests + test[0] + src_extension, '-o', temp_file])
result = subprocess.run([interpreter_path, '-i', temp_file], stdout=subprocess.PIPE)
if result.stdout.decode('utf-8') != test[1]:
- print(test[0])
+ print('\n' + test[0])
else:
- print('.', end='')
+ print('.', end='', flush=True)
os.remove(temp_file)
print("")