Annotation of embedaddon/php/ext/standard/tests/strings/substr.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: Testing substr() function
                      3: --FILE--
                      4: <?php
                      5: 
                      6: /* Prototype: string substr( string str, int start[, int length] )
                      7:  * Description: Returns the portion of string specified by the start and length parameters.
                      8:  */
                      9: 
                     10: $strings_array = array( NULL, "", 12345, "abcdef", "123abc", "_123abc");
                     11: 
                     12: 
                     13: /* Testing for error conditions */
                     14: echo "*** Testing for error conditions ***\n";
                     15: 
                     16: /* Zero Argument */
                     17: var_dump( substr() );
                     18: 
                     19: /* NULL as Argument */
                     20: var_dump( substr(NULL) );
                     21: 
                     22: /* Single Argument */
                     23: var_dump( substr("abcde") );
                     24: 
                     25: /* Scalar Argument */
                     26: var_dump( substr(12345) );
                     27: 
                     28: /* more than valid number of arguments ( valid are 2 or 3 ) */
                     29: var_dump( substr("abcde", 2, 3, 4) );
                     30: 
                     31: $counter = 1;
                     32: foreach ($strings_array as $str) {
                     33:   /* variations with two arguments */
                     34:   /* start values >, < and = 0    */
                     35: 
                     36:   echo ("\n--- Iteration ".$counter." ---\n");
                     37:   echo ("\n-- Variations for two arguments --\n");
                     38:   var_dump ( substr($str, 1) );
                     39:   var_dump ( substr($str, 0) );
                     40:   var_dump ( substr($str, -2) );
                     41: 
                     42:   /* variations with three arguments */
                     43:   /* start value variations with length values  */
                     44: 
                     45:   echo ("\n-- Variations for three arguments --\n");
                     46:   var_dump ( substr($str, 1, 3) );
                     47:   var_dump ( substr($str, 1, 0) );
                     48:   var_dump ( substr($str, 1, -3) );
                     49:   var_dump ( substr($str, 0, 3) );
                     50:   var_dump ( substr($str, 0, 0) );
                     51:   var_dump ( substr($str, 0, -3) );
                     52:   var_dump ( substr($str, -2, 3) );
                     53:   var_dump ( substr($str, -2, 0 ) );
                     54:   var_dump ( substr($str, -2, -3) );
                     55: 
                     56:   $counter++;
                     57: }
                     58: 
                     59: /* variation of start and length to point to same element */
                     60: echo ("\n*** Testing for variations of start and length to point to same element ***\n");
                     61: var_dump (substr("abcde" , 2, -2) );
                     62: var_dump (substr("abcde" , -3, -2) );
                     63: 
                     64: /* Testing to return empty string when start denotes the position beyond the truncation (set by negative length) */
                     65: echo ("\n*** Testing for start > truncation  ***\n");
                     66: var_dump (substr("abcdef" , 4, -4) );
                     67: 
                     68: /* String with null character */
                     69: echo ("\n*** Testing for string with null characters ***\n");
                     70: var_dump (substr("abc\x0xy\x0z" ,2) );
                     71: 
                     72: /* String with international characters */
                     73: echo ("\n*** Testing for string with international characters ***\n");
                     74: var_dump (substr('\xIñtërnâtiônàlizætiøn',3) );
                     75: 
                     76: /* start <0 && -start > length */
                     77: echo "\n*** Start before the first char ***\n";
                     78: var_dump (substr("abcd" , -8) );
                     79:  
                     80: echo"\nDone";
                     81: 
                     82: ?>
                     83: --EXPECTF--
                     84: *** Testing for error conditions ***
                     85: 
                     86: Warning: substr() expects at least 2 parameters, 0 given in %s on line %d
                     87: NULL
                     88: 
                     89: Warning: substr() expects at least 2 parameters, 1 given in %s on line %d
                     90: NULL
                     91: 
                     92: Warning: substr() expects at least 2 parameters, 1 given in %s on line %d
                     93: NULL
                     94: 
                     95: Warning: substr() expects at least 2 parameters, 1 given in %s on line %d
                     96: NULL
                     97: 
                     98: Warning: substr() expects at most 3 parameters, 4 given in %s on line %d
                     99: NULL
                    100: 
                    101: --- Iteration 1 ---
                    102: 
                    103: -- Variations for two arguments --
                    104: bool(false)
                    105: bool(false)
                    106: bool(false)
                    107: 
                    108: -- Variations for three arguments --
                    109: bool(false)
                    110: bool(false)
                    111: bool(false)
                    112: bool(false)
                    113: bool(false)
                    114: bool(false)
                    115: bool(false)
                    116: bool(false)
                    117: bool(false)
                    118: 
                    119: --- Iteration 2 ---
                    120: 
                    121: -- Variations for two arguments --
                    122: bool(false)
                    123: bool(false)
                    124: bool(false)
                    125: 
                    126: -- Variations for three arguments --
                    127: bool(false)
                    128: bool(false)
                    129: bool(false)
                    130: bool(false)
                    131: bool(false)
                    132: bool(false)
                    133: bool(false)
                    134: bool(false)
                    135: bool(false)
                    136: 
                    137: --- Iteration 3 ---
                    138: 
                    139: -- Variations for two arguments --
                    140: string(4) "2345"
                    141: string(5) "12345"
                    142: string(2) "45"
                    143: 
                    144: -- Variations for three arguments --
                    145: string(3) "234"
                    146: string(0) ""
                    147: string(1) "2"
                    148: string(3) "123"
                    149: string(0) ""
                    150: string(2) "12"
                    151: string(2) "45"
                    152: string(0) ""
                    153: string(0) ""
                    154: 
                    155: --- Iteration 4 ---
                    156: 
                    157: -- Variations for two arguments --
                    158: string(5) "bcdef"
                    159: string(6) "abcdef"
                    160: string(2) "ef"
                    161: 
                    162: -- Variations for three arguments --
                    163: string(3) "bcd"
                    164: string(0) ""
                    165: string(2) "bc"
                    166: string(3) "abc"
                    167: string(0) ""
                    168: string(3) "abc"
                    169: string(2) "ef"
                    170: string(0) ""
                    171: string(0) ""
                    172: 
                    173: --- Iteration 5 ---
                    174: 
                    175: -- Variations for two arguments --
                    176: string(5) "23abc"
                    177: string(6) "123abc"
                    178: string(2) "bc"
                    179: 
                    180: -- Variations for three arguments --
                    181: string(3) "23a"
                    182: string(0) ""
                    183: string(2) "23"
                    184: string(3) "123"
                    185: string(0) ""
                    186: string(3) "123"
                    187: string(2) "bc"
                    188: string(0) ""
                    189: string(0) ""
                    190: 
                    191: --- Iteration 6 ---
                    192: 
                    193: -- Variations for two arguments --
                    194: string(6) "123abc"
                    195: string(7) "_123abc"
                    196: string(2) "bc"
                    197: 
                    198: -- Variations for three arguments --
                    199: string(3) "123"
                    200: string(0) ""
                    201: string(3) "123"
                    202: string(3) "_12"
                    203: string(0) ""
                    204: string(4) "_123"
                    205: string(2) "bc"
                    206: string(0) ""
                    207: string(0) ""
                    208: 
                    209: *** Testing for variations of start and length to point to same element ***
                    210: string(1) "c"
                    211: string(1) "c"
                    212: 
                    213: *** Testing for start > truncation  ***
                    214: bool(false)
                    215: 
                    216: *** Testing for string with null characters ***
                    217: string(6) "cxyz"
                    218: 
                    219: *** Testing for string with international characters ***
                    220: string(26) "ñtërnâtiônàlizætiøn"
                    221: 
                    222: *** Start before the first char ***
                    223: string(4) "abcd"
                    224: 
                    225: Done

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