diff options
| author | Jakub Zelenka <bukka@php.net> | 2016-06-19 17:05:48 +0100 |
|---|---|---|
| committer | Jakub Zelenka <bukka@php.net> | 2016-06-19 17:05:48 +0100 |
| commit | e63a8540a60e95aa5bd8e269add1b02afcc1b79b (patch) | |
| tree | b83a144eec24cc81adab0b9a778f7a730d8df79e /ext/standard/tests/strings | |
| parent | 7a4cc73641bb3eb878f7184bcbd026ee663cf2a9 (diff) | |
| parent | 53071e647049f099f7f7a0771ddb63fc2cdd621c (diff) | |
| download | php-git-e63a8540a60e95aa5bd8e269add1b02afcc1b79b.tar.gz | |
Merge branch 'openssl_error_store' into openssl_aead
Diffstat (limited to 'ext/standard/tests/strings')
| -rw-r--r-- | ext/standard/tests/strings/bug40754.phpt | 6 | ||||
| -rw-r--r-- | ext/standard/tests/strings/bug55871.phpt | 2 | ||||
| -rw-r--r-- | ext/standard/tests/strings/bug71806.dat | 3 | ||||
| -rw-r--r-- | ext/standard/tests/strings/bug71806.phpt | 11 | ||||
| -rw-r--r-- | ext/standard/tests/strings/bug71969.phpt | 28 | ||||
| -rw-r--r-- | ext/standard/tests/strings/bug72100.phpt | 18 | ||||
| -rw-r--r-- | ext/standard/tests/strings/str_pad_variation5.phpt | 2 | ||||
| -rw-r--r-- | ext/standard/tests/strings/stripos_basic2.phpt | 20 | ||||
| -rw-r--r-- | ext/standard/tests/strings/stripos_error.phpt | 15 | ||||
| -rw-r--r-- | ext/standard/tests/strings/stripos_variation14.phpt | 6 | ||||
| -rw-r--r-- | ext/standard/tests/strings/strpos.phpt | bin | 9999 -> 10239 bytes | |||
| -rw-r--r-- | ext/standard/tests/strings/substr_count_basic.phpt | 8 | ||||
| -rw-r--r-- | ext/standard/tests/strings/substr_count_error.phpt | 40 | ||||
| -rw-r--r-- | ext/standard/tests/strings/substr_replace_error.phpt | 10 | ||||
| -rw-r--r-- | ext/standard/tests/strings/unpack_error.phpt | 6 | ||||
| -rw-r--r-- | ext/standard/tests/strings/unpack_offset.phpt | 17 |
16 files changed, 151 insertions, 41 deletions
diff --git a/ext/standard/tests/strings/bug40754.phpt b/ext/standard/tests/strings/bug40754.phpt index 6cfe47056b..84e4337463 100644 --- a/ext/standard/tests/strings/bug40754.phpt +++ b/ext/standard/tests/strings/bug40754.phpt @@ -32,7 +32,7 @@ var_dump(substr("abcde", $v, $v)); bool(false) bool(false) -Warning: substr_count(): Offset value 2147483647 exceeds string length in %s on line %d +Warning: substr_count(): Offset not contained in string in %s on line %d bool(false) Warning: substr_compare(): The start position cannot exceed initial string length in %s on line %d @@ -41,10 +41,10 @@ bool(false) Warning: stripos(): Offset not contained in string in %s on line %d bool(false) -Warning: substr_count(): Offset value 2147483647 exceeds string length in %s on line %d +Warning: substr_count(): Offset not contained in string in %s on line %d bool(false) -Warning: substr_count(): Length value 2147483647 exceeds string length in %s on line %d +Warning: substr_count(): Invalid length value in %s on line %d bool(false) Warning: strpos(): Offset not contained in string in %s on line %d diff --git a/ext/standard/tests/strings/bug55871.phpt b/ext/standard/tests/strings/bug55871.phpt index 249d1bd3a3..0044f50ce7 100644 --- a/ext/standard/tests/strings/bug55871.phpt +++ b/ext/standard/tests/strings/bug55871.phpt @@ -41,6 +41,8 @@ array(1) { [0]=> string(0) "" } + +Warning: A non-numeric value encountered in %s on line %d array(1) { [0]=> string(40) "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" diff --git a/ext/standard/tests/strings/bug71806.dat b/ext/standard/tests/strings/bug71806.dat new file mode 100644 index 0000000000..c999da61c2 --- /dev/null +++ b/ext/standard/tests/strings/bug71806.dat @@ -0,0 +1,3 @@ +<?php +/* comment */ +echo 098 ; diff --git a/ext/standard/tests/strings/bug71806.phpt b/ext/standard/tests/strings/bug71806.phpt new file mode 100644 index 0000000000..6eb534d0a0 --- /dev/null +++ b/ext/standard/tests/strings/bug71806.phpt @@ -0,0 +1,11 @@ +--TEST-- +Bug #71806 (php_strip_whitespace() fails on some numerical values) +--FILE-- +<?php + +echo php_strip_whitespace(__DIR__ . '/bug71806.dat'); + +?> +--EXPECT-- +<?php + echo 098 ; diff --git a/ext/standard/tests/strings/bug71969.phpt b/ext/standard/tests/strings/bug71969.phpt new file mode 100644 index 0000000000..aafceb09ad --- /dev/null +++ b/ext/standard/tests/strings/bug71969.phpt @@ -0,0 +1,28 @@ +--TEST-- +Bug #71969 (str_replace returns an incorrect resulting array after a foreach by reference) +--FILE-- +<?php +$a = array( + array("one" => array("a"=>"0000", "b"=>"1111")), +); + +//foreach by reference, changing the array value +foreach($a as &$record) +{ + $record["one"]["a"] = "2222"; +} +var_dump(str_replace("2", "3", $a)); +?> +--EXPECT-- +array(1) { + [0]=> + array(1) { + ["one"]=> + array(2) { + ["a"]=> + string(4) "2222" + ["b"]=> + string(4) "1111" + } + } +} diff --git a/ext/standard/tests/strings/bug72100.phpt b/ext/standard/tests/strings/bug72100.phpt new file mode 100644 index 0000000000..7fcc0831b6 --- /dev/null +++ b/ext/standard/tests/strings/bug72100.phpt @@ -0,0 +1,18 @@ +--TEST-- +Test implode() function, problems with big numbers +--SKIPIF-- +<?php +if (PHP_INT_SIZE != 8) die("skip this test is for 64bit platform only"); +?> +--FILE-- +<?php +var_dump( implode(" ", ["hello long", 999999999999999999, PHP_INT_MAX])); +var_dump( implode(" ", ["hello negative long", -999999999999999999, PHP_INT_MIN] ) ); +var_dump( implode(" ", ["hello small long", -101, -100, -99, -90, -11, -10, -9, -1, 0, 1, 2, 9, 10, 11, 90, 99, 100, 101] ) ); +echo "Done\n"; +?> +--EXPECT-- +string(49) "hello long 999999999999999999 9223372036854775807" +string(60) "hello negative long -999999999999999999 -9223372036854775808" +string(76) "hello small long -101 -100 -99 -90 -11 -10 -9 -1 0 1 2 9 10 11 90 99 100 101" +Done diff --git a/ext/standard/tests/strings/str_pad_variation5.phpt b/ext/standard/tests/strings/str_pad_variation5.phpt index d050ae80e8..f1f47b932c 100644 --- a/ext/standard/tests/strings/str_pad_variation5.phpt +++ b/ext/standard/tests/strings/str_pad_variation5.phpt @@ -31,4 +31,4 @@ var_dump( str_pad($input, $pad_length) ); --EXPECTF-- *** Testing str_pad() function: with large value for for 'pad_length' argument *** -Fatal error: Allowed memory size of 134217728 bytes exhausted%s(tried to allocate 2147483648 bytes) in %s on line %d +Fatal error: Allowed memory size of 134217728 bytes exhausted%s(tried to allocate %d bytes) in %s on line %d diff --git a/ext/standard/tests/strings/stripos_basic2.phpt b/ext/standard/tests/strings/stripos_basic2.phpt index 3022bae168..226d3f61d2 100644 --- a/ext/standard/tests/strings/stripos_basic2.phpt +++ b/ext/standard/tests/strings/stripos_basic2.phpt @@ -18,6 +18,9 @@ var_dump( stripos("Hello, World", "Hello", 0) ); var_dump( stripos("Hello, World", 'Hello', 1) ); var_dump( stripos('Hello, World', 'WORLD', 1) ); var_dump( stripos('Hello, World', "WoRld", 5) ); +var_dump( stripos('Hello, World', "WoRld", -6) ); +var_dump( stripos('Hello, World', "WoRld", -3) ); +var_dump( stripos('Hello, World', "WoRld", -12) ); //heredoc string for haystack & needle, with various offsets var_dump( stripos($heredoc_str, "Hello, World", 0) ); @@ -25,12 +28,19 @@ var_dump( stripos($heredoc_str, 'Hello', 0) ); var_dump( stripos($heredoc_str, 'Hello', 1) ); var_dump( stripos($heredoc_str, $heredoc_str, 0) ); var_dump( stripos($heredoc_str, $heredoc_str, 1) ); +var_dump( stripos($heredoc_str, $heredoc_str, -strlen($heredoc_str)) ); +var_dump( stripos($heredoc_str, $heredoc_str, -strlen($heredoc_str)+1) ); //various offsets var_dump( stripos("Hello, World", "o", 3) ); var_dump( stripos("Hello, World", "O", 5) ); var_dump( stripos("Hello, World", "o", 6) ); var_dump( stripos("Hello, World", "o", 10) ); +var_dump( stripos("Hello, World", "o", -7) ); +var_dump( stripos("Hello, World", "o", -8) ); +var_dump( stripos("Hello, World", "o", -10) ); +var_dump( stripos("Hello, World", "o", -4) ); +var_dump( stripos("Hello, World", "o", -3) ); echo "*** Done ***"; ?> --EXPECTF-- @@ -40,13 +50,23 @@ int(0) bool(false) int(7) int(7) +int(7) +bool(false) +int(7) int(0) int(0) bool(false) int(0) bool(false) +int(0) +bool(false) int(4) int(8) int(8) bool(false) +int(8) +int(4) +int(4) +int(8) +bool(false) *** Done *** diff --git a/ext/standard/tests/strings/stripos_error.phpt b/ext/standard/tests/strings/stripos_error.phpt index ef6ad9e6ec..c59473046d 100644 --- a/ext/standard/tests/strings/stripos_error.phpt +++ b/ext/standard/tests/strings/stripos_error.phpt @@ -16,6 +16,13 @@ var_dump( stripos("String") ); echo "\n-- With more than expected number of arguments --"; var_dump( stripos("string", "String", 1, 'extra_arg') ); + +echo "\n-- Offset beyond the end of the string --"; +var_dump( stripos("Hello World", "o", 12) ); + +echo "\n-- Offset before the start of the string --"; +var_dump( stripos("Hello World", "o", -12) ); + echo "*** Done ***"; ?> --EXPECTF-- @@ -32,4 +39,12 @@ NULL -- With more than expected number of arguments -- Warning: stripos() expects at most 3 parameters, 4 given in %s on line %d NULL + +-- Offset beyond the end of the string -- +Warning: stripos(): Offset not contained in string in %s on line %d +bool(false) + +-- Offset before the start of the string -- +Warning: stripos(): Offset not contained in string in %s on line %d +bool(false) *** Done *** diff --git a/ext/standard/tests/strings/stripos_variation14.phpt b/ext/standard/tests/strings/stripos_variation14.phpt index aabf0e62ea..3339e2f27e 100644 --- a/ext/standard/tests/strings/stripos_variation14.phpt +++ b/ext/standard/tests/strings/stripos_variation14.phpt @@ -1,7 +1,5 @@ --TEST-- Test stripos() function : usage variations - unexpected inputs for 'offset' argument ---SKIPIF-- -<?php if (PHP_INT_SIZE != 8) die("skip this test is for 64-bit only"); --FILE-- <?php /* Prototype : int stripos ( string $haystack, string $needle [, int $offset] ); @@ -37,7 +35,7 @@ $offsets = array ( // float values 1.5, -1.5, - 1.5e10, + 1.5e6, 1.6E-10, .5, @@ -91,8 +89,6 @@ echo "*** Done ***"; -- Iteration 1 -- int(6) -- Iteration 2 -- - -Warning: stripos(): Offset not contained in string in %s on line %d bool(false) -- Iteration 3 -- diff --git a/ext/standard/tests/strings/strpos.phpt b/ext/standard/tests/strings/strpos.phpt Binary files differindex 36854d1b37..f5d60a69b5 100644 --- a/ext/standard/tests/strings/strpos.phpt +++ b/ext/standard/tests/strings/strpos.phpt diff --git a/ext/standard/tests/strings/substr_count_basic.phpt b/ext/standard/tests/strings/substr_count_basic.phpt index f880e9481e..c7c96fd55b 100644 --- a/ext/standard/tests/strings/substr_count_basic.phpt +++ b/ext/standard/tests/strings/substr_count_basic.phpt @@ -9,12 +9,17 @@ var_dump(@substr_count("a", "")); var_dump(@substr_count("", "a")); var_dump(@substr_count("", "a")); var_dump(@substr_count("", chr(0))); + $a = str_repeat("abcacba", 100); var_dump(@substr_count($a, "bca")); + $a = str_repeat("abcacbabca", 100); var_dump(@substr_count($a, "bca")); var_dump(substr_count($a, "bca", 200)); var_dump(substr_count($a, "bca", 200, 50)); +var_dump(substr_count($a, "bca", -200)); +var_dump(substr_count($a, "bca", -200, 50)); +var_dump(substr_count($a, "bca", -200, -50)); echo "Done\n"; @@ -30,4 +35,7 @@ int(100) int(200) int(160) int(10) +int(40) +int(10) +int(30) Done diff --git a/ext/standard/tests/strings/substr_count_error.phpt b/ext/standard/tests/strings/substr_count_error.phpt index f6924217b9..881da391e6 100644 --- a/ext/standard/tests/strings/substr_count_error.phpt +++ b/ext/standard/tests/strings/substr_count_error.phpt @@ -4,27 +4,31 @@ Test substr_count() function (error conditions) <?php echo "\n*** Testing error conditions ***\n"; +$str = 'abcdefghik'; + /* Zero argument */ var_dump( substr_count() ); /* more than expected no. of args */ var_dump( substr_count($str, "t", 0, 15, 30) ); -/* offset as negative value */ -var_dump(substr_count($str, "t", -5)); +/* offset before start */ +var_dump(substr_count($str, "t", -20)); /* offset > size of the string */ var_dump(substr_count($str, "t", 25)); /* Using offset and length to go beyond the size of the string: Warning message expected, as length+offset > length of string */ -var_dump( substr_count($str, "i", 5, 15) ); +var_dump( substr_count($str, "i", 5, 7) ); -/* length as Null */ -var_dump( substr_count($str, "t", "", "") ); -var_dump( substr_count($str, "i", NULL, NULL) ); - -echo "Done\n"; +/* Invalid offset argument */ +var_dump( substr_count($str, "t", "") ); + +/* length too small */ +var_dump( substr_count($str, "t", 2, -20) ); + +echo "Done\n"; ?> --EXPECTF-- @@ -33,33 +37,21 @@ echo "Done\n"; Warning: substr_count() expects at least 2 parameters, 0 given in %s on line %d NULL -Notice: Undefined variable: str in %s on line %d - Warning: substr_count() expects at most 4 parameters, 5 given in %s on line %d NULL -Notice: Undefined variable: str in %s on line %d - -Warning: substr_count(): Offset should be greater than or equal to 0 in %s on line %d +Warning: substr_count(): Offset not contained in string in %s on line %d bool(false) -Notice: Undefined variable: str in %s on line %d - -Warning: substr_count(): Offset value 25 exceeds string length in %s on line %d +Warning: substr_count(): Offset not contained in string in %s on line %d bool(false) -Notice: Undefined variable: str in %s on line %d - -Warning: substr_count(): Offset value 5 exceeds string length in %s on line %d +Warning: substr_count(): Invalid length value in %s on line %d bool(false) -Notice: Undefined variable: str in %s on line %d - Warning: substr_count() expects parameter 3 to be integer, string given in %s on line %d NULL -Notice: Undefined variable: str in %s on line %d - -Warning: substr_count(): Length should be greater than 0 in %s on line %d +Warning: substr_count(): Invalid length value in %s on line %d bool(false) Done diff --git a/ext/standard/tests/strings/substr_replace_error.phpt b/ext/standard/tests/strings/substr_replace_error.phpt index fd314cbd9d..0a15035af2 100644 --- a/ext/standard/tests/strings/substr_replace_error.phpt +++ b/ext/standard/tests/strings/substr_replace_error.phpt @@ -52,19 +52,19 @@ NULL -- Testing substr_replace() function with start and length different types -- -Warning: substr_replace(): 'from' and 'len' should be of same type - numerical or array in %s on line %d +Warning: substr_replace(): 'start' and 'length' should be of same type - numerical or array in %s on line %d string(12) "Good morning" -Warning: substr_replace(): 'from' and 'len' should be of same type - numerical or array in %s on line %d +Warning: substr_replace(): 'start' and 'length' should be of same type - numerical or array in %s on line %d string(12) "Good morning" -- Testing substr_replace() function with start and length with a different number of elements -- -Warning: substr_replace(): 'from' and 'len' should have the same number of elements in %s on line %d +Warning: substr_replace(): 'start' and 'length' should have the same number of elements in %s on line %d string(12) "Good morning" -- Testing substr_replace() function with start and length as arrays but string not-- -Warning: substr_replace(): Functionality of 'from' and 'len' as arrays is not implemented in %s on line %d +Warning: substr_replace(): Functionality of 'start' and 'length' as arrays is not implemented in %s on line %d string(12) "Good morning" -===DONE===
\ No newline at end of file +===DONE=== diff --git a/ext/standard/tests/strings/unpack_error.phpt b/ext/standard/tests/strings/unpack_error.phpt index 1ef97ccbaf..3a4f334c3b 100644 --- a/ext/standard/tests/strings/unpack_error.phpt +++ b/ext/standard/tests/strings/unpack_error.phpt @@ -15,7 +15,7 @@ var_dump( unpack() ); echo "\n-- Testing unpack() function with more than expected no. of arguments --\n"; $extra_arg = 10; -var_dump(unpack("I", pack("I", 65534), $extra_arg)); +var_dump(unpack("I", pack("I", 65534), 0, $extra_arg)); echo "\n-- Testing unpack() function with invalid format character --\n"; $extra_arg = 10; @@ -27,12 +27,12 @@ var_dump(unpack("G", pack("I", 65534))); -- Testing unpack() function with no arguments -- -Warning: unpack() expects exactly 2 parameters, 0 given in %s on line %d +Warning: unpack() expects at least 2 parameters, 0 given in %s on line %d NULL -- Testing unpack() function with more than expected no. of arguments -- -Warning: unpack() expects exactly 2 parameters, 3 given in %s on line %d +Warning: unpack() expects at most 3 parameters, 4 given in %s on line %d NULL -- Testing unpack() function with invalid format character -- diff --git a/ext/standard/tests/strings/unpack_offset.phpt b/ext/standard/tests/strings/unpack_offset.phpt new file mode 100644 index 0000000000..c8c08e74f2 --- /dev/null +++ b/ext/standard/tests/strings/unpack_offset.phpt @@ -0,0 +1,17 @@ +--TEST-- +unpack() with offset +--FILE-- +<?php +$data = "pad" . pack("ll", 0x01020304, 0x05060708); + +$a = unpack("l2", $data, 3); +printf("0x%08x 0x%08x\n", $a[1], $a[2]); + +printf("0x%08x 0x%08x\n", + unpack("l", $data, 3)[1], + unpack("@4/l", $data, 3)[1]); +?> +--EXPECT-- +0x01020304 0x05060708 +0x01020304 0x05060708 + |
