blob: 0cd56bd8fe4eb89d4b707d0f182631317e07dbe9 [file] [log] [blame]
<?php
for ($jdk=0; $jdk<50; $jdk++) {
?><html>
<head>
<?php /* the point of this file is to intensively test various aspects of the parser.
* right now, each test focuses in one aspect only (e.g. variable aliasing, arithemtic operator,
* various control structures), while trying to combine code from other parts of the parser as well.
*/
?>
*** Testing assignments and variable aliasing: ***
<?php
/* This test tests assignments to variables using other variables as variable-names */
$a = "b";
$$a = "test";
$$$a = "blah";
${$$$a}["associative arrays work too"] = "this is nifty";
?>
This should read "blah": <?php echo "$test\n"; ?>
This should read "this is nifty": <?php echo $blah[$test="associative arrays work too"]."\n"; ?>
*************************************************
*** Testing integer operators ***
<?php
/* test just about any operator possible on $i and $j (ints) */
$i = 5;
$j = 3;
?>
Correct result - 8: <?php echo $i+$j; ?>
Correct result - 8: <?php echo $i+$j; ?>
Correct result - 2: <?php echo $i-$j; ?>
Correct result - -2: <?php echo $j-$i; ?>
Correct result - 15: <?php echo $i*$j; ?>
Correct result - 15: <?php echo $j*$i; ?>
Correct result - 2: <?php echo $i%$j; ?>
Correct result - 3: <?php echo $j%$i; ?>
*********************************
*** Testing real operators ***
<?php
/* test just about any operator possible on $i and $j (floats) */
$i = 5.0;
$j = 3.0;
?>
Correct result - 8: <?php echo $i+$j; ?>
Correct result - 8: <?php echo $i+$j; ?>
Correct result - 2: <?php echo $i-$j; ?>
Correct result - -2: <?php echo $j-$i; ?>
Correct result - 15: <?php echo $i*$j; ?>
Correct result - 15: <?php echo $j*$i; ?>
Correct result - 2: <?php echo $i%$j; ?>
Correct result - 3: <?php echo $j%$i; ?>
*********************************
*** Testing if/elseif/else control ***
<?php
/* sick if/elseif/else test by Andi :) */
$a = 5;
if ($a == "4") {
echo "This "." does "." not "." work\n";
} elseif ($a == "5") {
echo "This "." works\n";
$a = 6;
if ("andi" == ($test = "andi")) {
echo "this_still_works\n";
} elseif (1) {
echo "should_not_print\n";
} else {
echo "should_not_print\n";
}
if (44 == 43) {
echo "should_not_print\n";
} else {
echo "should_print\n";
}
} elseif ($a == 6) {
echo "this "."broken\n";
if (0) {
echo "this_should_not_print\n";
} else {
echo "TestingDanglingElse_This_Should_not_print\n";
}
} else {
echo "This "."does "." not"." work\n";
}
?>
*** Seriously nested if's test ***
** spelling correction by kluzz **
<?php
/* yet another sick if/elseif/else test by Zeev */
$i=$j=0;
echo "Only two lines of text should follow:\n";
if (0) { /* this code is not supposed to be executed */
echo "hmm, this shouldn't be displayed #1\n";
$j++;
if (1) {
$i += $j;
if (0) {
$j = ++$i;
if (1) {
$j *= $i;
echo "damn, this shouldn't be displayed\n";
} else {
$j /= $i;
++$j;
echo "this shouldn't be displayed either\n";
}
} elseif (1) {
$i++; $j++;
echo "this isn't supposed to be displayed\n";
}
} elseif (0) {
$i++;
echo "this definitely shouldn't be displayed\n";
} else {
--$j;
echo "and this too shouldn't be displayed\n";
while ($j>0) {
$j--;
}
}
} elseif (2-2) { /* as long as 2-2==0, this isn't supposed to be executed either */
$i = ++$j;
echo "hmm, this shouldn't be displayed #2\n";
if (1) {
$j = ++$i;
if (0) {
$j = $i*2+$j*($i++);
if (1) {
$i++;
echo "damn, this shouldn't be displayed\n";
} else {
$j++;
echo "this shouldn't be displayed either\n";
}
} else if (1) {
++$j;
echo "this isn't supposed to be displayed\n";
}
} elseif (0) {
$j++;
echo "this definitely shouldn't be displayed\n";
} else {
$i++;
echo "and this too shouldn't be displayed\n";
}
} else {
$j=$i++; /* this should set $i to 1, but shouldn't change $j (it's assigned $i's previous values, zero) */
echo "this should be displayed. should be: \$i=1, \$j=0. is: \$i=$i, \$j=$j\n";
if (1) {
$j += ++$i; /* ++$i --> $i==2, $j += 2 --> $j==2 */
if (0) {
$j += 40;
if (1) {
$i += 50;
echo "damn, this shouldn't be displayed\n";
} else {
$j += 20;
echo "this shouldn't be displayed either\n";
}
} else if (1) {
$j *= $i; /* $j *= 2 --> $j == 4 */
echo "this is supposed to be displayed. should be: \$i=2, \$j=4. is: \$i=$i, \$j=$j\n";
echo "3 loop iterations should follow:\n";
while ($i<=$j) {
echo $i++." $j\n";
}
}
} elseif (0) {
echo "this definitely shouldn't be displayed\n";
} else {
echo "and this too shouldn't be displayed\n";
}
echo "**********************************\n";
}
?>
*** C-style else-if's ***
<?php
/* looks like without we even tried, C-style else-if structure works fine! */
if ($a=0) {
echo "This shouldn't be displayed\n";
} else if ($a++) {
echo "This shouldn't be displayed either\n";
} else if (--$a) {
echo "No, this neither\n";
} else if (++$a) {
echo "This should be displayed\n";
} else {
echo "This shouldn't be displayed at all\n";
}
?>
*************************
*** WHILE tests ***
<?php
$i=0;
$j=20;
while ($i<(2*$j)) {
if ($i>$j) {
echo "$i is greater than $j\n";
} else if ($i==$j) {
echo "$i equals $j\n";
} else {
echo "$i is smaller than $j\n";
}
$i++;
}
?>
*******************
*** Nested WHILEs ***
<?php
$arr_len=3;
$i=0;
while ($i<$arr_len) {
$j=0;
while ($j<$arr_len) {
$k=0;
while ($k<$arr_len) {
${"test$i$j"}[$k] = $i+$j+$k;
$k++;
}
$j++;
}
$i++;
}
echo "Each array variable should be equal to the sum of its indices:\n";
$i=0;
while ($i<$arr_len) {
$j=0;
while ($j<$arr_len) {
$k=0;
while ($k<$arr_len) {
echo "\${test$i$j}[$k] = ".${"test$i$j"}[$k]."\n";
$k++;
}
$j++;
}
$i++;
}
?>
*********************
*** hash test... ***
<?php
/*
$i=0;
while ($i<10000) {
$arr[$i]=$i;
$i++;
}
$i=0;
while ($i<10000) {
echo $arr[$i++]."\n";
}
*/
echo "commented out...";
?>
**************************
*** Hash resizing test ***
<?php
$i = 10;
$a = "b";
while ($i > 0) {
$a = $a . "a";
echo "$a\n";
$resize[$a] = $i;
$i--;
}
$i = 10;
$a = "b";
while ($i > 0) {
$a = $a . "a";
echo "$a\n";
echo $resize[$a]."\n";
$i--;
}
?>
**************************
*** break/continue test ***
<?php
$i=0;
echo "\$i should go from 0 to 2\n";
while ($i<5) {
if ($i>2) {
break;
}
$j=0;
echo "\$j should go from 3 to 4, and \$q should go from 3 to 4\n";
while ($j<5) {
if ($j<=2) {
$j++;
continue;
}
echo " \$j=$j\n";
for ($q=0; $q<=10; $q++) {
if ($q<3) {
continue;
}
if ($q>4) {
break;
}
echo " \$q=$q\n";
}
$j++;
}
$j=0;
echo "\$j should go from 0 to 2\n";
while ($j<5) {
if ($j>2) {
$k=0;
echo "\$k should go from 0 to 2\n";
while ($k<5) {
if ($k>2) {
break 2;
}
echo " \$k=$k\n";
$k++;
}
}
echo " \$j=$j\n";
$j++;
}
echo "\$i=$i\n";
$i++;
}
?>
***********************
*** Nested file include test ***
<?php include("regression2.inc"); ?>
********************************
<?php
{
echo "Tests completed.\n"; # testing some PHP style comment...
}
} ?>