From 9d84c558c4d03edef38577939b3f0e9b39e78d20 Mon Sep 17 00:00:00 2001 From: belliash Date: Mon, 6 May 2019 06:39:36 +0200 Subject: [PATCH] New test for goto statement. --- tests/goto_statement.aer | 81 ++++++++++++++++++++++++++++++++++++++++ tests/goto_statement.exp | 47 +++++++++++++++++++++++ 2 files changed, 128 insertions(+) create mode 100644 tests/goto_statement.aer create mode 100644 tests/goto_statement.exp diff --git a/tests/goto_statement.aer b/tests/goto_statement.aer new file mode 100644 index 0000000..24859b9 --- /dev/null +++ b/tests/goto_statement.aer @@ -0,0 +1,81 @@ +class Test { + + void goto_test1() { + int $i = 0; + a: + print("Foo $i\n"); + if($i > 5) + goto b; + $i++; + goto a; + b: + print("Bar $i\n\n"); + } + + void goto_test2(int $a = 2) { + switch($a) { + case 1: + print("\$a is 1\n\n"); + goto out; + case 2: + print("\$a is 2\n\n"); + goto out; + case 3: + print("\$a is 3\n\n"); + goto out; + case 4: + print("\$a is 4\n\n"); + goto out; + } + out: + } + + void goto_test3() { + int $a = 10; + a: + $a--; + print("$a\n"); + if($a > 5) { + goto a; + } + print("\n"); + } + + void goto_test4() { + string[] $headers = {'subject', 'bcc', 'to', 'cc', 'date', 'sender'}; + int $pos = 0; + int $c; + hIterator: { + $c = 0; + print($headers[$pos], "\n"); + cIterator: { + print(" ", $headers[$pos][$c], "\n"); + if(!($headers[$pos][++$c])) { + goto cIteratorExit; + } + goto cIterator; + } + cIteratorExit: { + if($headers[++$pos]) { + goto hIterator; + } + } + } + } +} + +class Program { + private object $test; + + void __construct() { + $this->test = new Test(); + } + + void main() { + $this->test->goto_test1(); + $this->test->goto_test2(); + $this->test->goto_test3(); + $this->test->goto_test4(); + } + +} diff --git a/tests/goto_statement.exp b/tests/goto_statement.exp new file mode 100644 index 0000000..3911ad4 --- /dev/null +++ b/tests/goto_statement.exp @@ -0,0 +1,47 @@ +Foo 0 +Foo 1 +Foo 2 +Foo 3 +Foo 4 +Foo 5 +Foo 6 +Bar 6 + +$a is 2 + +9 +8 +7 +6 +5 + +subject + s + u + b + j + e + c + t +bcc + b + c + c +to + t + o +cc + c + c +date + d + a + t + e +sender + s + e + n + d + e + r