Return to 023-1.inc CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / tests / lang |
1.1 ! misho 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, arithemtic 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: ?> ! 20: This should read "blah": <?php echo "$test<br>\n"; ?> ! 21: This 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: ?> ! 30: Correct result - 8: <?php echo $i+$j; ?><br> ! 31: Correct result - 8: <?php echo $i+$j; ?><br> ! 32: Correct result - 2: <?php echo $i-$j; ?><br> ! 33: Correct result - -2: <?php echo $j-$i; ?><br> ! 34: Correct result - 15: <?php echo $i*$j; ?><br> ! 35: Correct result - 15: <?php echo $j*$i; ?><br> ! 36: Correct result - 2: <?php echo $i%$j; ?><br> ! 37: Correct 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: ?> ! 46: Correct result - 8: <?php echo $i+$j; ?><br> ! 47: Correct result - 8: <?php echo $i+$j; ?><br> ! 48: Correct result - 2: <?php echo $i-$j; ?><br> ! 49: Correct result - -2: <?php echo $j-$i; ?><br> ! 50: Correct result - 15: <?php echo $i*$j; ?><br> ! 51: Correct result - 15: <?php echo $j*$i; ?><br> ! 52: Correct result - 2: <?php echo $i%$j; ?><br> ! 53: Correct 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; ! 61: if ($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; ! 96: echo "Only two lines of text should follow:<br>\n"; ! 97: if (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; ! 205: while ($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; ! 224: while ($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: ! 237: echo "Each array variable should be equal to the sum of its indices:<br>\n"; ! 238: ! 239: $i=0; ! 240: while ($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: ! 260: while ($i<10000) { ! 261: $arr[$i]=$i; ! 262: $i++; ! 263: } ! 264: ! 265: $i=0; ! 266: while ($i<10000) { ! 267: echo $arr[$i++]."<br>\n"; ! 268: } ! 269: */ ! 270: echo "commented out..."; ! 271: ?> ! 272: ! 273: **************************<br> ! 274: ! 275: *** Hash resizing test ***<br> ! 276: <?php ! 277: $i = 10; ! 278: $a = 'b'; ! 279: while ($i > 0) { ! 280: $a = $a . 'a'; ! 281: echo "$a<br>\n"; ! 282: $resize[$a] = $i; ! 283: $i--; ! 284: } ! 285: $i = 10; ! 286: $a = 'b'; ! 287: while ($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: ! 301: echo "\$i should go from 0 to 2<br>\n"; ! 302: while ($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: ?>