parent
f3565a6439
commit
2b9417d78f
31 changed files with 14211 additions and 9 deletions
@ -0,0 +1,356 @@ |
|||||||
|
<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, arithmetic operator, various control |
||||||
|
* structures), while trying to combine code from other parts of the |
||||||
|
* parser as well. |
||||||
|
*/ |
||||||
|
?> |
||||||
|
|
||||||
|
*** Testing assignments and variable aliasing: ***<br> |
||||||
|
<?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<br>\n"; ?> |
||||||
|
This should read "this is nifty": <?php echo $blah[$test="associative arrays work too"]."<br>\n"; ?> |
||||||
|
*************************************************<br> |
||||||
|
|
||||||
|
*** Testing integer operators ***<br> |
||||||
|
<?php |
||||||
|
/* test just about any operator possible on $i and $j (ints) */ |
||||||
|
$i = 5; |
||||||
|
$j = 3; |
||||||
|
?> |
||||||
|
Correct result - 8: <?php echo $i+$j; ?><br>
|
||||||
|
Correct result - 8: <?php echo $i+$j; ?><br>
|
||||||
|
Correct result - 2: <?php echo $i-$j; ?><br>
|
||||||
|
Correct result - -2: <?php echo $j-$i; ?><br>
|
||||||
|
Correct result - 15: <?php echo $i*$j; ?><br>
|
||||||
|
Correct result - 15: <?php echo $j*$i; ?><br>
|
||||||
|
Correct result - 2: <?php echo $i%$j; ?><br>
|
||||||
|
Correct result - 3: <?php echo $j%$i; ?><br>
|
||||||
|
*********************************<br> |
||||||
|
|
||||||
|
*** Testing real operators ***<br> |
||||||
|
<?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; ?><br>
|
||||||
|
Correct result - 8: <?php echo $i+$j; ?><br>
|
||||||
|
Correct result - 2: <?php echo $i-$j; ?><br>
|
||||||
|
Correct result - -2: <?php echo $j-$i; ?><br>
|
||||||
|
Correct result - 15: <?php echo $i*$j; ?><br>
|
||||||
|
Correct result - 15: <?php echo $j*$i; ?><br>
|
||||||
|
Correct result - 2: <?php echo $i%$j; ?><br>
|
||||||
|
Correct result - 3: <?php echo $j%$i; ?><br>
|
||||||
|
*********************************<br> |
||||||
|
|
||||||
|
*** Testing if/elseif/else control ***<br> |
||||||
|
|
||||||
|
<?php |
||||||
|
/* sick if/elseif/else test by Andi :) */ |
||||||
|
$a = 5; |
||||||
|
if ($a == "4") { |
||||||
|
echo "This "." does "." not "." work<br>\n"; |
||||||
|
} elseif ($a == "5") { |
||||||
|
echo "This "." works<br>\n"; |
||||||
|
$a = 6; |
||||||
|
if ("andi" == ($test = "andi")) { |
||||||
|
echo "this_still_works<br>\n"; |
||||||
|
} elseif (1) { |
||||||
|
echo "should_not_print<br>\n"; |
||||||
|
} else { |
||||||
|
echo "should_not_print<br>\n"; |
||||||
|
} |
||||||
|
if (44 == 43) { |
||||||
|
echo "should_not_print<br>\n"; |
||||||
|
} else { |
||||||
|
echo "should_print<br>\n"; |
||||||
|
} |
||||||
|
} elseif ($a == 6) { |
||||||
|
echo "this "."broken<br>\n"; |
||||||
|
if (0) { |
||||||
|
echo "this_should_not_print<br>\n"; |
||||||
|
} else { |
||||||
|
echo "TestingDanglingElse_This_Should_not_print<br>\n"; |
||||||
|
} |
||||||
|
} else { |
||||||
|
echo "This "."does "." not"." work<br>\n"; |
||||||
|
} |
||||||
|
?> |
||||||
|
|
||||||
|
|
||||||
|
*** Seriously nested if's test ***<br> |
||||||
|
** 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:<br>\n"; |
||||||
|
if (0) { /* this code is not supposed to be executed */ |
||||||
|
echo "hmm, this shouldn't be displayed #1<br>\n"; |
||||||
|
$j++; |
||||||
|
if (1) { |
||||||
|
$i |
||||||
|
+= |
||||||
|
$j; |
||||||
|
if (0) { |
||||||
|
$j = ++$i; |
||||||
|
if (1) { |
||||||
|
$j *= $i; |
||||||
|
echo "damn, this shouldn't be displayed<br>\n"; |
||||||
|
} else { |
||||||
|
$j /= $i; |
||||||
|
++$j; |
||||||
|
echo "this shouldn't be displayed either<br>\n"; |
||||||
|
} |
||||||
|
} elseif (1) { |
||||||
|
$i++; $j++; |
||||||
|
echo "this isn't supposed to be displayed<br>\n"; |
||||||
|
} |
||||||
|
} elseif (0) { |
||||||
|
$i++; |
||||||
|
echo "this definitely shouldn't be displayed<br>\n"; |
||||||
|
} else { |
||||||
|
--$j; |
||||||
|
echo "and this too shouldn't be displayed<br>\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<br>\n"; |
||||||
|
if (1) { |
||||||
|
$j = ++$i; |
||||||
|
if (0) { |
||||||
|
$j = $i*2+$j*($i++); |
||||||
|
if (1) { |
||||||
|
$i++; |
||||||
|
echo "damn, this shouldn't be displayed<br>\n"; |
||||||
|
} else { |
||||||
|
$j++; |
||||||
|
echo "this shouldn't be displayed either<br>\n"; |
||||||
|
} |
||||||
|
} else if (1) { |
||||||
|
++$j; |
||||||
|
echo "this isn't supposed to be displayed<br>\n"; |
||||||
|
} |
||||||
|
} elseif (0) { |
||||||
|
$j++; |
||||||
|
echo "this definitely shouldn't be displayed<br>\n"; |
||||||
|
} else { |
||||||
|
$i++; |
||||||
|
echo "and this too shouldn't be displayed<br>\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<br>\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<br>\n"; |
||||||
|
} else { |
||||||
|
$j += 20; |
||||||
|
echo "this shouldn't be displayed either<br>\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<br>\n"; |
||||||
|
echo "3 loop iterations should follow:<br>\n"; |
||||||
|
while ($i<=$j) { |
||||||
|
echo $i++." $j<br>\n"; |
||||||
|
} |
||||||
|
} |
||||||
|
} elseif (0) { |
||||||
|
echo "this definitely shouldn't be displayed<br>\n"; |
||||||
|
} else { |
||||||
|
echo "and this too shouldn't be displayed<br>\n"; |
||||||
|
} |
||||||
|
echo "**********************************<br>\n"; |
||||||
|
} |
||||||
|
?> |
||||||
|
|
||||||
|
*** C-style else-if's ***<br> |
||||||
|
<?php |
||||||
|
/* looks like without we even tried, C-style else-if structure works fine! */ |
||||||
|
if ($a=0) { |
||||||
|
echo "This shouldn't be displayed<br>\n"; |
||||||
|
} else if ($a++) { |
||||||
|
echo "This shouldn't be displayed either<br>\n"; |
||||||
|
} else if (--$a) { |
||||||
|
echo "No, this neither<br>\n"; |
||||||
|
} else if (++$a) { |
||||||
|
echo "This should be displayed<br>\n"; |
||||||
|
} else { |
||||||
|
echo "This shouldn't be displayed at all<br>\n"; |
||||||
|
} |
||||||
|
?> |
||||||
|
*************************<br> |
||||||
|
|
||||||
|
*** WHILE tests ***<br> |
||||||
|
<?php |
||||||
|
$i=0; |
||||||
|
$j=20; |
||||||
|
while ($i<(2*$j)) { |
||||||
|
if ($i>$j) { |
||||||
|
echo "$i is greater than $j<br>\n"; |
||||||
|
} else if ($i==$j) { |
||||||
|
echo "$i equals $j<br>\n"; |
||||||
|
} else { |
||||||
|
echo "$i is smaller than $j<br>\n"; |
||||||
|
} |
||||||
|
$i++; |
||||||
|
} |
||||||
|
?> |
||||||
|
*******************<br> |
||||||
|
|
||||||
|
|
||||||
|
*** Nested WHILEs ***<br> |
||||||
|
<?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:<br>\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]."<br>\n"; |
||||||
|
$k++; |
||||||
|
} |
||||||
|
$j++; |
||||||
|
} |
||||||
|
$i++; |
||||||
|
} |
||||||
|
?> |
||||||
|
*********************<br> |
||||||
|
|
||||||
|
*** hash test... ***<br> |
||||||
|
<?php |
||||||
|
/* |
||||||
|
$i=0; |
||||||
|
|
||||||
|
while ($i<10000) { |
||||||
|
$arr[$i]=$i; |
||||||
|
$i++; |
||||||
|
} |
||||||
|
|
||||||
|
$i=0; |
||||||
|
while ($i<10000) { |
||||||
|
echo $arr[$i++]."<br>\n"; |
||||||
|
} |
||||||
|
*/ |
||||||
|
echo "commented out..."; |
||||||
|
?> |
||||||
|
|
||||||
|
**************************<br> |
||||||
|
|
||||||
|
*** Hash resizing test ***<br> |
||||||
|
<?php |
||||||
|
$i = 10; |
||||||
|
$a = 'b'; |
||||||
|
while ($i > 0) { |
||||||
|
$a = $a . 'a'; |
||||||
|
echo "$a<br>\n"; |
||||||
|
$resize[$a] = $i; |
||||||
|
$i--; |
||||||
|
} |
||||||
|
$i = 10; |
||||||
|
$a = 'b'; |
||||||
|
while ($i > 0) { |
||||||
|
$a = $a . 'a'; |
||||||
|
echo "$a<br>\n"; |
||||||
|
echo $resize[$a]."<br>\n"; |
||||||
|
$i--; |
||||||
|
} |
||||||
|
?> |
||||||
|
**************************<br> |
||||||
|
|
||||||
|
|
||||||
|
*** break/continue test ***<br> |
||||||
|
<?php |
||||||
|
$i=0; |
||||||
|
|
||||||
|
echo "\$i should go from 0 to 2<br>\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<br>\n"; |
||||||
|
while ($j<5) { |
||||||
|
if ($j<=2) { |
||||||
|
$j++; |
||||||
|
continue; |
||||||
|
} |
||||||
|
echo " \$j=$j<br>\n"; |
||||||
|
for ($q=0; $q<=10; $q++) { |
||||||
|
if ($q<3) { |
||||||
|
continue; |
||||||
|
} |
||||||
|
if ($q>4) { |
||||||
|
break; |
||||||
|
} |
||||||
|
echo " \$q=$q<br>\n"; |
||||||
|
} |
||||||
|
$j++; |
||||||
|
} |
||||||
|
$j=0; |
||||||
|
echo "\$j should go from 0 to 2<br>\n"; |
||||||
|
while ($j<5) { |
||||||
|
if ($j>2) { |
||||||
|
$k=0; |
||||||
|
echo "\$k should go from 0 to 2<br>\n"; |
||||||
|
while ($k<5) { |
||||||
|
if ($k>2) { |
||||||
|
break 2; |
||||||
|
} |
||||||
|
echo " \$k=$k<br>\n"; |
||||||
|
$k++; |
||||||
|
} |
||||||
|
} |
||||||
|
echo " \$j=$j<br>\n"; |
||||||
|
$j++; |
||||||
|
} |
||||||
|
echo "\$i=$i<br>\n"; |
||||||
|
$i++; |
||||||
|
} |
||||||
|
?> |
||||||
|
***********************<br> |
||||||
|
|
||||||
|
*** Nested file include test ***<br> |
||||||
|
<?php include("023-2.inc"); ?> |
||||||
|
********************************<br> |
||||||
|
|
||||||
|
<?php |
||||||
|
{ |
||||||
|
echo "Tests completed.<br>\n"; # testing some PHP style comment... |
||||||
|
} |
||||||
|
?> |
||||||
@ -0,0 +1,6 @@ |
|||||||
|
<html> |
||||||
|
This is Finish.phtml. This file is supposed to be included |
||||||
|
from regression_test.phtml. This is normal HTML. |
||||||
|
<?php echo "and this is PHP code, 2+2=".(2+2).""; ?> |
||||||
|
|
||||||
|
</html> |
||||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,532 @@ |
|||||||
|
--TEST-- |
||||||
|
Mean recursion test |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
function RekTest ($nr) { |
||||||
|
echo " $nr "; |
||||||
|
$j=$nr+1; |
||||||
|
while ($j < 10) { |
||||||
|
echo " a "; |
||||||
|
RekTest($j); |
||||||
|
$j++; |
||||||
|
echo " b $j "; |
||||||
|
} |
||||||
|
echo "\n"; |
||||||
|
} |
||||||
|
function main() { |
||||||
|
RekTest(0); |
||||||
|
} |
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
0 a 1 a 2 a 3 a 4 a 5 a 6 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 7 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 6 a 6 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 7 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 5 a 5 a 6 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 7 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 6 a 6 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 7 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 4 a 4 a 5 a 6 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 7 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 6 a 6 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 7 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 5 a 5 a 6 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 7 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 6 a 6 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 7 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 3 a 3 a 4 a 5 a 6 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 7 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 6 a 6 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 7 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 5 a 5 a 6 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 7 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 6 a 6 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 7 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 4 a 4 a 5 a 6 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 7 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 6 a 6 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 7 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 5 a 5 a 6 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 7 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 6 a 6 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 7 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 2 a 2 a 3 a 4 a 5 a 6 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 7 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 6 a 6 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 7 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 5 a 5 a 6 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 7 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 6 a 6 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 7 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 4 a 4 a 5 a 6 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 7 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 6 a 6 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 7 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 5 a 5 a 6 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 7 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 6 a 6 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 7 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 3 a 3 a 4 a 5 a 6 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 7 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 6 a 6 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 7 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 5 a 5 a 6 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 7 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 6 a 6 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 7 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 4 a 4 a 5 a 6 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 7 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 6 a 6 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 7 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 5 a 5 a 6 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 7 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 6 a 6 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 7 a 7 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
|
b 8 a 8 a 9 |
||||||
|
b 10 |
||||||
|
b 9 a 9 |
||||||
|
b 10 |
||||||
@ -0,0 +1,6 @@ |
|||||||
|
--TEST-- |
||||||
|
Testing string scanner conformance |
||||||
|
--FILE-- |
||||||
|
<?php echo "\"\t\\'" . '\n\\\'a\\\b\\'; ?> |
||||||
|
--EXPECT-- |
||||||
|
" \'\n\'a\\b\ |
||||||
@ -0,0 +1,12 @@ |
|||||||
|
--TEST-- |
||||||
|
Testing do-while loop |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
$i=3; |
||||||
|
do { |
||||||
|
echo $i; |
||||||
|
$i--; |
||||||
|
} while($i>0); |
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
321 |
||||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,40 @@ |
|||||||
|
--TEST-- |
||||||
|
$this in constructor test |
||||||
|
--SKIPIF-- |
||||||
|
<?php die("skip");?> |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
class foo { |
||||||
|
public $Name; |
||||||
|
function __construct($name) { |
||||||
|
$GLOBALS['List']= &$this; |
||||||
|
$this->Name = $name; |
||||||
|
$GLOBALS['List']->echoName(); |
||||||
|
} |
||||||
|
|
||||||
|
function echoName() { |
||||||
|
$GLOBALS['names'][]=$this->Name; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
function &foo2(&$foo) { |
||||||
|
return $foo; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
$bar1 =new foo('constructor'); |
||||||
|
$bar1->Name = 'outside'; |
||||||
|
$bar1->echoName(); |
||||||
|
$List->echoName(); |
||||||
|
|
||||||
|
$foo = new foo('constructor'); |
||||||
|
$bar1 =& foo2($foo); |
||||||
|
$bar1->Name = 'outside'; |
||||||
|
$bar1->echoName(); |
||||||
|
|
||||||
|
$List->echoName(); |
||||||
|
|
||||||
|
print ($names==array('constructor','outside','outside','constructor','outside','outside')) ? 'success':'failure'; |
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
success |
||||||
@ -0,0 +1,37 @@ |
|||||||
|
--TEST-- |
||||||
|
Class method registration |
||||||
|
--SKIPIF-- |
||||||
|
<?php die("skip");?> |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
class A { |
||||||
|
function foo() {} |
||||||
|
} |
||||||
|
|
||||||
|
class B extends A { |
||||||
|
function foo() {} |
||||||
|
} |
||||||
|
|
||||||
|
class C extends B { |
||||||
|
function foo() {} |
||||||
|
} |
||||||
|
|
||||||
|
class D extends A { |
||||||
|
} |
||||||
|
|
||||||
|
class F extends D { |
||||||
|
function foo() {} |
||||||
|
} |
||||||
|
|
||||||
|
// Following class definition should fail, but cannot test |
||||||
|
/* |
||||||
|
class X { |
||||||
|
function foo() {} |
||||||
|
function foo() {} |
||||||
|
} |
||||||
|
*/ |
||||||
|
|
||||||
|
echo "OK\n"; |
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
OK |
||||||
@ -0,0 +1,44 @@ |
|||||||
|
--TEST-- |
||||||
|
Alternative syntaxes test |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
$a = 1; |
||||||
|
|
||||||
|
echo "If: "; |
||||||
|
if ($a) echo 1; else echo 0; |
||||||
|
if ($a): |
||||||
|
echo 1; |
||||||
|
else: |
||||||
|
echo 0; |
||||||
|
endif; |
||||||
|
|
||||||
|
echo "\nWhile: "; |
||||||
|
while ($a<5) echo $a++; |
||||||
|
while ($a<9): |
||||||
|
echo ++$a; |
||||||
|
endwhile; |
||||||
|
|
||||||
|
echo "\nFor: "; |
||||||
|
for($a=0;$a<5;$a++) echo $a; |
||||||
|
for($a=0;$a<5;$a++): |
||||||
|
echo $a; |
||||||
|
endfor; |
||||||
|
|
||||||
|
echo "\nSwitch: "; |
||||||
|
switch ($a): |
||||||
|
case 0; |
||||||
|
echo 0; |
||||||
|
break; |
||||||
|
case 5: |
||||||
|
echo 1; |
||||||
|
break; |
||||||
|
default; |
||||||
|
echo 0; |
||||||
|
break; |
||||||
|
endswitch; |
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
If: 11 |
||||||
|
While: 12346789 |
||||||
|
For: 0123401234 |
||||||
|
Switch: 1 |
||||||
@ -0,0 +1,19 @@ |
|||||||
|
--TEST-- |
||||||
|
Bug #12647 (Locale settings affecting float parsing) |
||||||
|
--INI-- |
||||||
|
precision=14 |
||||||
|
--SKIPIF-- |
||||||
|
<?php # try to activate a german locale |
||||||
|
if (setlocale(LC_NUMERIC, "de_DE.UTF-8", "de_DE", "de", "german", "ge", "de_DE.ISO-8859-1") === FALSE) { |
||||||
|
print "skip Can't find german locale"; |
||||||
|
} |
||||||
|
?> |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
# activate the german locale |
||||||
|
setlocale(LC_NUMERIC, "de_DE.UTF-8", "de_DE", "de", "german", "ge", "de_DE.ISO-8859-1"); |
||||||
|
|
||||||
|
echo (float)"3.14", "\n"; |
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
3.14 |
||||||
@ -0,0 +1,36 @@ |
|||||||
|
--TEST-- |
||||||
|
ZE2: set_exception_handler() |
||||||
|
--SKIPIF-- |
||||||
|
<?php die("skip");?> |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
class MyException extends Exception { |
||||||
|
function __construct(public $error) {} |
||||||
|
|
||||||
|
function getException() |
||||||
|
{ |
||||||
|
return $this->error; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
function ThrowException() |
||||||
|
{ |
||||||
|
throw new MyException("'This is an exception!'"); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
try { |
||||||
|
} catch (MyException $exception) { |
||||||
|
print "There shouldn't be an exception: " . $exception->getException(); |
||||||
|
print "\n"; |
||||||
|
} |
||||||
|
|
||||||
|
try { |
||||||
|
ThrowException(); |
||||||
|
} catch (MyException $exception) { |
||||||
|
print "There was an exception: " . $exception->getException(); |
||||||
|
print "\n"; |
||||||
|
} |
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
There was an exception: 'This is an exception!' |
||||||
@ -0,0 +1,29 @@ |
|||||||
|
--TEST-- |
||||||
|
Child public element should not override parent private element in parent methods |
||||||
|
--SKIPIF-- |
||||||
|
<?php die("skip");?> |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
class par { |
||||||
|
private $id = "foo"; |
||||||
|
|
||||||
|
function displayMe() |
||||||
|
{ |
||||||
|
print $this->id; |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
class chld extends par { |
||||||
|
public $id = "bar"; |
||||||
|
function displayHim() |
||||||
|
{ |
||||||
|
parent::displayMe(); |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
|
||||||
|
$obj = new chld(); |
||||||
|
$obj->displayHim(); |
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
foo |
||||||
@ -0,0 +1,32 @@ |
|||||||
|
--TEST-- |
||||||
|
'Static' binding for private variables |
||||||
|
--SKIPIF-- |
||||||
|
<?php die("skip");?> |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
|
||||||
|
class par { |
||||||
|
private $id="foo"; |
||||||
|
|
||||||
|
function displayMe() |
||||||
|
{ |
||||||
|
$this->displayChild(); |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
class chld extends par { |
||||||
|
private $id = "bar"; |
||||||
|
|
||||||
|
function displayChild() |
||||||
|
{ |
||||||
|
print $this->id; |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
|
||||||
|
$obj = new chld(); |
||||||
|
$obj->displayMe(); |
||||||
|
|
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
bar |
||||||
@ -0,0 +1,40 @@ |
|||||||
|
--TEST-- |
||||||
|
Convert warnings to exceptions |
||||||
|
--SKIPIF-- |
||||||
|
<?php die("skip");?> |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
|
||||||
|
class MyException extends Exception |
||||||
|
{ |
||||||
|
function __construct($errstr, $errno=0, $errfile='', $errline=0) |
||||||
|
{ |
||||||
|
parent::__construct($errstr, $errno); |
||||||
|
$this->file = $errfile; |
||||||
|
$this->line = $errline; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
function Error2Exception($errno, $errstr, $errfile, $errline) |
||||||
|
{ |
||||||
|
throw new MyException($errstr, $errno);//, $errfile, $errline); |
||||||
|
} |
||||||
|
|
||||||
|
$err_msg = 'no exception'; |
||||||
|
set_error_handler('Error2Exception'); |
||||||
|
|
||||||
|
try |
||||||
|
{ |
||||||
|
$con = fopen("/tmp/a_file_that_does_not_exist",'r'); |
||||||
|
} |
||||||
|
catch (Exception $e) |
||||||
|
{ |
||||||
|
$trace = $e->getTrace(); |
||||||
|
var_dump($trace[0]['function']); |
||||||
|
var_dump($trace[1]['function']); |
||||||
|
} |
||||||
|
|
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
string(15) "Error2Exception" |
||||||
|
string(5) "fopen" |
||||||
@ -0,0 +1,45 @@ |
|||||||
|
--TEST-- |
||||||
|
Catch Interfaces |
||||||
|
--SKIPIF-- |
||||||
|
<?php die("skip");?> |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
|
||||||
|
interface Catchable |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
class MyException extends Exception implements Catchable |
||||||
|
{ |
||||||
|
function __construct($errstr, $errno, $errfile, $errline) |
||||||
|
{ |
||||||
|
parent::__construct($errstr, $errno); |
||||||
|
$this->file = $errfile; |
||||||
|
$this->line = $errline; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
function Error2Exception($errno, $errstr, $errfile, $errline) |
||||||
|
{ |
||||||
|
throw new MyException($errstr, $errno, $errfile, $errline); |
||||||
|
} |
||||||
|
|
||||||
|
$err_msg = 'no exception'; |
||||||
|
set_error_handler('Error2Exception'); |
||||||
|
|
||||||
|
try |
||||||
|
{ |
||||||
|
$con = fopen('/tmp/a_file_that_does_not_exist','r'); |
||||||
|
} |
||||||
|
catch (Catchable $e) |
||||||
|
{ |
||||||
|
echo "Catchable\n"; |
||||||
|
} |
||||||
|
catch (Exception $e) |
||||||
|
{ |
||||||
|
echo "Exception\n"; |
||||||
|
} |
||||||
|
|
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
Catchable |
||||||
@ -0,0 +1,13 @@ |
|||||||
|
--TEST-- |
||||||
|
foreach into array |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
$a = array(0,1); |
||||||
|
$b[0]=2; |
||||||
|
foreach($a as $b[0]) { |
||||||
|
echo $b[0]."\n"; |
||||||
|
} |
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
0 |
||||||
|
1 |
||||||
@ -0,0 +1,25 @@ |
|||||||
|
--TEST-- |
||||||
|
Dynamic access of static members |
||||||
|
--SKIPIF-- |
||||||
|
<?php die("skip");?> |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
class A { |
||||||
|
public static $b = 'foo'; |
||||||
|
} |
||||||
|
|
||||||
|
$classname = 'A'; |
||||||
|
$wrongClassname = 'B'; |
||||||
|
|
||||||
|
echo $classname::$b."\n"; |
||||||
|
echo $wrongClassname::$b."\n"; |
||||||
|
|
||||||
|
?> |
||||||
|
===DONE=== |
||||||
|
--EXPECTF-- |
||||||
|
foo |
||||||
|
|
||||||
|
Fatal error: Uncaught Error: Class "B" not found in %s:%d |
||||||
|
Stack trace: |
||||||
|
#0 {main} |
||||||
|
thrown in %s041.php on line %d |
||||||
@ -0,0 +1,24 @@ |
|||||||
|
--TEST-- |
||||||
|
Dynamic access of constants |
||||||
|
--SKIPIF-- |
||||||
|
<?php die("skip");?> |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
class A { |
||||||
|
const B = 'foo'; |
||||||
|
} |
||||||
|
|
||||||
|
$classname = 'A'; |
||||||
|
$wrongClassname = 'B'; |
||||||
|
|
||||||
|
echo $classname::B."\n"; |
||||||
|
echo $wrongClassname::B."\n"; |
||||||
|
?> |
||||||
|
===DONE=== |
||||||
|
--EXPECTF-- |
||||||
|
foo |
||||||
|
|
||||||
|
Fatal error: Uncaught Error: Class "B" not found in %s:%d |
||||||
|
Stack trace: |
||||||
|
#0 {main} |
||||||
|
thrown in %s042.php on line %d |
||||||
@ -0,0 +1,24 @@ |
|||||||
|
--TEST-- |
||||||
|
Dynamic call for static methods |
||||||
|
--SKIPIF-- |
||||||
|
<?php die("skip");?> |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
class A { |
||||||
|
static function foo() { return 'foo'; } |
||||||
|
} |
||||||
|
|
||||||
|
$classname = 'A'; |
||||||
|
$wrongClassname = 'B'; |
||||||
|
|
||||||
|
echo $classname::foo()."\n"; |
||||||
|
echo $wrongClassname::foo()."\n"; |
||||||
|
?> |
||||||
|
===DONE=== |
||||||
|
--EXPECTF-- |
||||||
|
foo |
||||||
|
|
||||||
|
Fatal error: Uncaught Error: Class "B" not found in %s:%d |
||||||
|
Stack trace: |
||||||
|
#0 {main} |
||||||
|
thrown in %s043.php on line %d |
||||||
@ -0,0 +1,26 @@ |
|||||||
|
--TEST-- |
||||||
|
Dynamic call for static methods dynamically named |
||||||
|
--SKIPIF-- |
||||||
|
<?php die("skip");?> |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
class A { |
||||||
|
static function foo() { return 'foo'; } |
||||||
|
} |
||||||
|
$classname = 'A'; |
||||||
|
$wrongClassname = 'B'; |
||||||
|
|
||||||
|
$methodname = 'foo'; |
||||||
|
|
||||||
|
echo $classname::$methodname()."\n"; |
||||||
|
|
||||||
|
echo $wrongClassname::$methodname()."\n"; |
||||||
|
?> |
||||||
|
===DONE=== |
||||||
|
--EXPECTF-- |
||||||
|
foo |
||||||
|
|
||||||
|
Fatal error: Uncaught Error: Class "B" not found in %s:%d |
||||||
|
Stack trace: |
||||||
|
#0 {main} |
||||||
|
thrown in %s044.php on line %d |
||||||
@ -0,0 +1,26 @@ |
|||||||
|
--TEST-- |
||||||
|
Timeout again inside register_shutdown_function |
||||||
|
--SKIPIF-- |
||||||
|
<?php |
||||||
|
if (getenv("SKIP_SLOW_TESTS")) die("skip slow test"); |
||||||
|
if (PHP_ZTS) die("skip hard_timeout works only on no-zts builds"); |
||||||
|
?> |
||||||
|
--INI-- |
||||||
|
hard_timeout=1 |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
function plop() { |
||||||
|
while (true); |
||||||
|
} |
||||||
|
|
||||||
|
function main() { |
||||||
|
set_time_limit(1); |
||||||
|
register_shutdown_function("plop"); |
||||||
|
plop(); |
||||||
|
} |
||||||
|
?> |
||||||
|
===DONE=== |
||||||
|
--EXPECTF-- |
||||||
|
Fatal error: Maximum execution time of 1 second exceeded in %s on line %d |
||||||
|
|
||||||
|
Fatal error: Maximum execution time of 1 second exceeded in %s on line %d |
||||||
@ -0,0 +1,13 @@ |
|||||||
|
--TEST-- |
||||||
|
Square bracket array shortcut test |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
print_r([1, 2, 3]); |
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
Array |
||||||
|
( |
||||||
|
[0] => 1 |
||||||
|
[1] => 2 |
||||||
|
[2] => 3 |
||||||
|
) |
||||||
@ -0,0 +1,13 @@ |
|||||||
|
--TEST-- |
||||||
|
Square bracket associative array shortcut test |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
print_r(["foo" => "orange", "bar" => "apple", "baz" => "lemon"]); |
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
Array |
||||||
|
( |
||||||
|
[foo] => orange |
||||||
|
[bar] => apple |
||||||
|
[baz] => lemon |
||||||
|
) |
||||||
@ -0,0 +1,13 @@ |
|||||||
|
--TEST-- |
||||||
|
Testing array shortcut and bracket operator |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
$a = [1, 2, 3, 4, 5]; |
||||||
|
print_r([$a[1], $a[3]]); |
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
Array |
||||||
|
( |
||||||
|
[0] => 2 |
||||||
|
[1] => 4 |
||||||
|
) |
||||||
@ -0,0 +1,20 @@ |
|||||||
|
--TEST-- |
||||||
|
Testing nested array shortcut |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
print_r([1, 2, 3, ["foo" => "orange", "bar" => "apple", "baz" => "lemon"]]); |
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
Array |
||||||
|
( |
||||||
|
[0] => 1 |
||||||
|
[1] => 2 |
||||||
|
[2] => 3 |
||||||
|
[3] => Array |
||||||
|
( |
||||||
|
[foo] => orange |
||||||
|
[bar] => apple |
||||||
|
[baz] => lemon |
||||||
|
) |
||||||
|
|
||||||
|
) |
||||||
@ -0,0 +1,11 @@ |
|||||||
|
--TEST-- |
||||||
|
Bison weirdness |
||||||
|
--SKIPIF-- |
||||||
|
<?php die("skip");?> |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
echo "blah-$foo\n"; |
||||||
|
?> |
||||||
|
--EXPECTF-- |
||||||
|
Warning: Undefined variable $foo in %s on line %d |
||||||
|
blah- |
||||||
@ -0,0 +1,20 @@ |
|||||||
|
--TEST-- |
||||||
|
Bug #18872 (class constant used as default parameter) |
||||||
|
--SKIPIF-- |
||||||
|
<?php die("skip");?> |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
class FooBar { |
||||||
|
const BIFF = 3; |
||||||
|
} |
||||||
|
|
||||||
|
function foo($biff = FooBar::BIFF) { |
||||||
|
echo $biff . "\n"; |
||||||
|
} |
||||||
|
|
||||||
|
foo(); |
||||||
|
foo(); |
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
3 |
||||||
|
3 |
||||||
@ -0,0 +1,12 @@ |
|||||||
|
--TEST-- |
||||||
|
Bug #19566 (get_declared_classes() segfaults) |
||||||
|
--SKIPIF-- |
||||||
|
<?php die("skip");?> |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
class foo {} |
||||||
|
$result = get_declared_classes(); |
||||||
|
var_dump(array_search('foo', $result)); |
||||||
|
?> |
||||||
|
--EXPECTF-- |
||||||
|
int(%d) |
||||||
@ -0,0 +1,35 @@ |
|||||||
|
--TEST-- |
||||||
|
Bug #7515 (weird & invisible referencing of objects) |
||||||
|
--SKIPIF-- |
||||||
|
<?php die("skip");?> |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
class obj { |
||||||
|
function method() {} |
||||||
|
} |
||||||
|
|
||||||
|
$o = new stdClass; |
||||||
|
$o->root = new obj(); |
||||||
|
|
||||||
|
ob_start(); |
||||||
|
var_dump($o); |
||||||
|
$x=ob_get_contents(); |
||||||
|
ob_end_clean(); |
||||||
|
|
||||||
|
$o->root->method(); |
||||||
|
|
||||||
|
ob_start(); |
||||||
|
var_dump($o); |
||||||
|
$y=ob_get_contents(); |
||||||
|
ob_end_clean(); |
||||||
|
if ($x == $y) { |
||||||
|
print "success"; |
||||||
|
} else { |
||||||
|
print "failure |
||||||
|
x=$x |
||||||
|
y=$y |
||||||
|
"; |
||||||
|
} |
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
success |
||||||
Loading…
Reference in new issue