Annotation of embedaddon/php/ext/standard/tests/array/array_shift_variation3.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: Test array_shift() function : usage variations - Pass array with different data types as keys
                      3: --FILE--
                      4: <?php
                      5: /* Prototype  : mixed array_shift(array &$stack)
                      6:  * Description: Pops an element off the beginning of the array 
                      7:  * Source code: ext/standard/array.c
                      8:  */
                      9: 
                     10: /*
                     11:  * Pass arrays with different data types as keys to test how array_shift() re-assigns keys
                     12:  */
                     13: 
                     14: echo "*** Testing array_shift() : usage variations ***\n";
                     15: 
                     16: //get an unset variable
                     17: $unset_var = 10;
                     18: unset ($unset_var);
                     19: 
                     20: // heredoc string
                     21: $heredoc = <<<EOT
                     22: hello world
                     23: EOT;
                     24: 
                     25: // unexpected values to be passed to $stack argument
                     26: $inputs = array(
                     27: 
                     28:        // int data
                     29: /*1*/  'int' => array(
                     30:        0 => 'zero',
                     31:        1 => 'one',
                     32:        12345 => 'positive',
                     33:        -2345 => 'negative',
                     34:        ),
                     35: 
                     36:        // float data
                     37: /*2*/  'float' => array(
                     38:        10.5 => 'positive',
                     39:        -10.5 => 'negative',
                     40:        .5 => 'half',
                     41:        ),
                     42:        
                     43: /*3*/  'extreme floats' => array(
                     44:        12.3456789000e10 => 'large',
                     45:        12.3456789000E-10 => 'small',
                     46:        ),
                     47: 
                     48:        // null data
                     49: /*4*/  'null uppercase' => array(
                     50:        NULL => 'null 1',
                     51:        ), 
                     52:        
                     53: /*5*/  'null lowercase' => array(
                     54:        null => 'null 2',
                     55:        ),
                     56: 
                     57:        // boolean data
                     58: /*6*/  'bool lowercase' => array(
                     59:        true => 'lowert',
                     60:        false => 'lowerf',
                     61:        ),
                     62:        
                     63: /*7*/  'bool uppercase' => array(
                     64:        TRUE => 'uppert',
                     65:        FALSE => 'upperf',
                     66:        ),
                     67:        
                     68:        // empty data
                     69: /*8*/  'empty double quotes' => array(
                     70:        "" => 'emptyd',
                     71:        ),
                     72:        
                     73: /*9*/  'empty single quotes' => array(
                     74:        '' => 'emptys',
                     75:        ),
                     76: 
                     77:        // string data
                     78: /*10*/ 'string' => array(
                     79:        "stringd" => 'stringd',
                     80:        'strings' => 'strings',
                     81:        $heredoc => 'stringh',
                     82:        ),
                     83: 
                     84:        // undefined data
                     85: /*11*/ 'undefined' => array(
                     86:        @$undefined_var => 'undefined',
                     87:        ),
                     88: 
                     89:        // unset data
                     90: /*12*/ 'unset' => array(
                     91:        @$unset_var => 'unset',
                     92:        ),
                     93: );
                     94: 
                     95: // loop through each element of $inputs to check the behavior of array_shift()
                     96: $iterator = 1;
                     97: foreach($inputs as $key => $input) {
                     98:   echo "\n-- Iteration $iterator : $key data --\n";
                     99:   var_dump( array_shift($input) );
                    100:   var_dump($input);
                    101:   $iterator++;
                    102: };
                    103: 
                    104: echo "Done";
                    105: ?>
                    106: --EXPECTF--
                    107: *** Testing array_shift() : usage variations ***
                    108: 
                    109: -- Iteration 1 : int data --
                    110: string(4) "zero"
                    111: array(3) {
                    112:   [0]=>
                    113:   string(3) "one"
                    114:   [1]=>
                    115:   string(8) "positive"
                    116:   [2]=>
                    117:   string(8) "negative"
                    118: }
                    119: 
                    120: -- Iteration 2 : float data --
                    121: string(8) "positive"
                    122: array(2) {
                    123:   [0]=>
                    124:   string(8) "negative"
                    125:   [1]=>
                    126:   string(4) "half"
                    127: }
                    128: 
                    129: -- Iteration 3 : extreme floats data --
                    130: string(5) "large"
                    131: array(1) {
                    132:   [0]=>
                    133:   string(5) "small"
                    134: }
                    135: 
                    136: -- Iteration 4 : null uppercase data --
                    137: string(6) "null 1"
                    138: array(0) {
                    139: }
                    140: 
                    141: -- Iteration 5 : null lowercase data --
                    142: string(6) "null 2"
                    143: array(0) {
                    144: }
                    145: 
                    146: -- Iteration 6 : bool lowercase data --
                    147: string(6) "lowert"
                    148: array(1) {
                    149:   [0]=>
                    150:   string(6) "lowerf"
                    151: }
                    152: 
                    153: -- Iteration 7 : bool uppercase data --
                    154: string(6) "uppert"
                    155: array(1) {
                    156:   [0]=>
                    157:   string(6) "upperf"
                    158: }
                    159: 
                    160: -- Iteration 8 : empty double quotes data --
                    161: string(6) "emptyd"
                    162: array(0) {
                    163: }
                    164: 
                    165: -- Iteration 9 : empty single quotes data --
                    166: string(6) "emptys"
                    167: array(0) {
                    168: }
                    169: 
                    170: -- Iteration 10 : string data --
                    171: string(7) "stringd"
                    172: array(2) {
                    173:   ["strings"]=>
                    174:   string(7) "strings"
                    175:   ["hello world"]=>
                    176:   string(7) "stringh"
                    177: }
                    178: 
                    179: -- Iteration 11 : undefined data --
                    180: string(9) "undefined"
                    181: array(0) {
                    182: }
                    183: 
                    184: -- Iteration 12 : unset data --
                    185: string(5) "unset"
                    186: array(0) {
                    187: }
                    188: Done

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