Annotation of embedaddon/php/ext/standard/tests/array/009.phpt, revision 1.1

1.1     ! misho       1: --TEST--
        !             2: Test key(), current(), next() & reset() functions
        !             3: --FILE--
        !             4: <?php
        !             5: /* Prototype & Usage: 
        !             6:    mixed key ( array &$array ) -> returns the index element of the current array position
        !             7:    mixed current ( array &$array ) -> returns the current element in the array
        !             8:    mixed next ( array &$array ) -> similar to current() but advances the internal pointer to next element
        !             9:    mixed reset ( array &$array ) -> Reset the internal pointer to first element
        !            10: */
        !            11: 
        !            12: $basic_arrays = array (
        !            13:   array(0),  // array with element as 0
        !            14:   array(1),  // array with single element
        !            15:   array(1,2, 3, -1, -2, -3),               // array of integers
        !            16:   array(1.1, 2.2, 3.3, -1.1, -2.2, -3.3),  // array of floats
        !            17:   array('a', 'b', 'c', "ab", "ac", "ad"),  // string array
        !            18:   array("a" => "apple", "b" => "book", "c" => "cook"),  // associative array
        !            19:   array('d' => 'drink', 'p' => 'port', 's' => 'set'),   // another associative array
        !            20:   array(1 => 'One', 2 => 'two', 3 => "three")           // associative array with key as integers
        !            21: );
        !            22:             
        !            23: $varient_arrays = array (
        !            24:    array(),    // empty array
        !            25:    array(""),  // array with null string
        !            26:    array(NULL),// array with NULL 
        !            27:    array(null),// array with null
        !            28:    array(NULL, true, null, "", 1), // mixed array
        !            29:    array(-1.5 => "test", -2 => "rest", 2.5 => "two", 
        !            30:          "" => "string", 0 => "zero", "" => "" ) // mixed array
        !            31: );  
        !            32: 
        !            33: echo "*** Testing basic operations ***\n";
        !            34: $loop_count = 1;
        !            35: foreach ($basic_arrays as $sub_array )  {
        !            36:   echo "-- Iteration $loop_count --\n";
        !            37:   $loop_count++;
        !            38:   $c = count ($sub_array);
        !            39:   $c++; // increment by one to create the situation of accessing beyond array size
        !            40:   while ( $c ) {
        !            41:     var_dump( current($sub_array)); // current element
        !            42:     var_dump( key($sub_array) );    // key of the current element
        !            43:     var_dump( next($sub_array) );   // move to next element
        !            44:     $c --;
        !            45:   }
        !            46:   var_dump( reset($sub_array) );    // reset the internal pointer to first element
        !            47:   var_dump( key($sub_array) );      // access the array after reset
        !            48:   var_dump( $sub_array );           // dump the array to see that its intact
        !            49: 
        !            50:   echo "\n";
        !            51: }
        !            52: 
        !            53: echo "\n*** Testing possible variations ***\n";
        !            54: $loop_count = 1;
        !            55: foreach ($varient_arrays as $sub_array )  {
        !            56:   echo "-- Iteration $loop_count --\n";
        !            57:   $loop_count++;
        !            58:   $c = count ($sub_array);
        !            59:   $c++; // increment by one to create the situation of accessing beyond array size
        !            60:   while ( $c ) {
        !            61:     var_dump( current($sub_array)); // current element
        !            62:     var_dump( key($sub_array) );    // key of the current element
        !            63:     var_dump( next($sub_array) );   // move to next element
        !            64:     $c --;
        !            65:   }
        !            66:   var_dump( reset($sub_array) );    // reset the internal pointer to first element
        !            67:   var_dump( key($sub_array) );      // access the array after reset
        !            68:   var_dump( $sub_array );           // dump the array to see that its intact
        !            69:   echo "\n";
        !            70: }
        !            71: 
        !            72: /*test these functions on array which is already unset */ 
        !            73: echo "\n-- Testing variation: when array is unset --\n";
        !            74: $unset_array = array (1);
        !            75: unset($unset_array);
        !            76: 
        !            77: var_dump( current($unset_array) );
        !            78: var_dump( key($unset_array) );
        !            79: var_dump( next($unset_array) );
        !            80: var_dump( reset($unset_array) );
        !            81: 
        !            82: 
        !            83: echo "\n*** Testing error conditions ***\n";
        !            84: //Zero argument, expected 1 argument
        !            85: var_dump( key() );
        !            86: var_dump( current() );
        !            87: var_dump( reset() );
        !            88: var_dump( next() );
        !            89: 
        !            90: // args more than expected, expected 1 argument
        !            91: $temp_array = array(1);
        !            92: var_dump( key($temp_array, $temp_array) );
        !            93: var_dump( current($temp_array, $temp_array) );
        !            94: var_dump( reset($temp_array, $temp_array) );
        !            95: var_dump( next($temp_array, $temp_array) );
        !            96: 
        !            97: // invalid args type, valid arguement: array 
        !            98: $int_var = 1;
        !            99: $float_var = 1.5;
        !           100: $string = "string";
        !           101: var_dump( key($int_var) );
        !           102: var_dump( key($float_var) );
        !           103: var_dump( key($string) );
        !           104: 
        !           105: var_dump( current($int_var) );
        !           106: var_dump( current($float_var) );
        !           107: var_dump( current($string) );
        !           108: 
        !           109: var_dump( next($int_var) );
        !           110: var_dump( next($float_var) );
        !           111: var_dump( next($string) );
        !           112: 
        !           113: var_dump( reset($int_var) );
        !           114: var_dump( reset($float_var) );
        !           115: var_dump( reset($string) );
        !           116: 
        !           117: echo "Done\n";
        !           118: ?>
        !           119: --EXPECTF--    
        !           120: *** Testing basic operations ***
        !           121: -- Iteration 1 --
        !           122: int(0)
        !           123: int(0)
        !           124: bool(false)
        !           125: bool(false)
        !           126: NULL
        !           127: bool(false)
        !           128: int(0)
        !           129: int(0)
        !           130: array(1) {
        !           131:   [0]=>
        !           132:   int(0)
        !           133: }
        !           134: 
        !           135: -- Iteration 2 --
        !           136: int(1)
        !           137: int(0)
        !           138: bool(false)
        !           139: bool(false)
        !           140: NULL
        !           141: bool(false)
        !           142: int(1)
        !           143: int(0)
        !           144: array(1) {
        !           145:   [0]=>
        !           146:   int(1)
        !           147: }
        !           148: 
        !           149: -- Iteration 3 --
        !           150: int(1)
        !           151: int(0)
        !           152: int(2)
        !           153: int(2)
        !           154: int(1)
        !           155: int(3)
        !           156: int(3)
        !           157: int(2)
        !           158: int(-1)
        !           159: int(-1)
        !           160: int(3)
        !           161: int(-2)
        !           162: int(-2)
        !           163: int(4)
        !           164: int(-3)
        !           165: int(-3)
        !           166: int(5)
        !           167: bool(false)
        !           168: bool(false)
        !           169: NULL
        !           170: bool(false)
        !           171: int(1)
        !           172: int(0)
        !           173: array(6) {
        !           174:   [0]=>
        !           175:   int(1)
        !           176:   [1]=>
        !           177:   int(2)
        !           178:   [2]=>
        !           179:   int(3)
        !           180:   [3]=>
        !           181:   int(-1)
        !           182:   [4]=>
        !           183:   int(-2)
        !           184:   [5]=>
        !           185:   int(-3)
        !           186: }
        !           187: 
        !           188: -- Iteration 4 --
        !           189: float(1.1)
        !           190: int(0)
        !           191: float(2.2)
        !           192: float(2.2)
        !           193: int(1)
        !           194: float(3.3)
        !           195: float(3.3)
        !           196: int(2)
        !           197: float(-1.1)
        !           198: float(-1.1)
        !           199: int(3)
        !           200: float(-2.2)
        !           201: float(-2.2)
        !           202: int(4)
        !           203: float(-3.3)
        !           204: float(-3.3)
        !           205: int(5)
        !           206: bool(false)
        !           207: bool(false)
        !           208: NULL
        !           209: bool(false)
        !           210: float(1.1)
        !           211: int(0)
        !           212: array(6) {
        !           213:   [0]=>
        !           214:   float(1.1)
        !           215:   [1]=>
        !           216:   float(2.2)
        !           217:   [2]=>
        !           218:   float(3.3)
        !           219:   [3]=>
        !           220:   float(-1.1)
        !           221:   [4]=>
        !           222:   float(-2.2)
        !           223:   [5]=>
        !           224:   float(-3.3)
        !           225: }
        !           226: 
        !           227: -- Iteration 5 --
        !           228: string(1) "a"
        !           229: int(0)
        !           230: string(1) "b"
        !           231: string(1) "b"
        !           232: int(1)
        !           233: string(1) "c"
        !           234: string(1) "c"
        !           235: int(2)
        !           236: string(2) "ab"
        !           237: string(2) "ab"
        !           238: int(3)
        !           239: string(2) "ac"
        !           240: string(2) "ac"
        !           241: int(4)
        !           242: string(2) "ad"
        !           243: string(2) "ad"
        !           244: int(5)
        !           245: bool(false)
        !           246: bool(false)
        !           247: NULL
        !           248: bool(false)
        !           249: string(1) "a"
        !           250: int(0)
        !           251: array(6) {
        !           252:   [0]=>
        !           253:   string(1) "a"
        !           254:   [1]=>
        !           255:   string(1) "b"
        !           256:   [2]=>
        !           257:   string(1) "c"
        !           258:   [3]=>
        !           259:   string(2) "ab"
        !           260:   [4]=>
        !           261:   string(2) "ac"
        !           262:   [5]=>
        !           263:   string(2) "ad"
        !           264: }
        !           265: 
        !           266: -- Iteration 6 --
        !           267: string(5) "apple"
        !           268: string(1) "a"
        !           269: string(4) "book"
        !           270: string(4) "book"
        !           271: string(1) "b"
        !           272: string(4) "cook"
        !           273: string(4) "cook"
        !           274: string(1) "c"
        !           275: bool(false)
        !           276: bool(false)
        !           277: NULL
        !           278: bool(false)
        !           279: string(5) "apple"
        !           280: string(1) "a"
        !           281: array(3) {
        !           282:   ["a"]=>
        !           283:   string(5) "apple"
        !           284:   ["b"]=>
        !           285:   string(4) "book"
        !           286:   ["c"]=>
        !           287:   string(4) "cook"
        !           288: }
        !           289: 
        !           290: -- Iteration 7 --
        !           291: string(5) "drink"
        !           292: string(1) "d"
        !           293: string(4) "port"
        !           294: string(4) "port"
        !           295: string(1) "p"
        !           296: string(3) "set"
        !           297: string(3) "set"
        !           298: string(1) "s"
        !           299: bool(false)
        !           300: bool(false)
        !           301: NULL
        !           302: bool(false)
        !           303: string(5) "drink"
        !           304: string(1) "d"
        !           305: array(3) {
        !           306:   ["d"]=>
        !           307:   string(5) "drink"
        !           308:   ["p"]=>
        !           309:   string(4) "port"
        !           310:   ["s"]=>
        !           311:   string(3) "set"
        !           312: }
        !           313: 
        !           314: -- Iteration 8 --
        !           315: string(3) "One"
        !           316: int(1)
        !           317: string(3) "two"
        !           318: string(3) "two"
        !           319: int(2)
        !           320: string(5) "three"
        !           321: string(5) "three"
        !           322: int(3)
        !           323: bool(false)
        !           324: bool(false)
        !           325: NULL
        !           326: bool(false)
        !           327: string(3) "One"
        !           328: int(1)
        !           329: array(3) {
        !           330:   [1]=>
        !           331:   string(3) "One"
        !           332:   [2]=>
        !           333:   string(3) "two"
        !           334:   [3]=>
        !           335:   string(5) "three"
        !           336: }
        !           337: 
        !           338: 
        !           339: *** Testing possible variations ***
        !           340: -- Iteration 1 --
        !           341: bool(false)
        !           342: NULL
        !           343: bool(false)
        !           344: bool(false)
        !           345: NULL
        !           346: array(0) {
        !           347: }
        !           348: 
        !           349: -- Iteration 2 --
        !           350: string(0) ""
        !           351: int(0)
        !           352: bool(false)
        !           353: bool(false)
        !           354: NULL
        !           355: bool(false)
        !           356: string(0) ""
        !           357: int(0)
        !           358: array(1) {
        !           359:   [0]=>
        !           360:   string(0) ""
        !           361: }
        !           362: 
        !           363: -- Iteration 3 --
        !           364: NULL
        !           365: int(0)
        !           366: bool(false)
        !           367: bool(false)
        !           368: NULL
        !           369: bool(false)
        !           370: NULL
        !           371: int(0)
        !           372: array(1) {
        !           373:   [0]=>
        !           374:   NULL
        !           375: }
        !           376: 
        !           377: -- Iteration 4 --
        !           378: NULL
        !           379: int(0)
        !           380: bool(false)
        !           381: bool(false)
        !           382: NULL
        !           383: bool(false)
        !           384: NULL
        !           385: int(0)
        !           386: array(1) {
        !           387:   [0]=>
        !           388:   NULL
        !           389: }
        !           390: 
        !           391: -- Iteration 5 --
        !           392: NULL
        !           393: int(0)
        !           394: bool(true)
        !           395: bool(true)
        !           396: int(1)
        !           397: NULL
        !           398: NULL
        !           399: int(2)
        !           400: string(0) ""
        !           401: string(0) ""
        !           402: int(3)
        !           403: int(1)
        !           404: int(1)
        !           405: int(4)
        !           406: bool(false)
        !           407: bool(false)
        !           408: NULL
        !           409: bool(false)
        !           410: NULL
        !           411: int(0)
        !           412: array(5) {
        !           413:   [0]=>
        !           414:   NULL
        !           415:   [1]=>
        !           416:   bool(true)
        !           417:   [2]=>
        !           418:   NULL
        !           419:   [3]=>
        !           420:   string(0) ""
        !           421:   [4]=>
        !           422:   int(1)
        !           423: }
        !           424: 
        !           425: -- Iteration 6 --
        !           426: string(4) "test"
        !           427: int(-1)
        !           428: string(4) "rest"
        !           429: string(4) "rest"
        !           430: int(-2)
        !           431: string(3) "two"
        !           432: string(3) "two"
        !           433: int(2)
        !           434: string(0) ""
        !           435: string(0) ""
        !           436: string(0) ""
        !           437: string(4) "zero"
        !           438: string(4) "zero"
        !           439: int(0)
        !           440: bool(false)
        !           441: bool(false)
        !           442: NULL
        !           443: bool(false)
        !           444: string(4) "test"
        !           445: int(-1)
        !           446: array(5) {
        !           447:   [-1]=>
        !           448:   string(4) "test"
        !           449:   [-2]=>
        !           450:   string(4) "rest"
        !           451:   [2]=>
        !           452:   string(3) "two"
        !           453:   [""]=>
        !           454:   string(0) ""
        !           455:   [0]=>
        !           456:   string(4) "zero"
        !           457: }
        !           458: 
        !           459: 
        !           460: -- Testing variation: when array is unset --
        !           461: 
        !           462: Warning: current() expects parameter 1 to be array, null given in %s on line %d
        !           463: NULL
        !           464: 
        !           465: Warning: key() expects parameter 1 to be array, null given in %s on line %d
        !           466: NULL
        !           467: 
        !           468: Warning: next() expects parameter 1 to be array, null given in %s on line %d
        !           469: NULL
        !           470: 
        !           471: Warning: reset() expects parameter 1 to be array, null given in %s on line %d
        !           472: NULL
        !           473: 
        !           474: *** Testing error conditions ***
        !           475: 
        !           476: Warning: key() expects exactly 1 parameter, 0 given in %s on line %d
        !           477: NULL
        !           478: 
        !           479: Warning: current() expects exactly 1 parameter, 0 given in %s on line %d
        !           480: NULL
        !           481: 
        !           482: Warning: reset() expects exactly 1 parameter, 0 given in %s on line %d
        !           483: NULL
        !           484: 
        !           485: Warning: next() expects exactly 1 parameter, 0 given in %s on line %d
        !           486: NULL
        !           487: 
        !           488: Warning: key() expects exactly 1 parameter, 2 given in %s on line %d
        !           489: NULL
        !           490: 
        !           491: Warning: current() expects exactly 1 parameter, 2 given in %s on line %d
        !           492: NULL
        !           493: 
        !           494: Warning: reset() expects exactly 1 parameter, 2 given in %s on line %d
        !           495: NULL
        !           496: 
        !           497: Warning: next() expects exactly 1 parameter, 2 given in %s on line %d
        !           498: NULL
        !           499: 
        !           500: Warning: key() expects parameter 1 to be array, integer given in %s on line %d
        !           501: NULL
        !           502: 
        !           503: Warning: key() expects parameter 1 to be array, double given in %s on line %d
        !           504: NULL
        !           505: 
        !           506: Warning: key() expects parameter 1 to be array, string given in %s on line %d
        !           507: NULL
        !           508: 
        !           509: Warning: current() expects parameter 1 to be array, integer given in %s on line %d
        !           510: NULL
        !           511: 
        !           512: Warning: current() expects parameter 1 to be array, double given in %s on line %d
        !           513: NULL
        !           514: 
        !           515: Warning: current() expects parameter 1 to be array, string given in %s on line %d
        !           516: NULL
        !           517: 
        !           518: Warning: next() expects parameter 1 to be array, integer given in %s on line %d
        !           519: NULL
        !           520: 
        !           521: Warning: next() expects parameter 1 to be array, double given in %s on line %d
        !           522: NULL
        !           523: 
        !           524: Warning: next() expects parameter 1 to be array, string given in %s on line %d
        !           525: NULL
        !           526: 
        !           527: Warning: reset() expects parameter 1 to be array, integer given in %s on line %d
        !           528: NULL
        !           529: 
        !           530: Warning: reset() expects parameter 1 to be array, double given in %s on line %d
        !           531: NULL
        !           532: 
        !           533: Warning: reset() expects parameter 1 to be array, string given in %s on line %d
        !           534: NULL
        !           535: Done

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