File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / tests / lang / 023-1.inc
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 23:48:06 2012 UTC (12 years, 4 months ago) by misho
Branches: php, MAIN
CVS tags: v5_4_3elwix, v5_4_29p0, v5_4_29, v5_4_20p0, v5_4_20, v5_4_17p0, v5_4_17, v5_3_10, HEAD
php

    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: ?>

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>