Return to natcasesort_variation11.phpt CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / standard / tests / array |
1.1 misho 1: --TEST-- 2: Test natcasesort() function : usage variations - Different array keys 3: --FILE-- 4: <?php 5: /* Prototype : bool natcasesort(array &$array_arg) 6: * Description: Sort an array using case-insensitive natural sort 7: * Source code: ext/standard/array.c 8: */ 9: 10: /* 11: * Pass arrays where the keys are different data types to test behaviour of natcasesort() 12: */ 13: 14: echo "*** Testing natcasesort() : 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: // arrays with keys as different data types to be passed as $array_arg 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.3456789000e6 => '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: // duplicate values 95: /*13*/ 'duplicate' => array( 96: 'foo' => 'bar', 97: 'baz' => 'bar', 98: 'hello' => 'world' 99: ), 100: 101: ); 102: 103: // loop through each element of $inputs to check the behavior of natcasesort() 104: $iterator = 1; 105: foreach($inputs as $input) { 106: echo "\n-- Iteration $iterator --\n"; 107: var_dump( natcasesort($input) ); 108: var_dump($input); 109: $iterator++; 110: }; 111: 112: echo "Done"; 113: ?> 114: 115: --EXPECTF-- 116: *** Testing natcasesort() : usage variations *** 117: 118: -- Iteration 1 -- 119: bool(true) 120: array(4) { 121: [-2345]=> 122: string(8) "negative" 123: [1]=> 124: string(3) "one" 125: [12345]=> 126: string(8) "positive" 127: [0]=> 128: string(4) "zero" 129: } 130: 131: -- Iteration 2 -- 132: bool(true) 133: array(3) { 134: [0]=> 135: string(4) "half" 136: [-10]=> 137: string(8) "negative" 138: [10]=> 139: string(8) "positive" 140: } 141: 142: -- Iteration 3 -- 143: bool(true) 144: array(2) { 145: [12345678]=> 146: string(5) "large" 147: [0]=> 148: string(5) "small" 149: } 150: 151: -- Iteration 4 -- 152: bool(true) 153: array(1) { 154: [""]=> 155: string(6) "null 1" 156: } 157: 158: -- Iteration 5 -- 159: bool(true) 160: array(1) { 161: [""]=> 162: string(6) "null 2" 163: } 164: 165: -- Iteration 6 -- 166: bool(true) 167: array(2) { 168: [0]=> 169: string(6) "lowerf" 170: [1]=> 171: string(6) "lowert" 172: } 173: 174: -- Iteration 7 -- 175: bool(true) 176: array(2) { 177: [0]=> 178: string(6) "upperf" 179: [1]=> 180: string(6) "uppert" 181: } 182: 183: -- Iteration 8 -- 184: bool(true) 185: array(1) { 186: [""]=> 187: string(6) "emptyd" 188: } 189: 190: -- Iteration 9 -- 191: bool(true) 192: array(1) { 193: [""]=> 194: string(6) "emptys" 195: } 196: 197: -- Iteration 10 -- 198: bool(true) 199: array(3) { 200: ["stringd"]=> 201: string(7) "stringd" 202: ["hello world"]=> 203: string(7) "stringh" 204: ["strings"]=> 205: string(7) "strings" 206: } 207: 208: -- Iteration 11 -- 209: bool(true) 210: array(1) { 211: [""]=> 212: string(9) "undefined" 213: } 214: 215: -- Iteration 12 -- 216: bool(true) 217: array(1) { 218: [""]=> 219: string(5) "unset" 220: } 221: 222: -- Iteration 13 -- 223: bool(true) 224: array(3) { 225: ["foo"]=> 226: string(3) "bar" 227: ["baz"]=> 228: string(3) "bar" 229: ["hello"]=> 230: string(5) "world" 231: } 232: Done