From e032733a92ed8f9fb65a51453c7ee63a68c580e5 Mon Sep 17 00:00:00 2001 From: Eduard Urbach Date: Sat, 1 Mar 2025 12:19:51 +0100 Subject: [PATCH] Added more tests --- src/core/Evaluate.go | 1 + tests/programs/struct.q | 66 +++++++++++++++++++++++++++-------------- 2 files changed, 45 insertions(+), 22 deletions(-) diff --git a/src/core/Evaluate.go b/src/core/Evaluate.go index 574b51b..e13f741 100644 --- a/src/core/Evaluate.go +++ b/src/core/Evaluate.go @@ -41,5 +41,6 @@ func (f *Function) Evaluate(expr *expression.Expression) (eval.Value, error) { Register: tmp, } + f.FreeRegister(tmp) return value, err } diff --git a/tests/programs/struct.q b/tests/programs/struct.q index ad438c4..dd23388 100644 --- a/tests/programs/struct.q +++ b/tests/programs/struct.q @@ -4,31 +4,53 @@ struct Point { } main() { - p := new(Point) - assert p.x == 0 - assert p.y == 0 - assert p.x == p.y + a := new(Point) + assert a.x == 0 + assert a.y == 0 + assert a.x == a.y - p.x = 1 - p.y = 2 - assert p.x == 1 - assert p.y == 2 - assert p.x != p.y + a.x = 1 + a.y = 2 + assert a.x == 1 + assert a.y == 2 + assert a.x != a.y - p.x = p.y - assert p.x == 2 - assert p.y == 2 - assert p.x == p.y + a.x = a.y + assert a.x == 2 + assert a.y == 2 + assert a.x == a.y - p.x = p.y + 1 - assert p.x == 3 - assert p.y == 2 - assert p.x != p.y + a.x = a.y + 1 + assert a.x == 3 + assert a.y == 2 + assert a.x != a.y - p.y = p.x - assert p.x == 3 - assert p.y == 3 - assert p.x == p.y + a.y += 1 + assert a.x == 3 + assert a.y == 3 + assert a.x == a.y - delete(p) + b := new(Point) + assert b.x == 0 + assert b.y == 0 + + b.x = -3 + b.y = -3 + assert b.x == -3 + assert b.y == -3 + + c := new(Point) + assert c.x == 0 + assert c.y == 0 + + c.x = a.x + b.x + c.y = a.y + b.y + assert c.x == a.x + b.x + assert c.y == a.y + b.y + assert c.x == 0 + assert c.y == 0 + + delete(a) + delete(b) + delete(c) } \ No newline at end of file