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

1.1       misho       1: --TEST--
                      2: Test uasort() function : usage variations - sort array with all posible keys
                      3: --FILE--
                      4: <?php
                      5: /* Prototype  : bool uasort(array $array_arg, string $cmp_function)
                      6:  * Description: Sort an array with a user-defined comparison function and maintain index association 
                      7:  * Source code: ext/standard/array.c
                      8: */
                      9: 
                     10: /*
                     11: * Testing uasort() with 'array_arg' having different keys
                     12: */
                     13: 
                     14: echo "*** Testing uasort() : Sorting array with all possible keys ***\n";
                     15: 
                     16: //comparison function
                     17: /* Prototype : int cmp_function(mixed $value1, mixed $value2)
                     18:  * Parameters : $value1 and $value2 - values to be compared
                     19:  * Return value : 0 - if both values are same
                     20:  *                1 - if value1 is greater than value2
                     21:  *               -1 - if value1 is less than value2
                     22:  * Description : compares value1 and value2
                     23:  */
                     24: function cmp_function($value1, $value2)
                     25: {
                     26:   if($value1 == $value2) {
                     27:     return 0;
                     28:   }
                     29:   else if($value1 > $value2) {
                     30:     return -1;
                     31:   }
                     32:   else {
                     33:     return 1;
                     34:   }
                     35: }
                     36: 
                     37: // different heredoc strings
                     38: //empty heredoc string
                     39: $empty_heredoc = <<<EOT1
                     40: EOT1;
                     41:   
                     42: // single line heredoc string
                     43: $simple_heredoc = <<<EOT2
                     44: simple
                     45: EOT2;
                     46:   
                     47: // multiline heredoc string
                     48: $multiline_heredoc = <<<EOT3
                     49: multiline heredoc with 123
                     50: and speci@! ch@r..\ncheck\talso
                     51: EOT3;
                     52:   
                     53: $array_arg = array(
                     54:   // default key
                     55:   1,  //expecting: default key 0, value will be replaced by 'FALSE'  
                     56: 
                     57:   // numeric keys
                     58:   1 => 10, // expecting: value will be replaced by 'TRUE'
                     59:   -2 => 9,
                     60:   8.9 => 8, 
                     61:   012 => 7,
                     62:   0x34 => 6,
                     63: 
                     64:   // string keys
                     65:   'key' => 5,  //single quoted key
                     66:   "two" => 4,  //double quoted key
                     67:   '' => 3,
                     68:   "" => 2,  
                     69:   " " => 0,  // space as key
                     70:   
                     71:   // bool keys
                     72:   true => 15,
                     73:   false => 5,
                     74:   TRUE => 100, 
                     75:   FALSE => 25,
                     76: 
                     77:   // null keys
                     78:   null => 20,  // expecting: value will be replaced by 'NULL'
                     79:   NULL => 35,
                     80: 
                     81:   // binary key
                     82:   "a".chr(0)."b" => 45,
                     83:   b"binary" => 30,
                     84: 
                     85:   //heredoc keys
                     86:   $empty_heredoc => 90,
                     87:   $simple_heredoc => 75,
                     88:   $multiline_heredoc => 200,
                     89: );
                     90: 
                     91: var_dump( uasort($array_arg, 'cmp_function') );
                     92: echo "-- Sorted array after uasort() function call --\n";
                     93: var_dump($array_arg);
                     94: 
                     95: echo "Done"
                     96: ?>
                     97: --EXPECTF--
                     98: *** Testing uasort() : Sorting array with all possible keys ***
                     99: bool(true)
                    100: -- Sorted array after uasort() function call --
                    101: array(14) {
                    102:   ["multiline heredoc with 123
                    103: and speci@! ch@r..
                    104: check  also"]=>
                    105:   int(200)
                    106:   [1]=>
                    107:   int(100)
                    108:   [""]=>
                    109:   int(90)
                    110:   ["simple"]=>
                    111:   int(75)
                    112:   ["ab"]=>
                    113:   int(45)
                    114:   ["binary"]=>
                    115:   int(30)
                    116:   [0]=>
                    117:   int(25)
                    118:   [-2]=>
                    119:   int(9)
                    120:   [8]=>
                    121:   int(8)
                    122:   [10]=>
                    123:   int(7)
                    124:   [52]=>
                    125:   int(6)
                    126:   ["key"]=>
                    127:   int(5)
                    128:   ["two"]=>
                    129:   int(4)
                    130:   [" "]=>
                    131:   int(0)
                    132: }
                    133: Done

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