From 06f3af256bf4408269190430fe6807e256af1293 Mon Sep 17 00:00:00 2001 From: Eduard Urbach Date: Fri, 14 Mar 2025 00:08:58 +0100 Subject: [PATCH] Added more tests --- src/core/CompileAssign.go | 2 ++ tests/programs/add.q | 9 +++++++++ tests/programs/div.q | 9 +++++++++ tests/programs/mul.q | 9 +++++++++ tests/programs/sub.q | 9 +++++++++ tests/programs_test.go | 4 ++++ 6 files changed, 42 insertions(+) create mode 100644 tests/programs/add.q create mode 100644 tests/programs/div.q create mode 100644 tests/programs/mul.q create mode 100644 tests/programs/sub.q diff --git a/src/core/CompileAssign.go b/src/core/CompileAssign.go index 85eee9d..1a2f2e6 100644 --- a/src/core/CompileAssign.go +++ b/src/core/CompileAssign.go @@ -37,6 +37,8 @@ func (f *Function) CompileAssign(node *ast.Assign) error { switch leftValue := leftValue.(type) { case *eval.Register: + // TODO: Reservation needs to be canceled on defer + f.CurrentScope().Reserve(leftValue.Register) f.Execute(operation, leftValue.Register, right) case *eval.Memory: // TODO: Reservation needs to be canceled on defer diff --git a/tests/programs/add.q b/tests/programs/add.q new file mode 100644 index 0000000..7d6e6cd --- /dev/null +++ b/tests/programs/add.q @@ -0,0 +1,9 @@ +main() { + assert 0 + 0 == 0 + assert 1 + 1 == 2 + assert 1 + 2 == 3 + assert 2 + 1 == 3 + assert 2 + 2 == 4 + assert 4 + 2 == 6 + assert 8 + 2 == 10 +} \ No newline at end of file diff --git a/tests/programs/div.q b/tests/programs/div.q new file mode 100644 index 0000000..4332cc7 --- /dev/null +++ b/tests/programs/div.q @@ -0,0 +1,9 @@ +main() { + assert 0 / 1 == 0 + assert 1 / 1 == 1 + assert 1 / 2 == 0 + assert 2 / 1 == 2 + assert 2 / 2 == 1 + assert 4 / 2 == 2 + assert 8 / 2 == 4 +} \ No newline at end of file diff --git a/tests/programs/mul.q b/tests/programs/mul.q new file mode 100644 index 0000000..e1b4661 --- /dev/null +++ b/tests/programs/mul.q @@ -0,0 +1,9 @@ +main() { + assert 0 * 0 == 0 + assert 1 * 1 == 1 + assert 1 * 2 == 2 + assert 2 * 1 == 2 + assert 2 * 2 == 4 + assert 4 * 2 == 8 + assert 8 * 2 == 16 +} \ No newline at end of file diff --git a/tests/programs/sub.q b/tests/programs/sub.q new file mode 100644 index 0000000..204b10d --- /dev/null +++ b/tests/programs/sub.q @@ -0,0 +1,9 @@ +main() { + assert 0 - 0 == 0 + assert 1 - 1 == 0 + assert 1 - 2 == -1 + assert 2 - 1 == 1 + assert 2 - 2 == 0 + assert 4 - 2 == 2 + assert 8 - 2 == 6 +} \ No newline at end of file diff --git a/tests/programs_test.go b/tests/programs_test.go index 953de1f..480c089 100644 --- a/tests/programs_test.go +++ b/tests/programs_test.go @@ -26,6 +26,10 @@ var programs = []struct { {"reuse", 0}, {"return", 0}, {"return-multi", 0}, + {"add", 0}, + {"sub", 0}, + {"mul", 0}, + {"div", 0}, {"math", 0}, {"precedence", 0}, {"operator-number", 0},