Add a control flow test.
This commit is contained in:
parent
62bc2ab97a
commit
e2751f76b5
107
tests/plat/b/control_b.b
Normal file
107
tests/plat/b/control_b.b
Normal file
|
@ -0,0 +1,107 @@
|
||||||
|
#
|
||||||
|
zero 0;
|
||||||
|
one 1;
|
||||||
|
|
||||||
|
if_t()
|
||||||
|
{
|
||||||
|
extrn zero, one;
|
||||||
|
auto fails, successes;
|
||||||
|
|
||||||
|
successes = 0;
|
||||||
|
|
||||||
|
if (zero)
|
||||||
|
fail(__LINE__);
|
||||||
|
|
||||||
|
if (zero)
|
||||||
|
fail(__LINE__);
|
||||||
|
else
|
||||||
|
successes++;
|
||||||
|
|
||||||
|
if (one)
|
||||||
|
successes++;
|
||||||
|
|
||||||
|
if (one)
|
||||||
|
successes++;
|
||||||
|
else
|
||||||
|
fail(__LINE__);
|
||||||
|
|
||||||
|
if (successes != 3)
|
||||||
|
fail(__LINE__);
|
||||||
|
}
|
||||||
|
|
||||||
|
while_t()
|
||||||
|
{
|
||||||
|
extrn zero, one;
|
||||||
|
auto successes, count;
|
||||||
|
|
||||||
|
successes = 3;
|
||||||
|
count = 0;
|
||||||
|
while (count)
|
||||||
|
{
|
||||||
|
successes++;
|
||||||
|
count--;
|
||||||
|
}
|
||||||
|
if (successes != 3)
|
||||||
|
fail(__LINE__);
|
||||||
|
|
||||||
|
while (zero)
|
||||||
|
fail(__LINE__);
|
||||||
|
|
||||||
|
while (one)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
fail(__LINE__);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sdata(n)
|
||||||
|
{
|
||||||
|
switch (n)
|
||||||
|
{
|
||||||
|
case 0: return(0);
|
||||||
|
case 1: return(1);
|
||||||
|
case 100: return(100);
|
||||||
|
default: return(-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
switch_t()
|
||||||
|
{
|
||||||
|
extrn zero;
|
||||||
|
auto successes;
|
||||||
|
|
||||||
|
if (!(sdata(-1) == -1)) fail(__LINE__);
|
||||||
|
if (!(sdata(0) == 0)) fail(__LINE__);
|
||||||
|
if (!(sdata(1) == 1)) fail(__LINE__);
|
||||||
|
if (!(sdata(2) == -1)) fail(__LINE__);
|
||||||
|
if (!(sdata(100) == 100)) fail(__LINE__);
|
||||||
|
if (!(sdata(200) == -1)) fail(__LINE__);
|
||||||
|
|
||||||
|
successes = 0;
|
||||||
|
switch (zero)
|
||||||
|
{
|
||||||
|
case 0: /* fall through */
|
||||||
|
case 1: successes++; break;
|
||||||
|
}
|
||||||
|
if (successes != 1)
|
||||||
|
fail(__LINE__);
|
||||||
|
}
|
||||||
|
|
||||||
|
goto_t()
|
||||||
|
{
|
||||||
|
goto n;
|
||||||
|
fail(__LINE__);
|
||||||
|
n:;
|
||||||
|
}
|
||||||
|
|
||||||
|
main()
|
||||||
|
{
|
||||||
|
if_t();
|
||||||
|
switch_t();
|
||||||
|
goto_t();
|
||||||
|
while_t();
|
||||||
|
|
||||||
|
finished();
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
|
|
@ -79,5 +79,6 @@ main()
|
||||||
if (!(i == 0)) fail(__LINE__);
|
if (!(i == 0)) fail(__LINE__);
|
||||||
|
|
||||||
finished();
|
finished();
|
||||||
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue