diff options
author | Raghubansh Kumar <kraghuba@php.net> | 2007-09-29 09:22:42 +0000 |
---|---|---|
committer | Raghubansh Kumar <kraghuba@php.net> | 2007-09-29 09:22:42 +0000 |
commit | 46700e7a4785690fb7f23a26dc65600c6f793f84 (patch) | |
tree | 3225a00014119cc5f5815a689c12f39392e9bb05 | |
parent | 03d6500fb02c1892a2759e578e80e4d9a9c67322 (diff) | |
download | php-git-46700e7a4785690fb7f23a26dc65600c6f793f84.tar.gz |
New testcases for stripos() function
18 files changed, 2880 insertions, 0 deletions
diff --git a/ext/standard/tests/strings/stripos_basic1.phpt b/ext/standard/tests/strings/stripos_basic1.phpt new file mode 100644 index 0000000000..37b737edda --- /dev/null +++ b/ext/standard/tests/strings/stripos_basic1.phpt @@ -0,0 +1,70 @@ +--TEST-- +Test stripos() function : basic functionality - with default arguments +--FILE-- +<?php +/* Prototype : int stripos ( string $haystack, string $needle [, int $offset] ); + * Description: Find position of first occurrence of a case-insensitive string + * Source code: ext/standard/string.c +*/ + +echo "*** Testing stripos() function: basic functionality ***\n"; +$heredoc_str = <<<Identifier +Hello, World +Identifier; + +echo "-- With default arguments --\n"; +//regular string for haystack & needle +var_dump( stripos("Hello, World", "Hello") ); +var_dump( stripos('Hello, World', "hello") ); +var_dump( stripos("Hello, World", 'World') ); +var_dump( stripos('Hello, World', 'WORLD') ); + +//single char for needle +var_dump( stripos("Hello, World", "o") ); +var_dump( stripos("Hello, World", ",") ); + +//heredoc string for haystack & needle +var_dump( stripos($heredoc_str, "Hello, World") ); +var_dump( stripos($heredoc_str, 'Hello') ); +var_dump( stripos($heredoc_str, $heredoc_str) ); + +//unicode strings for haystack & needle +var_dump( stripos((unicode)"Hello, World", "Hello") ); +var_dump( stripos('Hello, World', (unicode)"hello") ); + +//non-existing needle in haystack +var_dump( stripos("Hello, World", "ooo") ); +echo "*** Done ***"; +?> +--EXPECTF-- +*** Testing stripos() function: basic functionality *** +-- With default arguments -- +int(0) +int(0) +int(7) +int(7) +int(4) +int(5) +int(0) +int(0) +int(0) +int(0) +int(0) +bool(false) +*** Done *** +--UEXPECTF-- +*** Testing stripos() function: basic functionality *** +-- With default arguments -- +int(0) +int(0) +int(7) +int(7) +int(4) +int(5) +int(0) +int(0) +int(0) +int(0) +int(0) +bool(false) +*** Done *** diff --git a/ext/standard/tests/strings/stripos_basic2.phpt b/ext/standard/tests/strings/stripos_basic2.phpt new file mode 100644 index 0000000000..1115171b34 --- /dev/null +++ b/ext/standard/tests/strings/stripos_basic2.phpt @@ -0,0 +1,69 @@ +--TEST-- +Test stripos() function : basic functionality - with all arguments +--FILE-- +<?php +/* Prototype : int stripos ( string $haystack, string $needle [, int $offset] ); + * Description: Find position of first occurrence of a case-insensitive string + * Source code: ext/standard/string.c +*/ + +echo "*** Testing stripos() function: basic functionality ***\n"; +$heredoc_str = <<<Identifier +Hello, World +Identifier; + +echo "-- With all arguments --\n"; +//regular string for haystack & needle, with various offsets +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) ); + +//heredoc string for haystack & needle, with various offsets +var_dump( stripos($heredoc_str, "Hello, World", 0) ); +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) ); + +//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) ); +echo "*** Done ***"; +?> +--EXPECTF-- +*** Testing stripos() function: basic functionality *** +-- With all arguments -- +int(0) +bool(false) +int(7) +int(7) +int(0) +int(0) +bool(false) +int(0) +bool(false) +int(4) +int(8) +int(8) +bool(false) +*** Done *** +--UEXPECTF-- +*** Testing stripos() function: basic functionality *** +-- With all arguments -- +int(0) +bool(false) +int(7) +int(7) +int(0) +int(0) +bool(false) +int(0) +bool(false) +int(4) +int(8) +int(8) +bool(false) +*** Done *** diff --git a/ext/standard/tests/strings/stripos_error.phpt b/ext/standard/tests/strings/stripos_error.phpt new file mode 100644 index 0000000000..71d93ef5a8 --- /dev/null +++ b/ext/standard/tests/strings/stripos_error.phpt @@ -0,0 +1,50 @@ +--TEST-- +Test stripos() function : error conditions +--FILE-- +<?php +/* Prototype : int stripos ( string $haystack, string $needle [, int $offset] ); + * Description: Find position of first occurrence of a case-insensitive string + * Source code: ext/standard/string.c +*/ + +echo "*** Testing stripos() function: error conditions ***\n"; +echo "\n-- With Zero arguments --"; +var_dump( stripos() ); + +echo "\n-- With less than expected number of arguments --"; +var_dump( stripos("String") ); + +echo "\n-- With more than expected number of arguments --"; +var_dump( stripos("string", "String", 1, 'extra_arg') ); +echo "*** Done ***"; +?> +--EXPECTF-- +*** Testing stripos() function: error conditions *** + +-- With Zero arguments -- +Warning: stripos() expects at least 2 parameters, 0 given in %s on line %d +NULL + +-- With less than expected number of arguments -- +Warning: stripos() expects at least 2 parameters, 1 given in %s on line %d +NULL + +-- With more than expected number of arguments -- +Warning: stripos() expects at most 3 parameters, 4 given in %s on line %d +NULL +*** Done *** +--UEXPECTF-- +*** Testing stripos() function: error conditions *** + +-- With Zero arguments -- +Warning: stripos() expects at least 2 parameters, 0 given in %s on line %d +NULL + +-- With less than expected number of arguments -- +Warning: stripos() expects at least 2 parameters, 1 given in %s on line %d +NULL + +-- With more than expected number of arguments -- +Warning: stripos() expects at most 3 parameters, 4 given in %s on line %d +NULL +*** Done *** diff --git a/ext/standard/tests/strings/stripos_variation1.phpt b/ext/standard/tests/strings/stripos_variation1.phpt new file mode 100644 index 0000000000..374c3a0e01 --- /dev/null +++ b/ext/standard/tests/strings/stripos_variation1.phpt @@ -0,0 +1,332 @@ +--TEST-- +Test stripos() function : usage variations - double quoted strings for 'haystack' & 'needle' arguments +--FILE-- +<?php +/* Prototype : int stripos ( string $haystack, string $needle [, int $offset] ); + * Description: Find position of first occurrence of a case-insensitive string + * Source code: ext/standard/string.c +*/ + +/* Test stripos() function by passing double quoted strings to 'haystack' & 'needle' arguments */ + +echo "*** Testing stripos() function: with double quoted strings ***\n"; +$haystack = "Hello,\t\n\0\n $&!#%\o,()*+-./:;<=>?@hello123456he \x234 \101"; +$needle = array( + //regular strings + "l", + "L", + "HELLO", + "hEllo", + + //escape characters + "\t", + "\T", //invalid input + " ", + "\n", + "\N", //invalid input + " +", //new line + + //nulls + "\0", + NULL, + null, + + //boolean false + FALSE, + false, + + //empty string + "", + + //special chars + " ", + "$", + " $", + "&", + "!#", + "%\o", + "\o,", + "()", + "*+", + "+", + ".", + ".;", + ":;", + ";", + "<=>", + ">", + "=>", + "@hEllo", + + "12345", //decimal numeric string + "\x23", //hexadecimal numeric string + "#", //respective ASCII char of \x23 + "\101", //octal numeric string + "A", //respective ASCII char of \101 + "456HEE", //numerics + chars + $haystack //haystack as needle +); + +/* loop through 'needle' array to get the position of the needle in haystack string */ +$count = 1; +for($index=0; $index<count($needle); $index++) { + echo "-- Iteration $count --\n"; + var_dump( stripos($haystack, $needle[$index]) ); + var_dump( stripos($haystack, $needle[$index], $index) ); + $count++; +} +echo "*** Done ***"; +?> +--EXPECTF-- +*** Testing stripos() function: with double quoted strings *** +-- Iteration 1 -- +int(2) +int(2) +-- Iteration 2 -- +int(2) +int(2) +-- Iteration 3 -- +int(0) +int(34) +-- Iteration 4 -- +int(0) +int(34) +-- Iteration 5 -- +int(6) +int(6) +-- Iteration 6 -- +bool(false) +bool(false) +-- Iteration 7 -- +bool(false) +bool(false) +-- Iteration 8 -- +int(7) +int(7) +-- Iteration 9 -- +bool(false) +bool(false) +-- Iteration 10 -- +int(7) +int(9) +-- Iteration 11 -- +int(8) +bool(false) +-- Iteration 12 -- +int(8) +bool(false) +-- Iteration 13 -- +int(8) +bool(false) +-- Iteration 14 -- +int(8) +bool(false) +-- Iteration 15 -- +int(8) +bool(false) +-- Iteration 16 -- +bool(false) +bool(false) +-- Iteration 17 -- +int(10) +int(47) +-- Iteration 18 -- +int(12) +bool(false) +-- Iteration 19 -- +int(11) +bool(false) +-- Iteration 20 -- +int(13) +bool(false) +-- Iteration 21 -- +int(14) +bool(false) +-- Iteration 22 -- +int(16) +bool(false) +-- Iteration 23 -- +int(17) +bool(false) +-- Iteration 24 -- +int(20) +bool(false) +-- Iteration 25 -- +int(22) +bool(false) +-- Iteration 26 -- +int(23) +bool(false) +-- Iteration 27 -- +int(25) +bool(false) +-- Iteration 28 -- +bool(false) +bool(false) +-- Iteration 29 -- +int(27) +bool(false) +-- Iteration 30 -- +int(28) +bool(false) +-- Iteration 31 -- +int(29) +bool(false) +-- Iteration 32 -- +int(31) +int(31) +-- Iteration 33 -- +int(30) +bool(false) +-- Iteration 34 -- +int(33) +int(33) +-- Iteration 35 -- +int(39) +int(39) +-- Iteration 36 -- +int(15) +int(48) +-- Iteration 37 -- +int(15) +int(48) +-- Iteration 38 -- +int(51) +int(51) +-- Iteration 39 -- +int(51) +int(51) +-- Iteration 40 -- +bool(false) +bool(false) +-- Iteration 41 -- +int(0) +bool(false) +*** Done *** +--UEXPECTF-- +*** Testing stripos() function: with double quoted strings *** +-- Iteration 1 -- +int(2) +int(2) +-- Iteration 2 -- +int(2) +int(2) +-- Iteration 3 -- +int(0) +int(34) +-- Iteration 4 -- +int(0) +int(34) +-- Iteration 5 -- +int(6) +int(6) +-- Iteration 6 -- +bool(false) +bool(false) +-- Iteration 7 -- +bool(false) +bool(false) +-- Iteration 8 -- +int(7) +int(7) +-- Iteration 9 -- +bool(false) +bool(false) +-- Iteration 10 -- +int(7) +int(9) +-- Iteration 11 -- +int(8) +int(52) +-- Iteration 12 -- +int(8) +int(52) +-- Iteration 13 -- +int(8) +int(52) +-- Iteration 14 -- +int(8) +int(52) +-- Iteration 15 -- +int(8) +int(52) +-- Iteration 16 -- +bool(false) +bool(false) +-- Iteration 17 -- +int(10) +int(47) +-- Iteration 18 -- +int(12) +bool(false) +-- Iteration 19 -- +int(11) +bool(false) +-- Iteration 20 -- +int(13) +bool(false) +-- Iteration 21 -- +int(14) +bool(false) +-- Iteration 22 -- +int(16) +bool(false) +-- Iteration 23 -- +int(17) +bool(false) +-- Iteration 24 -- +int(20) +bool(false) +-- Iteration 25 -- +int(22) +bool(false) +-- Iteration 26 -- +int(23) +bool(false) +-- Iteration 27 -- +int(25) +bool(false) +-- Iteration 28 -- +bool(false) +bool(false) +-- Iteration 29 -- +int(27) +bool(false) +-- Iteration 30 -- +int(28) +bool(false) +-- Iteration 31 -- +int(29) +bool(false) +-- Iteration 32 -- +int(31) +int(31) +-- Iteration 33 -- +int(30) +bool(false) +-- Iteration 34 -- +int(33) +int(33) +-- Iteration 35 -- +int(39) +int(39) +-- Iteration 36 -- +int(15) +int(48) +-- Iteration 37 -- +int(15) +int(48) +-- Iteration 38 -- +int(51) +int(51) +-- Iteration 39 -- +int(51) +int(51) +-- Iteration 40 -- +bool(false) +bool(false) +-- Iteration 41 -- +int(0) +bool(false) +*** Done *** diff --git a/ext/standard/tests/strings/stripos_variation10.phpt b/ext/standard/tests/strings/stripos_variation10.phpt new file mode 100644 index 0000000000..4c41afd844 --- /dev/null +++ b/ext/standard/tests/strings/stripos_variation10.phpt @@ -0,0 +1,264 @@ +--TEST-- +Test stripos() function : usage variations - unexpected inputs for 'needle' argument +--FILE-- +<?php +/* Prototype : int stripos ( string $haystack, string $needle [, int $offset] ); + * Description: Find position of first occurrence of a case-insensitive string + * Source code: ext/standard/string.c +*/ + +/* Test stripos() function with unexpected inputs for needle and expected type for haystack */ + +echo "*** Testing stripos() function with unexpected values for needle ***\n"; + +// get an unset variable +$unset_var = 'string_val'; +unset($unset_var); + +// defining a class +class sample { + public function __toString() { + return "object"; + } +} + +//getting the resource +$file_handle = fopen(__FILE__, "r"); + +$haystack = "heredoc 0 1 2 -2 10.5 -10.5 10.5e10 10.6E-10 .5 array true false object \"\" null Resource"; + +// array with different values +$needles = array ( + + // integer values + 0, + 1, + 12345, + -2345, + + // float values + 10.5, + -10.5, + 10.5e10, + 10.6E-10, + .5, + + // array values + array(), + array(0), + array(1), + array(1, 2), + array('color' => 'red', 'item' => 'pen'), + + // boolean values + true, + false, + TRUE, + FALSE, + + // objects + new sample(), + + // empty string + "", + '', + + // null vlaues + NULL, + null, + + // resource + $file_handle, + + // undefined variable + @$undefined_var, + + // unset variable + @$unset_var +); + + +// loop through each element of the array and check the working of stripos() +$counter = 1; +for($index = 0; $index < count($needles); $index ++) { + echo "\n-- Iteration $counter --\n"; + var_dump( stripos($haystack, $needles[$index]) ); + $counter ++; +} + +fclose($file_handle); //closing the file handle + +echo "*** Done ***"; +?> +--EXPECTF-- +*** Testing stripos() function with unexpected values for needle *** + +-- Iteration 1 -- +bool(false) + +-- Iteration 2 -- +bool(false) + +-- Iteration 3 -- +bool(false) + +-- Iteration 4 -- +bool(false) + +-- Iteration 5 -- +bool(false) + +-- Iteration 6 -- +bool(false) + +-- Iteration 7 -- +bool(false) + +-- Iteration 8 -- +bool(false) + +-- Iteration 9 -- +bool(false) + +-- Iteration 10 -- +bool(false) + +-- Iteration 11 -- +bool(false) + +-- Iteration 12 -- +bool(false) + +-- Iteration 13 -- +bool(false) + +-- Iteration 14 -- +bool(false) + +-- Iteration 15 -- +bool(false) + +-- Iteration 16 -- +bool(false) + +-- Iteration 17 -- +bool(false) + +-- Iteration 18 -- +bool(false) + +-- Iteration 19 -- + +Notice: Object of class sample could not be converted to int in %s on line %d +bool(false) + +-- Iteration 20 -- +bool(false) + +-- Iteration 21 -- +bool(false) + +-- Iteration 22 -- +bool(false) + +-- Iteration 23 -- +bool(false) + +-- Iteration 24 -- +bool(false) + +-- Iteration 25 -- +bool(false) + +-- Iteration 26 -- +bool(false) +*** Done *** +--UEXPECTF-- +*** Testing stripos() function with unexpected values for needle *** + +-- Iteration 1 -- +bool(false) + +-- Iteration 2 -- +bool(false) + +-- Iteration 3 -- +bool(false) + +-- Iteration 4 -- + +Warning: Needle argument codepoint value out of range (0 - 0x10FFFF) in %s on line %d +bool(false) + +-- Iteration 5 -- +bool(false) + +-- Iteration 6 -- + +Warning: Needle argument codepoint value out of range (0 - 0x10FFFF) in %s on line %d +bool(false) + +-- Iteration 7 -- + +Warning: Needle argument codepoint value out of range (0 - 0x10FFFF) in %s on line %d +bool(false) + +-- Iteration 8 -- +bool(false) + +-- Iteration 9 -- +bool(false) + +-- Iteration 10 -- +bool(false) + +-- Iteration 11 -- +bool(false) + +-- Iteration 12 -- +bool(false) + +-- Iteration 13 -- +bool(false) + +-- Iteration 14 -- +bool(false) + +-- Iteration 15 -- +bool(false) + +-- Iteration 16 -- +bool(false) + +-- Iteration 17 -- +bool(false) + +-- Iteration 18 -- +bool(false) + +-- Iteration 19 -- + +Notice: Object of class sample could not be converted to int in %s on line %d +bool(false) + +-- Iteration 20 -- +bool(false) + +-- Iteration 21 -- +bool(false) + +-- Iteration 22 -- +bool(false) + +-- Iteration 23 -- +bool(false) + +-- Iteration 24 -- +bool(false) + +-- Iteration 25 -- +bool(false) + +-- Iteration 26 -- +bool(false) +*** Done *** diff --git a/ext/standard/tests/strings/stripos_variation11.phpt b/ext/standard/tests/strings/stripos_variation11.phpt new file mode 100644 index 0000000000..3bc862fa5e --- /dev/null +++ b/ext/standard/tests/strings/stripos_variation11.phpt @@ -0,0 +1,344 @@ +--TEST-- +Test stripos() function : usage variations - unexpected inputs for 'haystack' and 'needle' arguments +--FILE-- +<?php +/* Prototype : int stripos ( string $haystack, string $needle [, int $offset] ); + * Description: Find position of first occurrence of a case-insensitive string + * Source code: ext/standard/string.c +*/ + +/* Test stripos() function with unexpected inputs for haystack and needle arguments */ + +echo "*** Testing stripos() function with unexpected values for haystack and needle ***\n"; + +// get an unset variable +$unset_var = 'string_val'; +unset($unset_var); + +// defining a class +class sample { + public function __toString() { + return "object"; + } +} + +//getting the resource +$file_handle = fopen(__FILE__, "r"); + +// array with different values +$values = array ( + + // integer values + 0, + 1, + 12345, + -2345, + + // float values + 10.5, + -10.5, + 10.5e10, + 10.6E-10, + .5, + + // array values + array(), + array(0), + array(1), + array(1, 2), + array('color' => 'red', 'item' => 'pen'), + + // boolean values + true, + false, + TRUE, + FALSE, + + // objects + new sample(), + + // empty string + "", + '', + + // null vlaues + NULL, + null, + + //resource + $file_handle, + + // undefined variable + @$undefined_var, + + // unset variable + @$unset_var +); + + +// loop through each element of the array and check the working of stripos() +$counter = 1; +for($index = 0; $index < count($values); $index ++) { + echo "-- Iteration $counter --\n"; + $haystack = $values[$index]; + var_dump( stripos($values[$index], $values[$index]) ); + var_dump( stripos($values[$index], $values[$index], 1) ); + $counter ++; +} + +echo "*** Done ***"; +?> +--EXPECTF-- +*** Testing stripos() function with unexpected values for haystack and needle *** +-- Iteration 1 -- +bool(false) +bool(false) +-- Iteration 2 -- +bool(false) +bool(false) +-- Iteration 3 -- +bool(false) +bool(false) +-- Iteration 4 -- +bool(false) +bool(false) +-- Iteration 5 -- +bool(false) +bool(false) +-- Iteration 6 -- +bool(false) +bool(false) +-- Iteration 7 -- +bool(false) +bool(false) +-- Iteration 8 -- +bool(false) +bool(false) +-- Iteration 9 -- +bool(false) +bool(false) +-- Iteration 10 -- + +Notice: Array to string conversion in %s on line %d +bool(false) + +Notice: Array to string conversion in %s on line %d +bool(false) +-- Iteration 11 -- + +Notice: Array to string conversion in %s on line %d +bool(false) + +Notice: Array to string conversion in %s on line %d +bool(false) +-- Iteration 12 -- + +Notice: Array to string conversion in %s on line %d +bool(false) + +Notice: Array to string conversion in %s on line %d +bool(false) +-- Iteration 13 -- + +Notice: Array to string conversion in %s on line %d +bool(false) + +Notice: Array to string conversion in %s on line %d +bool(false) +-- Iteration 14 -- + +Notice: Array to string conversion in %s on line %d +bool(false) + +Notice: Array to string conversion in %s on line %d +bool(false) +-- Iteration 15 -- +bool(false) +bool(false) +-- Iteration 16 -- +bool(false) + +Warning: stripos(): Offset not contained in string in %s on line %d +bool(false) +-- Iteration 17 -- +bool(false) +bool(false) +-- Iteration 18 -- +bool(false) + +Warning: stripos(): Offset not contained in string in %s on line %d +bool(false) +-- Iteration 19 -- + +Notice: Object of class sample could not be converted to int in %s on line %d +bool(false) + +Notice: Object of class sample could not be converted to int in %s on line %d +bool(false) +-- Iteration 20 -- +bool(false) + +Warning: stripos(): Offset not contained in string in %s on line %d +bool(false) +-- Iteration 21 -- +bool(false) + +Warning: stripos(): Offset not contained in string in %s on line %d +bool(false) +-- Iteration 22 -- +bool(false) + +Warning: stripos(): Offset not contained in string in %s on line %d +bool(false) +-- Iteration 23 -- +bool(false) + +Warning: stripos(): Offset not contained in string in %s on line %d +bool(false) +-- Iteration 24 -- +bool(false) +bool(false) +-- Iteration 25 -- +bool(false) + +Warning: stripos(): Offset not contained in string in %s on line %d +bool(false) +-- Iteration 26 -- +bool(false) + +Warning: stripos(): Offset not contained in string in %s on line %d +bool(false) +*** Done *** +--UEXPECTF-- +*** Testing stripos() function with unexpected values for haystack and needle *** +-- Iteration 1 -- +bool(false) +int(1) +-- Iteration 2 -- +bool(false) +bool(false) +-- Iteration 3 -- +bool(false) +bool(false) +-- Iteration 4 -- + +Warning: Needle argument codepoint value out of range (0 - 0x10FFFF) in %s on line %d +bool(false) + +Warning: Needle argument codepoint value out of range (0 - 0x10FFFF) in %s on line %d +bool(false) +-- Iteration 5 -- +bool(false) +bool(false) +-- Iteration 6 -- + +Warning: Needle argument codepoint value out of range (0 - 0x10FFFF) in %s on line %d +bool(false) + +Warning: Needle argument codepoint value out of range (0 - 0x10FFFF) in %s on line %d +bool(false) +-- Iteration 7 -- + +Warning: Needle argument codepoint value out of range (0 - 0x10FFFF) in %s on line %d +bool(false) + +Warning: Needle argument codepoint value out of range (0 - 0x10FFFF) in %s on line %d +bool(false) +-- Iteration 8 -- +bool(false) +int(7) +-- Iteration 9 -- +bool(false) +int(3) +-- Iteration 10 -- + +Notice: Array to string conversion in %s on line %d +bool(false) + +Notice: Array to string conversion in %s on line %d +int(5) +-- Iteration 11 -- + +Notice: Array to string conversion in %s on line %d +bool(false) + +Notice: Array to string conversion in %s on line %d +bool(false) +-- Iteration 12 -- + +Notice: Array to string conversion in %s on line %d +bool(false) + +Notice: Array to string conversion in %s on line %d +bool(false) +-- Iteration 13 -- + +Notice: Array to string conversion in %s on line %d +bool(false) + +Notice: Array to string conversion in %s on line %d +bool(false) +-- Iteration 14 -- + +Notice: Array to string conversion in %s on line %d +bool(false) + +Notice: Array to string conversion in %s on line %d +bool(false) +-- Iteration 15 -- +bool(false) +bool(false) +-- Iteration 16 -- +bool(false) + +Warning: stripos(): Offset not contained in string in %s on line %d +bool(false) +-- Iteration 17 -- +bool(false) +bool(false) +-- Iteration 18 -- +bool(false) + +Warning: stripos(): Offset not contained in string in %s on line %d +bool(false) +-- Iteration 19 -- + +Notice: Object of class sample could not be converted to int in %s on line %d +bool(false) + +Notice: Object of class sample could not be converted to int in %s on line %d +bool(false) +-- Iteration 20 -- +bool(false) + +Warning: stripos(): Offset not contained in string in %s on line %d +bool(false) +-- Iteration 21 -- +bool(false) + +Warning: stripos(): Offset not contained in string in %s on line %d +bool(false) +-- Iteration 22 -- +bool(false) + +Warning: stripos(): Offset not contained in string in %s on line %d +bool(false) +-- Iteration 23 -- +bool(false) + +Warning: stripos(): Offset not contained in string in %s on line %d +bool(false) +-- Iteration 24 -- +bool(false) +bool(false) +-- Iteration 25 -- +bool(false) + +Warning: stripos(): Offset not contained in string in %s on line %d +bool(false) +-- Iteration 26 -- +bool(false) + +Warning: stripos(): Offset not contained in string in %s on line %d +bool(false) +*** Done *** diff --git a/ext/standard/tests/strings/stripos_variation12.phpt b/ext/standard/tests/strings/stripos_variation12.phpt new file mode 100644 index 0000000000..4a62f09960 --- /dev/null +++ b/ext/standard/tests/strings/stripos_variation12.phpt @@ -0,0 +1,62 @@ +--TEST-- +Test stripos() function : usage variations - null terminated strings for 'haystack' argument +--FILE-- +<?php +/* Prototype : int stripos ( string $haystack, string $needle [, int $offset] ); + * Description: Find position of first occurrence of a case-insensitive string + * Source code: ext/standard/string.c +*/ + +/* Test stripos() function with null terminated strings for 'haystack' argument */ + +echo "*** Test stripos() function: binary safe ***\n"; +$haystacks = array( + "Hello".chr(0)."World", + chr(0)."Hello World", + "Hello World".chr(0), + chr(0).chr(0).chr(0), + b"Hello\0world", + "\0Hello", + "Hello\0" +); + +for($index = 0; $index < count($haystacks); $index++ ) { + var_dump( stripos($haystacks[$index], "\0") ); + var_dump( stripos($haystacks[$index], "\0", $index) ); +} +echo "*** Done ***"; +?> +--EXPECTF-- +*** Test stripos() function: binary safe *** +int(5) +int(5) +int(0) +bool(false) +int(11) +int(11) +int(0) +bool(false) +int(5) +int(5) +int(0) +bool(false) +int(5) +bool(false) +*** Done *** +--UEXPECTF-- +*** Test stripos() function: binary safe *** +int(5) +int(5) +int(0) +int(12) +int(11) +int(11) +int(0) +int(3) +int(5) +int(5) +int(0) +int(6) +int(5) +int(6) +*** Done *** diff --git a/ext/standard/tests/strings/stripos_variation13.phpt b/ext/standard/tests/strings/stripos_variation13.phpt new file mode 100644 index 0000000000..a9e7b64b73 --- /dev/null +++ b/ext/standard/tests/strings/stripos_variation13.phpt @@ -0,0 +1,59 @@ +--TEST-- +Test stripos() function : usage variations - null terminated strings for 'needle' argument +--FILE-- +<?php +/* Prototype : int stripos ( string $haystack, string $needle [, int $offset] ); + * Description: Find position of first occurrence of a case-insensitive string + * Source code: ext/standard/string.c +*/ + +/* Test stripos() function with null terminated strings for 'needle' argument */ + +echo "*** Test stripos() function: binary safe ***\n"; +$haystack = "\0Hello\0World\0"; + +$needles = array( + "Hello".chr(0)."World", + chr(0)."Hello World", + "Hello World".chr(0), + "Hello\0world", + "\0Hello", + "Hello\0" +); + +for($index = 0; $index < count($needles); $index++ ) { + var_dump( stripos($haystack, $needles[$index]) ); + var_dump( stripos($haystack, $needles[$index], $index) ); +} +echo "*** Done ***"; +?> +--EXPECTF-- +*** Test stripos() function: binary safe *** +int(1) +int(1) +bool(false) +bool(false) +bool(false) +bool(false) +int(1) +bool(false) +int(0) +bool(false) +int(1) +bool(false) +*** Done *** +--UEXPECTF-- +*** Test stripos() function: binary safe *** +int(1) +int(1) +bool(false) +bool(false) +bool(false) +bool(false) +int(1) +bool(false) +int(0) +bool(false) +int(1) +bool(false) +*** Done *** diff --git a/ext/standard/tests/strings/stripos_variation14.phpt b/ext/standard/tests/strings/stripos_variation14.phpt new file mode 100644 index 0000000000..6ed60a56f3 --- /dev/null +++ b/ext/standard/tests/strings/stripos_variation14.phpt @@ -0,0 +1,224 @@ +--TEST-- +Test stripos() function : usage variations - unexpected inputs for 'offset' argument +--FILE-- +<?php +/* Prototype : int stripos ( string $haystack, string $needle [, int $offset] ); + * Description: Find position of first occurrence of a case-insensitive string + * Source code: ext/standard/string.c +*/ + +/* Test stripos() function with unexpected inputs for offset argument */ + +echo "*** Testing stripos() function with unexpected values for haystack and needle ***\n"; + +// get an unset variable +$unset_var = 'string_val'; +unset($unset_var); + +// declaring a class +class sample { + public function __toString() { + return "object"; + } +} + +//getting the resource +$file_handle = fopen(__FILE__, "r"); + +//definition of input args +$haystack = "hello world"; +$needle = "world"; + +// array with different values +$offsets = array ( + + // float values + 1.5, + -1.5, + 1.5e10, + 1.6E-10, + .5, + + // array values + array(), + array(0), + array(1), + array(1, 2), + array('color' => 'red', 'item' => 'pen'), + + // boolean values + true, + false, + TRUE, + FALSE, + + // objects + new sample(), + + // empty string + "", + '', + + // null vlaues + NULL, + null, + + //resource + $file_handle, + + // undefined variable + @$undefined_var, + + // unset variable + @$unset_var +); + + +// loop through each element of the array and check the working of stripos() +$counter = 1; +for($index = 0; $index < count($offsets); $index ++) { + echo "-- Iteration $counter --\n"; + var_dump( stripos($haystack, $needle, $offsets[$index]) ); + $counter ++; +} + +echo "*** Done ***"; +?> +--EXPECTF-- +*** Testing stripos() function with unexpected values for haystack and needle *** +-- Iteration 1 -- +int(6) +-- Iteration 2 -- + +Warning: stripos(): Offset not contained in string in %s on line %d +bool(false) +-- Iteration 3 -- + +Warning: stripos(): Offset not contained in string in %s on line %d +bool(false) +-- Iteration 4 -- +int(6) +-- Iteration 5 -- +int(6) +-- Iteration 6 -- + +Warning: stripos() expects parameter 3 to be long, array given in %s on line %d +NULL +-- Iteration 7 -- + +Warning: stripos() expects parameter 3 to be long, array given in %s on line %d +NULL +-- Iteration 8 -- + +Warning: stripos() expects parameter 3 to be long, array given in %s on line %d +NULL +-- Iteration 9 -- + +Warning: stripos() expects parameter 3 to be long, array given in %s on line %d +NULL +-- Iteration 10 -- + +Warning: stripos() expects parameter 3 to be long, array given in %s on line %d +NULL +-- Iteration 11 -- +int(6) +-- Iteration 12 -- +int(6) +-- Iteration 13 -- +int(6) +-- Iteration 14 -- +int(6) +-- Iteration 15 -- + +Warning: stripos() expects parameter 3 to be long, object given in %s on line %d +NULL +-- Iteration 16 -- + +Warning: stripos() expects parameter 3 to be long, string given in %s on line %d +NULL +-- Iteration 17 -- + +Warning: stripos() expects parameter 3 to be long, string given in %s on line %d +NULL +-- Iteration 18 -- +int(6) +-- Iteration 19 -- +int(6) +-- Iteration 20 -- + +Warning: stripos() expects parameter 3 to be long, resource given in %s on line %d +NULL +-- Iteration 21 -- +int(6) +-- Iteration 22 -- +int(6) +*** Done *** +--UEXPECTF-- +*** Testing stripos() function with unexpected values for haystack and needle *** +-- Iteration 1 -- +int(6) +-- Iteration 2 -- + +Warning: stripos(): Offset not contained in string in %s on line %d +bool(false) +-- Iteration 3 -- + +Warning: stripos(): Offset not contained in string in %s on line %d +bool(false) +-- Iteration 4 -- +int(6) +-- Iteration 5 -- +int(6) +-- Iteration 6 -- + +Warning: stripos() expects parameter 3 to be long, array given in %s on line %d +NULL +-- Iteration 7 -- + +Warning: stripos() expects parameter 3 to be long, array given in %s on line %d +NULL +-- Iteration 8 -- + +Warning: stripos() expects parameter 3 to be long, array given in %s on line %d +NULL +-- Iteration 9 -- + +Warning: stripos() expects parameter 3 to be long, array given in %s on line %d +NULL +-- Iteration 10 -- + +Warning: stripos() expects parameter 3 to be long, array given in %s on line %d +NULL +-- Iteration 11 -- +int(6) +-- Iteration 12 -- +int(6) +-- Iteration 13 -- +int(6) +-- Iteration 14 -- +int(6) +-- Iteration 15 -- + +Warning: stripos() expects parameter 3 to be long, object given in %s on line %d +NULL +-- Iteration 16 -- + +Warning: stripos() expects parameter 3 to be long, Unicode string given in %s on line %d +NULL +-- Iteration 17 -- + +Warning: stripos() expects parameter 3 to be long, Unicode string given in %s on line %d +NULL +-- Iteration 18 -- +int(6) +-- Iteration 19 -- +int(6) +-- Iteration 20 -- + +Warning: stripos() expects parameter 3 to be long, resource given in %s on line %d +NULL +-- Iteration 21 -- +int(6) +-- Iteration 22 -- +int(6) +*** Done *** diff --git a/ext/standard/tests/strings/stripos_variation15.phpt b/ext/standard/tests/strings/stripos_variation15.phpt new file mode 100644 index 0000000000..3f443899bd --- /dev/null +++ b/ext/standard/tests/strings/stripos_variation15.phpt @@ -0,0 +1,254 @@ +--TEST-- +Test stripos() function : usage variations - unexpected inputs for 'haystack', 'needle' & 'offset' +--FILE-- +<?php +/* Prototype : int stripos ( string $haystack, string $needle [, int $offset] ); + * Description: Find position of first occurrence of a case-insensitive string + * Source code: ext/standard/string.c +*/ + +/* Test stripos() function with unexpected inputs for haystack, needle & offset */ + +echo "*** Testing stripos() function with unexpected values for haystack, needle & offset ***\n"; + +// get an unset variable +$unset_var = 'string_val'; +unset($unset_var); + +// defining a class +class sample { + public function __toString() { + return "object"; + } +} + +//getting the resource +$file_handle = fopen(__FILE__, "r"); + +// array with different values +$values = array ( + + // integer values + 0, + 1, + 12345, + -2345, + + // float values + 10.5, + -10.5, + 10.5e10, + 10.6E-10, + .5, + + // array values + array(), + array(0), + array(1), + array(1, 2), + array('color' => 'red', 'item' => 'pen'), + + // boolean values + true, + false, + TRUE, + FALSE, + + // objects + new sample(), + + // empty string + "", + '', + + // null vlaues + NULL, + null, + + //resource + $file_handle, + + // undefined variable + @$undefined_var, + + // unset variable + @$unset_var +); + + +// loop through each element of the array and check the working of stripos() +$counter = 1; +for($index = 0; $index < count($values); $index ++) { + echo "-- Iteration $counter --\n"; + var_dump( stripos($values[$index], $values[$index], $values[$index]) ); + $counter ++; +} + +echo "*** Done ***"; +?> +--EXPECTF-- +*** Testing stripos() function with unexpected values for haystack, needle & offset *** +-- Iteration 1 -- +bool(false) +-- Iteration 2 -- +bool(false) +-- Iteration 3 -- + +Warning: stripos(): Offset not contained in string in %s on line %d +bool(false) +-- Iteration 4 -- + +Warning: stripos(): Offset not contained in string in %s on line %d +bool(false) +-- Iteration 5 -- + +Warning: stripos(): Offset not contained in string in %s on line %d +bool(false) +-- Iteration 6 -- + +Warning: stripos(): Offset not contained in string in %s on line %d +bool(false) +-- Iteration 7 -- + +Warning: stripos(): Offset not contained in string in %s on line %d +bool(false) +-- Iteration 8 -- +bool(false) +-- Iteration 9 -- +bool(false) +-- Iteration 10 -- + +Warning: stripos() expects parameter 3 to be long, array given in %s on line %d +NULL +-- Iteration 11 -- + +Warning: stripos() expects parameter 3 to be long, array given in %s on line %d +NULL +-- Iteration 12 -- + +Warning: stripos() expects parameter 3 to be long, array given in %s on line %d +NULL +-- Iteration 13 -- + +Warning: stripos() expects parameter 3 to be long, array given in %s on line %d +NULL +-- Iteration 14 -- + +Warning: stripos() expects parameter 3 to be long, array given in %s on line %d +NULL +-- Iteration 15 -- +bool(false) +-- Iteration 16 -- +bool(false) +-- Iteration 17 -- +bool(false) +-- Iteration 18 -- +bool(false) +-- Iteration 19 -- + +Warning: stripos() expects parameter 3 to be long, object given in %s on line %d +NULL +-- Iteration 20 -- + +Warning: stripos() expects parameter 3 to be long, string given in %s on line %d +NULL +-- Iteration 21 -- + +Warning: stripos() expects parameter 3 to be long, string given in %s on line %d +NULL +-- Iteration 22 -- +bool(false) +-- Iteration 23 -- +bool(false) +-- Iteration 24 -- + +Warning: stripos() expects parameter 3 to be long, resource given in %s on line %d +NULL +-- Iteration 25 -- +bool(false) +-- Iteration 26 -- +bool(false) +*** Done *** +--UEXPECTF-- +*** Testing stripos() function with unexpected values for haystack, needle & offset *** +-- Iteration 1 -- +bool(false) +-- Iteration 2 -- +bool(false) +-- Iteration 3 -- + +Warning: stripos(): Offset not contained in string in %s on line %d +bool(false) +-- Iteration 4 -- + +Warning: stripos(): Offset not contained in string in %s on line %d +bool(false) +-- Iteration 5 -- + +Warning: stripos(): Offset not contained in string in %s on line %d +bool(false) +-- Iteration 6 -- + +Warning: stripos(): Offset not contained in string in %s on line %d +bool(false) +-- Iteration 7 -- + +Warning: stripos(): Offset not contained in string in %s on line %d +bool(false) +-- Iteration 8 -- +bool(false) +-- Iteration 9 -- +bool(false) +-- Iteration 10 -- + +Warning: stripos() expects parameter 3 to be long, array given in %s on line %d +NULL +-- Iteration 11 -- + +Warning: stripos() expects parameter 3 to be long, array given in %s on line %d +NULL +-- Iteration 12 -- + +Warning: stripos() expects parameter 3 to be long, array given in %s on line %d +NULL +-- Iteration 13 -- + +Warning: stripos() expects parameter 3 to be long, array given in %s on line %d +NULL +-- Iteration 14 -- + +Warning: stripos() expects parameter 3 to be long, array given in %s on line %d +NULL +-- Iteration 15 -- +bool(false) +-- Iteration 16 -- +bool(false) +-- Iteration 17 -- +bool(false) +-- Iteration 18 -- +bool(false) +-- Iteration 19 -- + +Warning: stripos() expects parameter 3 to be long, object given in %s on line %d +NULL +-- Iteration 20 -- + +Warning: stripos() expects parameter 3 to be long, Unicode string given in %s on line %d +NULL +-- Iteration 21 -- + +Warning: stripos() expects parameter 3 to be long, Unicode string given in %s on line %d +NULL +-- Iteration 22 -- +bool(false) +-- Iteration 23 -- +bool(false) +-- Iteration 24 -- + +Warning: stripos() expects parameter 3 to be long, resource given in %s on line %d +NULL +-- Iteration 25 -- +bool(false) +-- Iteration 26 -- +bool(false) +*** Done *** diff --git a/ext/standard/tests/strings/stripos_variation2.phpt b/ext/standard/tests/strings/stripos_variation2.phpt new file mode 100644 index 0000000000..48ce5e968e --- /dev/null +++ b/ext/standard/tests/strings/stripos_variation2.phpt @@ -0,0 +1,360 @@ +--TEST-- +Test stripos() function : usage variations - single quoted strings for 'haystack' & 'needle' arguments +--FILE-- +<?php +/* Prototype : int stripos ( string $haystack, string $needle [, int $offset] ); + * Description: Find position of first occurrence of a case-insensitive string + * Source code: ext/standard/string.c +*/ + +/* Test stripos() function by passing single quoted strings to 'haystack' & 'needle' arguments */ + +echo "*** Testing stripos() function: with single quoted strings ***\n"; +$haystack = 'Hello,\t\n\0\n $&!#%\o,()*+-./:;<=>?@hello123456he \x234 \101 '; +$needle = array( + //regular strings + 'l', + 'L', + 'HELLO', + 'hEllo', + + //escape characters + '\t', + '\T', + ' ', + '\n', + '\N', + ' +', //new line + + //nulls + '\0', + NULL, + null, + + //boolean false + FALSE, + false, + + //empty string + '', + + //special chars + ' ', + '$', + ' $', + '&', + '!#', + '%\o', + '\o,', + '()', + '*+', + '+', + '-', + '.', + '.;', + '.;', + ':;', + ';', + '<=>', + '>', + '=>', + '?', + '@', + '@hEllo', + + '12345', //decimal numeric string + '\x23', //hexadecimal numeric string + '#', //hexadecimal numeric string + '\101', //octal numeric string + '456HEE', //numerics + chars + 42, //needle as int(ASCII value of '*') + $haystack //haystack as needle +); + +/* loop through 'needle' array to get the position of the needle in haystack string */ +$count = 1; +for($index=0; $index<count($needle); $index++) { + echo "-- Iteration $count --\n"; + var_dump( stripos($haystack, $needle[$index]) ); + var_dump( stripos($haystack, $needle[$index], $index) ); + $count++; +} +echo "*** Done ***"; +?> +--EXPECTF-- +*** Testing stripos() function: with single quoted strings *** +-- Iteration 1 -- +int(2) +int(2) +-- Iteration 2 -- +int(2) +int(2) +-- Iteration 3 -- +int(0) +int(38) +-- Iteration 4 -- +int(0) +int(38) +-- Iteration 5 -- +int(6) +int(6) +-- Iteration 6 -- +int(6) +int(6) +-- Iteration 7 -- +bool(false) +bool(false) +-- Iteration 8 -- +int(8) +int(8) +-- Iteration 9 -- +int(8) +int(8) +-- Iteration 10 -- +bool(false) +bool(false) +-- Iteration 11 -- +int(10) +int(10) +-- Iteration 12 -- +bool(false) +bool(false) +-- Iteration 13 -- +bool(false) +bool(false) +-- Iteration 14 -- +bool(false) +bool(false) +-- Iteration 15 -- +bool(false) +bool(false) +-- Iteration 16 -- +bool(false) +bool(false) +-- Iteration 17 -- +int(14) +int(51) +-- Iteration 18 -- +int(16) +bool(false) +-- Iteration 19 -- +int(15) +bool(false) +-- Iteration 20 -- +int(17) +bool(false) +-- Iteration 21 -- +int(18) +bool(false) +-- Iteration 22 -- +int(20) +bool(false) +-- Iteration 23 -- +int(21) +bool(false) +-- Iteration 24 -- +int(24) +int(24) +-- Iteration 25 -- +int(26) +int(26) +-- Iteration 26 -- +int(27) +int(27) +-- Iteration 27 -- +int(28) +int(28) +-- Iteration 28 -- +int(29) +int(29) +-- Iteration 29 -- +bool(false) +bool(false) +-- Iteration 30 -- +bool(false) +bool(false) +-- Iteration 31 -- +int(31) +int(31) +-- Iteration 32 -- +int(32) +int(32) +-- Iteration 33 -- +int(33) +int(33) +-- Iteration 34 -- +int(35) +int(35) +-- Iteration 35 -- +int(34) +int(34) +-- Iteration 36 -- +int(36) +int(36) +-- Iteration 37 -- +int(37) +int(37) +-- Iteration 38 -- +int(37) +int(37) +-- Iteration 39 -- +int(43) +int(43) +-- Iteration 40 -- +int(52) +int(52) +-- Iteration 41 -- +int(19) +bool(false) +-- Iteration 42 -- +int(58) +int(58) +-- Iteration 43 -- +bool(false) +bool(false) +-- Iteration 44 -- +int(26) +bool(false) +-- Iteration 45 -- +int(0) +bool(false) +*** Done *** +--UEXPECTF-- +*** Testing stripos() function: with single quoted strings *** +-- Iteration 1 -- +int(2) +int(2) +-- Iteration 2 -- +int(2) +int(2) +-- Iteration 3 -- +int(0) +int(38) +-- Iteration 4 -- +int(0) +int(38) +-- Iteration 5 -- +int(6) +int(6) +-- Iteration 6 -- +int(6) +int(6) +-- Iteration 7 -- +bool(false) +bool(false) +-- Iteration 8 -- +int(8) +int(8) +-- Iteration 9 -- +int(8) +int(8) +-- Iteration 10 -- +bool(false) +bool(false) +-- Iteration 11 -- +int(10) +int(10) +-- Iteration 12 -- +bool(false) +int(63) +-- Iteration 13 -- +bool(false) +int(63) +-- Iteration 14 -- +bool(false) +int(63) +-- Iteration 15 -- +bool(false) +int(63) +-- Iteration 16 -- +bool(false) +bool(false) +-- Iteration 17 -- +int(14) +int(51) +-- Iteration 18 -- +int(16) +bool(false) +-- Iteration 19 -- +int(15) +bool(false) +-- Iteration 20 -- +int(17) +bool(false) +-- Iteration 21 -- +int(18) +bool(false) +-- Iteration 22 -- +int(20) +bool(false) +-- Iteration 23 -- +int(21) +bool(false) +-- Iteration 24 -- +int(24) +int(24) +-- Iteration 25 -- +int(26) +int(26) +-- Iteration 26 -- +int(27) +int(27) +-- Iteration 27 -- +int(28) +int(28) +-- Iteration 28 -- +int(29) +int(29) +-- Iteration 29 -- +bool(false) +bool(false) +-- Iteration 30 -- +bool(false) +bool(false) +-- Iteration 31 -- +int(31) +int(31) +-- Iteration 32 -- +int(32) +int(32) +-- Iteration 33 -- +int(33) +int(33) +-- Iteration 34 -- +int(35) +int(35) +-- Iteration 35 -- +int(34) +int(34) +-- Iteration 36 -- +int(36) +int(36) +-- Iteration 37 -- +int(37) +int(37) +-- Iteration 38 -- +int(37) +int(37) +-- Iteration 39 -- +int(43) +int(43) +-- Iteration 40 -- +int(52) +int(52) +-- Iteration 41 -- +int(19) +bool(false) +-- Iteration 42 -- +int(58) +int(58) +-- Iteration 43 -- +bool(false) +bool(false) +-- Iteration 44 -- +int(26) +bool(false) +-- Iteration 45 -- +int(0) +bool(false) +*** Done *** diff --git a/ext/standard/tests/strings/stripos_variation3.phpt b/ext/standard/tests/strings/stripos_variation3.phpt new file mode 100644 index 0000000000..012dbf4930 --- /dev/null +++ b/ext/standard/tests/strings/stripos_variation3.phpt @@ -0,0 +1,44 @@ +--TEST-- +Test stripos() function : usage variations - multiline heredoc strings for 'haystack' arguments +--FILE-- +<?php +/* Prototype : int stripos ( string $haystack, string $needle [, int $offset] ); + * Description: Find position of first occurrence of a case-insensitive string + * Source code: ext/standard/string.c +*/ + +/* Test stripos() function by passing multi-line heredoc string for 'haystack' arguments */ + +echo "*** Testing stripos() function: with heredoc strings ***\n"; +echo "-- With heredoc string containing multi lines --\n"; +$multi_line_str = <<<EOD +Example of string +spanning multiple lines +using heredoc syntax. +EOD; +var_dump( stripos($multi_line_str, "ing", 0) ); +var_dump( stripos($multi_line_str, "ing", 15) ); +var_dump( stripos($multi_line_str, "ing", 22) ); +var_dump( stripos($multi_line_str, "") ); +var_dump( stripos($multi_line_str, " ") ); + +echo "*** Done ***"; +?> +--EXPECTF-- +*** Testing stripos() function: with heredoc strings *** +-- With heredoc string containing multi lines -- +int(14) +int(23) +int(23) +bool(false) +int(7) +*** Done *** +--UEXPECTF-- +*** Testing stripos() function: with heredoc strings *** +-- With heredoc string containing multi lines -- +int(14) +int(23) +int(23) +bool(false) +int(7) +*** Done *** diff --git a/ext/standard/tests/strings/stripos_variation4.phpt b/ext/standard/tests/strings/stripos_variation4.phpt new file mode 100644 index 0000000000..ee611dccb3 --- /dev/null +++ b/ext/standard/tests/strings/stripos_variation4.phpt @@ -0,0 +1,50 @@ +--TEST-- +Test stripos() function : usage variations - heredoc string containing special chars for 'haystack' arguments +--FILE-- +<?php +/* Prototype : int stripos ( string $haystack, string $needle [, int $offset] ); + * Description: Find position of first occurrence of a case-insensitive string + * Source code: ext/standard/string.c +*/ + +/* Test stripos() function by passing heredoc string containing special chars for 'haystack' arguments */ + +echo "*** Testing stripos() function: with heredoc strings ***\n"; +echo "-- With heredoc string containing special chars --\n"; +$special_chars_str = <<<EOD +Ex'ple of h'doc st'g, contains +$#%^*&*_("_")!#@@!$#$^^&$*(special) +chars. +EOD; +var_dump( stripos($special_chars_str, "Ex'ple", 0) ); +var_dump( stripos($special_chars_str, "!@@!", 23) ); +var_dump( stripos($special_chars_str, '_') ); +var_dump( stripos($special_chars_str, '("_")') ); +var_dump( stripos($special_chars_str, "$*") ); +var_dump( stripos($special_chars_str, "$*", 10) ); +var_dump( stripos($special_chars_str, "(special)") ); + +echo "*** Done ***"; +?> +--EXPECTF-- +*** Testing stripos() function: with heredoc strings *** +-- With heredoc string containing special chars -- +int(0) +bool(false) +int(38) +int(39) +int(55) +int(55) +int(57) +*** Done *** +--UEXPECTF-- +*** Testing stripos() function: with heredoc strings *** +-- With heredoc string containing special chars -- +int(0) +bool(false) +int(38) +int(39) +int(55) +int(55) +int(57) +*** Done *** diff --git a/ext/standard/tests/strings/stripos_variation5.phpt b/ext/standard/tests/strings/stripos_variation5.phpt new file mode 100644 index 0000000000..7d8f90b6f4 --- /dev/null +++ b/ext/standard/tests/strings/stripos_variation5.phpt @@ -0,0 +1,40 @@ +--TEST-- +Test stripos() function : usage variations - heredoc string containing escape chars for 'haystack' argument +--FILE-- +<?php +/* Prototype : int stripos ( string $haystack, string $needle [, int $offset] ); + * Description: Find position of first occurrence of a case-insensitive string + * Source code: ext/standard/string.c +*/ + +/* Test stripos() function by passing heredoc string containing escape chars for 'haystack' */ + +echo "*** Testing stripos() function: with heredoc strings ***\n"; +echo "-- With heredoc string containing escape characters --\n"; +$control_char_str = <<<EOD +Hello, World\n +Hello\tWorld +EOD; +var_dump( stripos($control_char_str, "\n") ); +var_dump( stripos($control_char_str, "\t") ); +var_dump( stripos($control_char_str, "\n", 12) ); +var_dump( stripos($control_char_str, "\t", 15) ); + +echo "*** Done ***"; +?> +--EXPECTF-- +*** Testing stripos() function: with heredoc strings *** +-- With heredoc string containing escape characters -- +int(12) +int(19) +int(12) +int(19) +*** Done *** +--UEXPECTF-- +*** Testing stripos() function: with heredoc strings *** +-- With heredoc string containing escape characters -- +int(12) +int(19) +int(12) +int(19) +*** Done *** diff --git a/ext/standard/tests/strings/stripos_variation6.phpt b/ext/standard/tests/strings/stripos_variation6.phpt new file mode 100644 index 0000000000..7ed69cec2b --- /dev/null +++ b/ext/standard/tests/strings/stripos_variation6.phpt @@ -0,0 +1,41 @@ +--TEST-- +Test stripos() function : usage variations - heredoc string containing quotes for 'haystack' argument +--FILE-- +<?php +/* Prototype : int stripos ( string $haystack, string $needle [, int $offset] ); + * Description: Find position of first occurrence of a case-insensitive string + * Source code: ext/standard/string.c +*/ + +/* Test stripos() function by passing heredoc string containing quotes for 'haystack' */ + +echo "*** Testing stripos() function: with heredoc strings ***\n"; +echo "-- With heredoc string containing quote & slash chars --\n"; +$quote_char_str = <<<EOD +it's bright,but i cann't see it. +"things in double quote" +'things in single quote' +this\line is /with\slashs +EOD; +var_dump( stripos($quote_char_str, "line") ); +var_dump( stripos($quote_char_str, 'things') ); +var_dump( stripos($quote_char_str, 'things', 0) ); +var_dump( stripos($quote_char_str, "things", 20) ); +echo "*** Done ***"; +?> +--EXPECTF-- +*** Testing stripos() function: with heredoc strings *** +-- With heredoc string containing quote & slash chars -- +int(88) +int(34) +int(34) +int(34) +*** Done *** +--UEXPECTF-- +*** Testing stripos() function: with heredoc strings *** +-- With heredoc string containing quote & slash chars -- +int(88) +int(34) +int(34) +int(34) +*** Done *** diff --git a/ext/standard/tests/strings/stripos_variation7.phpt b/ext/standard/tests/strings/stripos_variation7.phpt new file mode 100644 index 0000000000..fb5f42706c --- /dev/null +++ b/ext/standard/tests/strings/stripos_variation7.phpt @@ -0,0 +1,42 @@ +--TEST-- +Test stripos() function : usage variations - empty heredoc string for 'haystack' argument +--FILE-- +<?php +/* Prototype : int stripos ( string $haystack, string $needle [, int $offset] ); + * Description: Find position of first occurrence of a case-insensitive string + * Source code: ext/standard/string.c +*/ + +/* Test stripos() function by passing empty heredoc string for 'haystack' argument */ + +echo "*** Testing stripos() function: with heredoc strings ***\n"; +echo "-- With empty heredoc string --\n"; +$empty_string = <<<EOD +EOD; +var_dump( stripos($empty_string, "") ); +var_dump( stripos($empty_string, "", 1) ); +var_dump( stripos($empty_string, FALSE) ); +var_dump( stripos($empty_string, NULL) ); + +echo "*** Done ***"; +?> +--EXPECTF-- +*** Testing stripos() function: with heredoc strings *** +-- With empty heredoc string -- +bool(false) + +Warning: stripos(): Offset not contained in string in %s on line %d +bool(false) +bool(false) +bool(false) +*** Done *** +--UEXPECTF-- +*** Testing stripos() function: with heredoc strings *** +-- With empty heredoc string -- +bool(false) + +Warning: stripos(): Offset not contained in string in %s on line %d +bool(false) +bool(false) +bool(false) +*** Done *** diff --git a/ext/standard/tests/strings/stripos_variation8.phpt b/ext/standard/tests/strings/stripos_variation8.phpt new file mode 100644 index 0000000000..1266427246 --- /dev/null +++ b/ext/standard/tests/strings/stripos_variation8.phpt @@ -0,0 +1,393 @@ +--TEST-- +Test stripos() function : usage variations - repetitive chars for 'haystack' argument +--FILE-- +<?php +/* Prototype : int stripos ( string $haystack, string $needle [, int $offset] ); + * Description: Find position of first occurrence of a case-insensitive string + * Source code: ext/standard/string.c +*/ + +/* Test stripos() function with strings containing repetitive chars for 'haystak' and with various 'offset's */ + +echo "*** Testing stripos() function: variations with offset ***\n"; +$haystack = "aBAbaBAbaBabAbAbaBa"; +$needles = array( + "aba", + "aBA", + "ABA", + "Aba", + "BAb", + "bab", + "bAb", + "BAB" +); + +/* loop through to consider various offsets in getting the position of the needle in haystack string */ +$count = 1; +for($index = 0; $index < count($needles); $index++) { + echo "\n-- Iteration $count --\n"; + for($offset = 0; $offset <= strlen($haystack); $offset++ ) { + var_dump( stripos($haystack, $needles[$index], $offset) ); + } + $count++; +} +echo "*** Done ***"; +?> +--EXPECTF-- +*** Testing stripos() function: variations with offset *** + +-- Iteration 1 -- +int(0) +int(2) +int(2) +int(4) +int(4) +int(6) +int(6) +int(8) +int(8) +int(10) +int(10) +int(12) +int(12) +int(14) +int(14) +int(16) +int(16) +bool(false) +bool(false) +bool(false) + +-- Iteration 2 -- +int(0) +int(2) +int(2) +int(4) +int(4) +int(6) +int(6) +int(8) +int(8) +int(10) +int(10) +int(12) +int(12) +int(14) +int(14) +int(16) +int(16) +bool(false) +bool(false) +bool(false) + +-- Iteration 3 -- +int(0) +int(2) +int(2) +int(4) +int(4) +int(6) +int(6) +int(8) +int(8) +int(10) +int(10) +int(12) +int(12) +int(14) +int(14) +int(16) +int(16) +bool(false) +bool(false) +bool(false) + +-- Iteration 4 -- +int(0) +int(2) +int(2) +int(4) +int(4) +int(6) +int(6) +int(8) +int(8) +int(10) +int(10) +int(12) +int(12) +int(14) +int(14) +int(16) +int(16) +bool(false) +bool(false) +bool(false) + +-- Iteration 5 -- +int(1) +int(1) +int(3) +int(3) +int(5) +int(5) +int(7) +int(7) +int(9) +int(9) +int(11) +int(11) +int(13) +int(13) +int(15) +int(15) +bool(false) +bool(false) +bool(false) +bool(false) + +-- Iteration 6 -- +int(1) +int(1) +int(3) +int(3) +int(5) +int(5) +int(7) +int(7) +int(9) +int(9) +int(11) +int(11) +int(13) +int(13) +int(15) +int(15) +bool(false) +bool(false) +bool(false) +bool(false) + +-- Iteration 7 -- +int(1) +int(1) +int(3) +int(3) +int(5) +int(5) +int(7) +int(7) +int(9) +int(9) +int(11) +int(11) +int(13) +int(13) +int(15) +int(15) +bool(false) +bool(false) +bool(false) +bool(false) + +-- Iteration 8 -- +int(1) +int(1) +int(3) +int(3) +int(5) +int(5) +int(7) +int(7) +int(9) +int(9) +int(11) +int(11) +int(13) +int(13) +int(15) +int(15) +bool(false) +bool(false) +bool(false) +bool(false) +*** Done *** +--UEXPECTF-- +*** Testing stripos() function: variations with offset *** + +-- Iteration 1 -- +int(0) +int(2) +int(2) +int(4) +int(4) +int(6) +int(6) +int(8) +int(8) +int(10) +int(10) +int(12) +int(12) +int(14) +int(14) +int(16) +int(16) +bool(false) +bool(false) +bool(false) + +-- Iteration 2 -- +int(0) +int(2) +int(2) +int(4) +int(4) +int(6) +int(6) +int(8) +int(8) +int(10) +int(10) +int(12) +int(12) +int(14) +int(14) +int(16) +int(16) +bool(false) +bool(false) +bool(false) + +-- Iteration 3 -- +int(0) +int(2) +int(2) +int(4) +int(4) +int(6) +int(6) +int(8) +int(8) +int(10) +int(10) +int(12) +int(12) +int(14) +int(14) +int(16) +int(16) +bool(false) +bool(false) +bool(false) + +-- Iteration 4 -- +int(0) +int(2) +int(2) +int(4) +int(4) +int(6) +int(6) +int(8) +int(8) +int(10) +int(10) +int(12) +int(12) +int(14) +int(14) +int(16) +int(16) +bool(false) +bool(false) +bool(false) + +-- Iteration 5 -- +int(1) +int(1) +int(3) +int(3) +int(5) +int(5) +int(7) +int(7) +int(9) +int(9) +int(11) +int(11) +int(13) +int(13) +int(15) +int(15) +bool(false) +bool(false) +bool(false) +bool(false) + +-- Iteration 6 -- +int(1) +int(1) +int(3) +int(3) +int(5) +int(5) +int(7) +int(7) +int(9) +int(9) +int(11) +int(11) +int(13) +int(13) +int(15) +int(15) +bool(false) +bool(false) +bool(false) +bool(false) + +-- Iteration 7 -- +int(1) +int(1) +int(3) +int(3) +int(5) +int(5) +int(7) +int(7) +int(9) +int(9) +int(11) +int(11) +int(13) +int(13) +int(15) +int(15) +bool(false) +bool(false) +bool(false) +bool(false) + +-- Iteration 8 -- +int(1) +int(1) +int(3) +int(3) +int(5) +int(5) +int(7) +int(7) +int(9) +int(9) +int(11) +int(11) +int(13) +int(13) +int(15) +int(15) +bool(false) +bool(false) +bool(false) +bool(false) +*** Done *** diff --git a/ext/standard/tests/strings/stripos_variation9.phpt b/ext/standard/tests/strings/stripos_variation9.phpt new file mode 100644 index 0000000000..993b8f1e06 --- /dev/null +++ b/ext/standard/tests/strings/stripos_variation9.phpt @@ -0,0 +1,182 @@ +--TEST-- +Test stripos() function : usage variations - unexpected inputs for 'haystack' argument +--FILE-- +<?php +/* Prototype : int stripos ( string $haystack, string $needle [, int $offset] ); + * Description: Find position of first occurrence of a case-insensitive string + * Source code: ext/standard/string.c +*/ + +/* Test stripos() function with unexpected inputs for haystack argument */ + +echo "*** Testing stripos() function with unexpected values for haystack ***\n"; + +// get an unset variable +$unset_var = 'string_val'; +unset($unset_var); + +// declaring a class +class sample { + public function __toString() { + return "object"; + } +} + +//getting the resource +$file_handle = fopen(__FILE__, "r"); + +// array with different values +$haystacks = array ( + + // integer values + 0, + 1, + 12345, + -2345, + + // float values + 10.5, + -10.5, + 10.5e10, + 10.6E-10, + .5, + + // array values + array(), + array(0), + array(1), + array(1, 2), + array('color' => 'red', 'item' => 'pen'), + + // boolean values + true, + false, + TRUE, + FALSE, + + // objects + new sample(), + + // empty string + "", + '', + + // null vlaues + NULL, + null, + + // resource + $file_handle, + + // undefined variable + @$undefined_var, + + // unset variable + @$unset_var +); + +$needle = "heredoc 0 1 2 -2 10.5 -10.5 10.5e10 10.6E-10 .5 array true false object \"\" null Resource"; + +// loop through each element of the array and check the working of stripos() +$counter = 1; +for($index = 0; $index < count($haystacks); $index ++) { + echo "\n-- Iteration $counter --\n"; + var_dump( stripos($haystacks[$index], $needle) ); + $counter ++; +} + +fclose($file_handle); //closing the file handle + +echo "*** Done ***"; +?> +--EXPECTF-- +*** Testing stripos() function with unexpected values for haystack *** + +-- Iteration 1 -- +bool(false) + +-- Iteration 2 -- +bool(false) + +-- Iteration 3 -- +bool(false) + +-- Iteration 4 -- +bool(false) + +-- Iteration 5 -- +bool(false) + +-- Iteration 6 -- +bool(false) + +-- Iteration 7 -- +bool(false) + +-- Iteration 8 -- +bool(false) + +-- Iteration 9 -- +bool(false) + +-- Iteration 10 -- + +Notice: Array to string conversion in %s on line %d +bool(false) + +-- Iteration 11 -- + +Notice: Array to string conversion in %s on line %d +bool(false) + +-- Iteration 12 -- + +Notice: Array to string conversion in %s on line %d +bool(false) + +-- Iteration 13 -- + +Notice: Array to string conversion in %s on line %d +bool(false) + +-- Iteration 14 -- + +Notice: Array to string conversion in %s on line %d +bool(false) + +-- Iteration 15 -- +bool(false) + +-- Iteration 16 -- +bool(false) + +-- Iteration 17 -- +bool(false) + +-- Iteration 18 -- +bool(false) + +-- Iteration 19 -- +bool(false) + +-- Iteration 20 -- +bool(false) + +-- Iteration 21 -- +bool(false) + +-- Iteration 22 -- +bool(false) + +-- Iteration 23 -- +bool(false) + +-- Iteration 24 -- +bool(false) + +-- Iteration 25 -- +bool(false) + +-- Iteration 26 -- +bool(false) +*** Done *** |