New test for goto statement.
The build was successful. Details

This commit is contained in:
Rafal Kupiec 2019-05-06 06:39:36 +02:00
parent c4b63a3018
commit 9d84c558c4
Signed by: belliash
GPG Key ID: 4E829243E0CFE6B4
2 changed files with 128 additions and 0 deletions

81
tests/goto_statement.aer Normal file
View File

@ -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();
}
}

47
tests/goto_statement.exp Normal file
View File

@ -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