Annotation of embedaddon/php/ext/standard/tests/strings/strlen.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: strlen() function
! 3: --INI--
! 4: precision = 12
! 5: --FILE--
! 6: <?php
! 7: /* returns the length of a given string */
! 8:
! 9: echo "#### Basic operations and variations ####\n";
! 10: $strings = array( "Hello, World",
! 11: 'Hello, World',
! 12: '!!Hello, World',
! 13: "??Hello, World",
! 14: "$@#%^&*!~,.:;?",
! 15: "123",
! 16: 123,
! 17: "-1.2345",
! 18: -1.2344,
! 19: NULL,
! 20: "",
! 21: " ",
! 22: "\0",
! 23: "\x000", // len = 2
! 24: "\xABC", // len = 2
! 25: "\0000", // len = 2
! 26: "0",
! 27: 0,
! 28: "\t", // len = 1
! 29: '\t', // len = 2
! 30: TRUE,
! 31: FALSE,
! 32: "Hello, World\0",
! 33: "Hello\0World",
! 34: 'Hello, World\0',
! 35: "Hello, World\n",
! 36: "Hello, World\r",
! 37: "Hello, World\t",
! 38: "Hello, World\\",
! 39: " ",
! 40: chr(128).chr(234).chr(65).chr(255).chr(256),
! 41:
! 42: "abcdefghijklmnopqrstuvwxyz0123456789~!@#$%^&*()_+=|?><-;:$
! 43: []{}{{{}}}[[[[]][]]]***&&&^^%$###@@!!@#$%&^&**/////|\\\\\\
! 44: abcdefghijklmnopqrstuvwxyz0123456789~!@#$%^&*()_+=|?><-;:$
! 45: []{}{{{}}}[[[[]][]]]***&&&^^%$###@@!!@#$%&^&**/////|\\\\\\
! 46: abcdefghijklmnopqrstuvwxyz0123456789~!@#$%^&*()_+=|?><-;:$
! 47: []{}{{{}}}[[[[]][]]]***&&&^^%$###@@!!@#$%&^&**/////|\\\\\\
! 48: abcdefghijklmnopqrstuvwxyz0123456789"
! 49: );
! 50:
! 51: /* loop through to find the length of each string */
! 52: for($i=0; $i<count($strings); $i++) {
! 53: echo "String length of '$strings[$i]' is => ";
! 54: var_dump( strlen($strings[$i]) );
! 55: }
! 56:
! 57:
! 58:
! 59: echo "\n#### Testing Miscelleneous inputs ####\n";
! 60:
! 61: echo "--- Testing objects ---\n";
! 62: /* we get "Catchable fatal error: saying Object of class could not be converted
! 63: to string" by default when an object is passed instead of string:
! 64: The error can be avoided by chosing the __toString magix method as follows: */
! 65:
! 66: class string {
! 67: function __toString() {
! 68: return "Hello, world";
! 69: }
! 70: }
! 71: $obj_string = new string;
! 72:
! 73: var_dump(strlen("$obj_string"));
! 74:
! 75:
! 76: echo "\n--- Testing arrays ---\n";
! 77: $str_arr = array("hello", "?world", "!$%**()%**[][[[&@#~!", array());
! 78: var_dump(strlen($str_arr));
! 79: var_dump(strlen("$str_arr[1]"));
! 80: var_dump(strlen("$str_arr[2]"));
! 81:
! 82: echo "\n--- Testing Resources ---\n";
! 83: $filename1 = "dummy.txt";
! 84: $file1 = fopen($filename1, "w"); // creating new file
! 85:
! 86: /* getting resource type for file handle */
! 87: $string1 = get_resource_type($file1);
! 88: $string2 = (int)get_resource_type($file1); // converting stream type to int
! 89:
! 90: /* $string1 is of "stream" type */
! 91: var_dump(strlen($string1)); // int(6)
! 92:
! 93: /* $string2 holds a value of "int(0)" */
! 94: var_dump(strlen($string2)); // int(1)
! 95:
! 96: fclose($file1); // closing the file "dummy.txt"
! 97: unlink("$filename1"); // deletes "dummy.txt"
! 98:
! 99:
! 100: echo "\n--- Testing a longer and heredoc string ---\n";
! 101: $string = <<<EOD
! 102: abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
! 103: abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
! 104: abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
! 105: abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
! 106: abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
! 107: abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
! 108: abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
! 109: @#$%^&**&^%$#@!~:())))((((&&&**%$###@@@!!!~~~~@###$%^&*
! 110: abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
! 111: EOD;
! 112: var_dump(strlen($string));
! 113:
! 114: echo "\n--- Testing a heredoc null string ---\n";
! 115: $str = <<<EOD
! 116: EOD;
! 117: var_dump(strlen($str));
! 118:
! 119:
! 120: echo "\n--- Testing simple and complex syntax strings ---\n";
! 121: $str = 'world';
! 122:
! 123: /* Simple syntax */
! 124: var_dump(strlen("$str"));
! 125: var_dump(strlen("$str'S"));
! 126: var_dump(strlen("$strS"));
! 127:
! 128: /* String with curly braces, complex syntax */
! 129: var_dump(strlen("${str}S"));
! 130: var_dump(strlen("{$str}S"));
! 131:
! 132: echo "\n--- strlen for long float values ---\n";
! 133: /* Here two different outputs, which depends on the rounding value
! 134: before converting to string. Here Precision = 12 */
! 135: var_dump(strlen(10.55555555555555555555555555)); // len = 13
! 136: var_dump(strlen(10.55555555595555555555555555)); // len = 12
! 137:
! 138: echo "\n--- Nested strlen() ---\n";
! 139: var_dump(strlen(strlen("Hello"))); // len=1
! 140:
! 141:
! 142: echo "\n#### error conditions ####";
! 143: /* Zero arguments */
! 144: strlen();
! 145: /* Greater number of args than expected */
! 146: strlen("string1", "string2");
! 147: strlen("", "");
! 148:
! 149: echo "Done\n";
! 150: ?>
! 151: --EXPECTF--
! 152: #### Basic operations and variations ####
! 153: String length of 'Hello, World' is => int(12)
! 154: String length of 'Hello, World' is => int(12)
! 155: String length of '!!Hello, World' is => int(14)
! 156: String length of '??Hello, World' is => int(14)
! 157: String length of '$@#%^&*!~,.:;?' is => int(14)
! 158: String length of '123' is => int(3)
! 159: String length of '123' is => int(3)
! 160: String length of '-1.2345' is => int(7)
! 161: String length of '-1.2344' is => int(7)
! 162: String length of '' is => int(0)
! 163: String length of '' is => int(0)
! 164: String length of ' ' is => int(1)
! 165: String length of ' ' is => int(1)
! 166: String length of ' 0' is => int(2)
! 167: String length of '«C' is => int(2)
! 168: String length of ' 0' is => int(2)
! 169: String length of '0' is => int(1)
! 170: String length of '0' is => int(1)
! 171: String length of ' ' is => int(1)
! 172: String length of '\t' is => int(2)
! 173: String length of '1' is => int(1)
! 174: String length of '' is => int(0)
! 175: String length of 'Hello, World ' is => int(13)
! 176: String length of 'Hello World' is => int(11)
! 177: String length of 'Hello, World\0' is => int(14)
! 178: String length of 'Hello, World
! 179: ' is => int(13)
! 180: String length of 'Hello, World
' is => int(13)
! 181: String length of 'Hello, World ' is => int(13)
! 182: String length of 'Hello, World\' is => int(13)
! 183: String length of ' ' is => int(14)
! 184: String length of '€êAÿ ' is => int(5)
! 185: String length of 'abcdefghijklmnopqrstuvwxyz0123456789~!@#$%^&*()_+=|?><-;:$
! 186: []{}{{{}}}[[[[]][]]]***&&&^^%$###@@!!@#$%&^&**/////|\\\
! 187: abcdefghijklmnopqrstuvwxyz0123456789~!@#$%^&*()_+=|?><-;:$
! 188: []{}{{{}}}[[[[]][]]]***&&&^^%$###@@!!@#$%&^&**/////|\\\
! 189: abcdefghijklmnopqrstuvwxyz0123456789~!@#$%^&*()_+=|?><-;:$
! 190: []{}{{{}}}[[[[]][]]]***&&&^^%$###@@!!@#$%&^&**/////|\\\
! 191: abcdefghijklmnopqrstuvwxyz0123456789' is => int(495)
! 192:
! 193: #### Testing Miscelleneous inputs ####
! 194: --- Testing objects ---
! 195: int(12)
! 196:
! 197: --- Testing arrays ---
! 198:
! 199: Warning: strlen() expects parameter 1 to be string, array given in %s on line %d
! 200: NULL
! 201: int(6)
! 202: int(20)
! 203:
! 204: --- Testing Resources ---
! 205: int(6)
! 206: int(1)
! 207:
! 208: --- Testing a longer and heredoc string ---
! 209: int(639)
! 210:
! 211: --- Testing a heredoc null string ---
! 212: int(0)
! 213:
! 214: --- Testing simple and complex syntax strings ---
! 215: int(5)
! 216: int(7)
! 217:
! 218: Notice: Undefined variable: strS in %s on line %d
! 219: int(0)
! 220: int(6)
! 221: int(6)
! 222:
! 223: --- strlen for long float values ---
! 224: int(13)
! 225: int(12)
! 226:
! 227: --- Nested strlen() ---
! 228: int(1)
! 229:
! 230: #### error conditions ####
! 231: Warning: strlen() expects exactly 1 parameter, 0 given in %s on line %d
! 232:
! 233: Warning: strlen() expects exactly 1 parameter, 2 given in %s on line %d
! 234:
! 235: Warning: strlen() expects exactly 1 parameter, 2 given in %s on line %d
! 236: Done
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>