1<html> 2<head> 3<?php 4/* the point of this file is to intensively test various aspects of 5 * the parser. right now, each test focuses in one aspect only 6 * (e.g. variable aliasing, arithmetic operator, various control 7 * structures), while trying to combine code from other parts of the 8 * parser as well. 9 */ 10?> 11 12*** Testing assignments and variable aliasing: ***<br> 13<?php 14 /* This test tests assignments to variables using other variables as variable-names */ 15 $a = "b"; 16 $$a = "test"; 17 $$$a = "blah"; 18 ${$$$a}["associative arrays work too"] = "this is nifty"; 19?> 20This should read "blah": <?php echo "$test<br>\n"; ?> 21This should read "this is nifty": <?php echo $blah[$test="associative arrays work too"]."<br>\n"; ?> 22*************************************************<br> 23 24*** Testing integer operators ***<br> 25<?php 26 /* test just about any operator possible on $i and $j (ints) */ 27 $i = 5; 28 $j = 3; 29?> 30Correct result - 8: <?php echo $i+$j; ?><br> 31Correct result - 8: <?php echo $i+$j; ?><br> 32Correct result - 2: <?php echo $i-$j; ?><br> 33Correct result - -2: <?php echo $j-$i; ?><br> 34Correct result - 15: <?php echo $i*$j; ?><br> 35Correct result - 15: <?php echo $j*$i; ?><br> 36Correct result - 2: <?php echo $i%$j; ?><br> 37Correct result - 3: <?php echo $j%$i; ?><br> 38*********************************<br> 39 40*** Testing real operators ***<br> 41<?php 42 /* test just about any operator possible on $i and $j (floats) */ 43 $i = 5.0; 44 $j = 3.0; 45?> 46Correct result - 8: <?php echo $i+$j; ?><br> 47Correct result - 8: <?php echo $i+$j; ?><br> 48Correct result - 2: <?php echo $i-$j; ?><br> 49Correct result - -2: <?php echo $j-$i; ?><br> 50Correct result - 15: <?php echo $i*$j; ?><br> 51Correct result - 15: <?php echo $j*$i; ?><br> 52Correct result - 2: <?php echo $i%$j; ?><br> 53Correct result - 3: <?php echo $j%$i; ?><br> 54*********************************<br> 55 56*** Testing if/elseif/else control ***<br> 57 58<?php 59/* sick if/elseif/else test by Andi :) */ 60$a = 5; 61if ($a == "4") { 62 echo "This "." does "." not "." work<br>\n"; 63} elseif ($a == "5") { 64 echo "This "." works<br>\n"; 65 $a = 6; 66 if ("andi" == ($test = "andi")) { 67 echo "this_still_works<br>\n"; 68 } elseif (1) { 69 echo "should_not_print<br>\n"; 70 } else { 71 echo "should_not_print<br>\n"; 72 } 73 if (44 == 43) { 74 echo "should_not_print<br>\n"; 75 } else { 76 echo "should_print<br>\n"; 77 } 78} elseif ($a == 6) { 79 echo "this "."broken<br>\n"; 80 if (0) { 81 echo "this_should_not_print<br>\n"; 82 } else { 83 echo "TestingDanglingElse_This_Should_not_print<br>\n"; 84 } 85} else { 86 echo "This "."does "." not"." work<br>\n"; 87} 88?> 89 90 91*** Seriously nested if's test ***<br> 92** spelling correction by kluzz ** 93<?php 94/* yet another sick if/elseif/else test by Zeev */ 95$i=$j=0; 96echo "Only two lines of text should follow:<br>\n"; 97if (0) { /* this code is not supposed to be executed */ 98 echo "hmm, this shouldn't be displayed #1<br>\n"; 99 $j++; 100 if (1) { 101 $i 102+= 103 $j; 104 if (0) { 105 $j = ++$i; 106 if (1) { 107 $j *= $i; 108 echo "damn, this shouldn't be displayed<br>\n"; 109 } else { 110 $j /= $i; 111 ++$j; 112 echo "this shouldn't be displayed either<br>\n"; 113 } 114 } elseif (1) { 115 $i++; $j++; 116 echo "this isn't supposed to be displayed<br>\n"; 117 } 118 } elseif (0) { 119 $i++; 120 echo "this definitely shouldn't be displayed<br>\n"; 121 } else { 122 --$j; 123 echo "and this too shouldn't be displayed<br>\n"; 124 while ($j>0) { 125 $j--; 126 } 127 } 128} elseif (2-2) { /* as long as 2-2==0, this isn't supposed to be executed either */ 129 $i = ++$j; 130 echo "hmm, this shouldn't be displayed #2<br>\n"; 131 if (1) { 132 $j = ++$i; 133 if (0) { 134 $j = $i*2+$j*($i++); 135 if (1) { 136 $i++; 137 echo "damn, this shouldn't be displayed<br>\n"; 138 } else { 139 $j++; 140 echo "this shouldn't be displayed either<br>\n"; 141 } 142 } else if (1) { 143 ++$j; 144 echo "this isn't supposed to be displayed<br>\n"; 145 } 146 } elseif (0) { 147 $j++; 148 echo "this definitely shouldn't be displayed<br>\n"; 149 } else { 150 $i++; 151 echo "and this too shouldn't be displayed<br>\n"; 152 } 153} else { 154 $j=$i++; /* this should set $i to 1, but shouldn't change $j (it's assigned $i's previous values, zero) */ 155 echo "this should be displayed. should be: \$i=1, \$j=0. is: \$i=$i, \$j=$j<br>\n"; 156 if (1) { 157 $j += ++$i; /* ++$i --> $i==2, $j += 2 --> $j==2 */ 158 if (0) { 159 $j += 40; 160 if (1) { 161 $i += 50; 162 echo "damn, this shouldn't be displayed<br>\n"; 163 } else { 164 $j += 20; 165 echo "this shouldn't be displayed either<br>\n"; 166 } 167 } else if (1) { 168 $j *= $i; /* $j *= 2 --> $j == 4 */ 169 echo "this is supposed to be displayed. should be: \$i=2, \$j=4. is: \$i=$i, \$j=$j<br>\n"; 170 echo "3 loop iterations should follow:<br>\n"; 171 while ($i<=$j) { 172 echo $i++." $j<br>\n"; 173 } 174 } 175 } elseif (0) { 176 echo "this definitely shouldn't be displayed<br>\n"; 177 } else { 178 echo "and this too shouldn't be displayed<br>\n"; 179 } 180 echo "**********************************<br>\n"; 181} 182?> 183 184*** C-style else-if's ***<br> 185<?php 186 /* looks like without we even tried, C-style else-if structure works fine! */ 187 if ($a=0) { 188 echo "This shouldn't be displayed<br>\n"; 189 } else if ($a++) { 190 echo "This shouldn't be displayed either<br>\n"; 191 } else if (--$a) { 192 echo "No, this neither<br>\n"; 193 } else if (++$a) { 194 echo "This should be displayed<br>\n"; 195 } else { 196 echo "This shouldn't be displayed at all<br>\n"; 197 } 198?> 199*************************<br> 200 201*** WHILE tests ***<br> 202<?php 203$i=0; 204$j=20; 205while ($i<(2*$j)) { 206 if ($i>$j) { 207 echo "$i is greater than $j<br>\n"; 208 } else if ($i==$j) { 209 echo "$i equals $j<br>\n"; 210 } else { 211 echo "$i is smaller than $j<br>\n"; 212 } 213 $i++; 214} 215?> 216*******************<br> 217 218 219*** Nested WHILEs ***<br> 220<?php 221$arr_len=3; 222 223$i=0; 224while ($i<$arr_len) { 225 $j=0; 226 while ($j<$arr_len) { 227 $k=0; 228 while ($k<$arr_len) { 229 ${"test$i$j"}[$k] = $i+$j+$k; 230 $k++; 231 } 232 $j++; 233 } 234 $i++; 235} 236 237echo "Each array variable should be equal to the sum of its indices:<br>\n"; 238 239$i=0; 240while ($i<$arr_len) { 241 $j=0; 242 while ($j<$arr_len) { 243 $k=0; 244 while ($k<$arr_len) { 245 echo "\${test$i$j}[$k] = ".${"test$i$j"}[$k]."<br>\n"; 246 $k++; 247 } 248 $j++; 249 } 250 $i++; 251} 252?> 253*********************<br> 254 255*** hash test... ***<br> 256<?php 257/* 258$i=0; 259 260while ($i<10000) { 261 $arr[$i]=$i; 262 $i++; 263} 264 265$i=0; 266while ($i<10000) { 267 echo $arr[$i++]."<br>\n"; 268} 269*/ 270echo "commented out..."; 271?> 272 273**************************<br> 274 275*** Hash resizing test ***<br> 276<?php 277$i = 10; 278$a = 'b'; 279while ($i > 0) { 280 $a = $a . 'a'; 281 echo "$a<br>\n"; 282 $resize[$a] = $i; 283 $i--; 284} 285$i = 10; 286$a = 'b'; 287while ($i > 0) { 288 $a = $a . 'a'; 289 echo "$a<br>\n"; 290 echo $resize[$a]."<br>\n"; 291 $i--; 292} 293?> 294**************************<br> 295 296 297*** break/continue test ***<br> 298<?php 299$i=0; 300 301echo "\$i should go from 0 to 2<br>\n"; 302while ($i<5) { 303 if ($i>2) { 304 break; 305 } 306 $j=0; 307 echo "\$j should go from 3 to 4, and \$q should go from 3 to 4<br>\n"; 308 while ($j<5) { 309 if ($j<=2) { 310 $j++; 311 continue; 312 } 313 echo " \$j=$j<br>\n"; 314 for ($q=0; $q<=10; $q++) { 315 if ($q<3) { 316 continue; 317 } 318 if ($q>4) { 319 break; 320 } 321 echo " \$q=$q<br>\n"; 322 } 323 $j++; 324 } 325 $j=0; 326 echo "\$j should go from 0 to 2<br>\n"; 327 while ($j<5) { 328 if ($j>2) { 329 $k=0; 330 echo "\$k should go from 0 to 2<br>\n"; 331 while ($k<5) { 332 if ($k>2) { 333 break 2; 334 } 335 echo " \$k=$k<br>\n"; 336 $k++; 337 } 338 } 339 echo " \$j=$j<br>\n"; 340 $j++; 341 } 342 echo "\$i=$i<br>\n"; 343 $i++; 344} 345?> 346***********************<br> 347 348*** Nested file include test ***<br> 349<?php include("023-2.inc"); ?> 350********************************<br> 351 352<?php 353{ 354 echo "Tests completed.<br>\n"; # testing some PHP style comment... 355} 356?> 357