From 54dc78f0b8b8bd4e3e71ef41d29baa6b96ee3ff5 Mon Sep 17 00:00:00 2001 From: Moritz Gmeiner Date: Tue, 27 Aug 2024 18:59:34 +0200 Subject: [PATCH] added tests for break and continue --- lox.t/break/for.lox | 11 +++++++ lox.t/break/outside_loop.lox | 2 ++ lox.t/break/while.lox | 15 +++++++++ lox.t/continue/for.lox | 16 +++++++++ lox.t/continue/outside_loop.lox | 2 ++ lox.t/continue/while.lox | 21 ++++++++++++ lox.t/run.t | 58 +++++++++++++++++++++++++++++++-- 7 files changed, 123 insertions(+), 2 deletions(-) create mode 100644 lox.t/break/for.lox create mode 100644 lox.t/break/outside_loop.lox create mode 100644 lox.t/break/while.lox create mode 100644 lox.t/continue/for.lox create mode 100644 lox.t/continue/outside_loop.lox create mode 100644 lox.t/continue/while.lox diff --git a/lox.t/break/for.lox b/lox.t/break/for.lox new file mode 100644 index 0000000..f90f766 --- /dev/null +++ b/lox.t/break/for.lox @@ -0,0 +1,11 @@ +for (var i = 0; i < 10; i = i + 1) { + if (i == 5) + break; + + print i; +} +// expect: 0 +// expect: 1 +// expect: 2 +// expect: 3 +// expect: 4 diff --git a/lox.t/break/outside_loop.lox b/lox.t/break/outside_loop.lox new file mode 100644 index 0000000..8b6c59e --- /dev/null +++ b/lox.t/break/outside_loop.lox @@ -0,0 +1,2 @@ +break; +// expect: error diff --git a/lox.t/break/while.lox b/lox.t/break/while.lox new file mode 100644 index 0000000..6cb236a --- /dev/null +++ b/lox.t/break/while.lox @@ -0,0 +1,15 @@ +var i = 0; + +while (i < 10) { + if (i == 5) + break; + + print i; + + i = i + 1; +} +// expect: 0 +// expect: 1 +// expect: 2 +// expect: 3 +// expect: 4 diff --git a/lox.t/continue/for.lox b/lox.t/continue/for.lox new file mode 100644 index 0000000..a434ea6 --- /dev/null +++ b/lox.t/continue/for.lox @@ -0,0 +1,16 @@ +for (var i = 0; i < 10; i = i + 1) { + if (i == 5) + continue; + + print i; +} +// expect: 0 +// expect: 1 +// expect: 2 +// expect: 3 +// expect: 4 +// expect: 6 +// expect: 7 +// expect: 8 +// expect: 9 + diff --git a/lox.t/continue/outside_loop.lox b/lox.t/continue/outside_loop.lox new file mode 100644 index 0000000..56ee1c7 --- /dev/null +++ b/lox.t/continue/outside_loop.lox @@ -0,0 +1,2 @@ +continue; +// expect: error diff --git a/lox.t/continue/while.lox b/lox.t/continue/while.lox new file mode 100644 index 0000000..c71c6b1 --- /dev/null +++ b/lox.t/continue/while.lox @@ -0,0 +1,21 @@ +var i = 0; + +while (i < 10) { + if (i == 5) { + i = i + 1; + continue; + } + + print i; + + i = i + 1; +} +// expect: 0 +// expect: 1 +// expect: 2 +// expect: 3 +// expect: 4 +// expect: 6 +// expect: 7 +// expect: 8 +// expect: 9 diff --git a/lox.t/run.t b/lox.t/run.t index 0e3cc26..7fecfaf 100644 --- a/lox.t/run.t +++ b/lox.t/run.t @@ -136,6 +136,31 @@ file bool/not.lox true +file break/for.lox + $ mlox break/for.lox + 0 + 1 + 2 + 3 + 4 + + +file break/outside_loop.lox + $ mlox break/outside_loop.lox + found 1 ParserError: + ParserError at line 1, column 0: Can use break only in loops + [1] + + +file break/while.lox + $ mlox break/while.lox + 0 + 1 + 2 + 3 + 4 + + file call/bool.lox $ mlox call/bool.lox @@ -298,8 +323,37 @@ file constructor/return_value.lox $ mlox constructor/return_value.lox -file empty_file.lox - $ mlox empty_file.lox +file continue/for.lox + $ mlox continue/for.lox + 0 + 1 + 2 + 3 + 4 + 6 + 7 + 8 + 9 + + +file continue/outside_loop.lox + $ mlox continue/outside_loop.lox + found 1 ParserError: + ParserError at line 1, column 0: Can use continue only in loops + [1] + + +file continue/while.lox + $ mlox continue/while.lox + 0 + 1 + 2 + 3 + 4 + 6 + 7 + 8 + 9 file expressions/evaluate.lox