# Test the trap/catch mechanism.
printf( "Starting the try/catch tests...\n" );
assert = strip (function (t)
{
if (!test(t))
{
message ("...failed.\a");
exception ();
}
});
try { x=21; exception (); x=0; } x*=2;
assert (x == 42);
try { x=99; catch x=0; exception (); }
assert (x == 99);
try
{
x = 0;
exception ();
catch
try
{
exception ();
catch
try
{
exception ();
catch
try
{
exception ();
catch
try
{
exception ();
catch
try
{
exception ();
catch
try
{
exception ();
catch
try
{
exception ();
catch
try
{
exception ();
catch
x = 1;
}
}
}
}
}
}
}
}
}
assert (x);
x = 0;
try {try {try {try {try {try {try {try {
x = 0; exception ();
catch
x = 1;
}}}}}}}}
assert (x);
N = 10;
x = i = 0;
f = function (n)
{
if (n)
{
try
{
self (n-1);
catch
i += 1;
assert (x);
exception ();
}
else
x = 1;
exception ();
}
};
try {f (N); catch assert (x); }
assert (i == N);
fact = function (n)
{
try {
if (n<2) {exception();}
return n*self(n-1);
catch
return 1.0;
}
};
assert (fact (6) == 720);
fact = function (n)
{
if (n<2) {exception();}
try {
n *= self(n-1);
}
return n;
};
assert (fact (7) == 5040);
printf ("...passed.\n");
syntax highlighted by Code2HTML, v. 0.9.1