summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandy wharmby <wharmby@php.net>2009-01-15 13:40:05 +0000
committerandy wharmby <wharmby@php.net>2009-01-15 13:40:05 +0000
commit1de33abc50532030814b9434cdc91227d0cc17f4 (patch)
treeaf9aac62aeb6f0c7481789460eee6866bf1e6fed
parent8075f2e4b7ea0371eb185478bcd1910c97f78f0b (diff)
downloadphp-git-1de33abc50532030814b9434cdc91227d0cc17f4.tar.gz
New test for strripos() string function. All tests checked on Windows, Linux and Linux 64 bit.
-rw-r--r--ext/standard/tests/strings/strripos_basic1.phpt51
-rw-r--r--ext/standard/tests/strings/strripos_basic2.phpt64
-rw-r--r--ext/standard/tests/strings/strripos_error.phpt34
-rw-r--r--ext/standard/tests/strings/strripos_variation1.phpt254
-rw-r--r--ext/standard/tests/strings/strripos_variation2.phpt260
-rw-r--r--ext/standard/tests/strings/strripos_variation3.phpt59
-rw-r--r--ext/standard/tests/strings/strripos_variation4.phpt41
-rw-r--r--ext/standard/tests/strings/strripos_variation5.phpt34
8 files changed, 797 insertions, 0 deletions
diff --git a/ext/standard/tests/strings/strripos_basic1.phpt b/ext/standard/tests/strings/strripos_basic1.phpt
new file mode 100644
index 0000000000..759c23114e
--- /dev/null
+++ b/ext/standard/tests/strings/strripos_basic1.phpt
@@ -0,0 +1,51 @@
+--TEST--
+Test strripos() function : basic functionality - with default arguments
+--FILE--
+<?php
+/* Prototype : int strripos ( string $haystack, string $needle [, int $offset] );
+ * Description: Find position of last occurrence of a case-insensitive 'needle' in a 'haystack'
+ * Source code: ext/standard/string.c
+*/
+
+echo "*** Testing strripos() function: basic functionality ***\n";
+$heredoc_str = <<<EOD
+Hello, World
+EOD;
+
+echo "\n-- regular string for haystack & needle --\n";
+var_dump( strripos("Hello, World", "HeLLo") );
+var_dump( strripos('Hello, World', "hello") );
+var_dump( strripos("Hello, World", 'WoRLd') );
+var_dump( strripos('Hello, World', 'WORLD') );
+var_dump( strripos('Hello, World', 'foo') );
+
+echo "\n-- single char for needle --\n";
+var_dump( strripos("Hello, World", "O") );
+var_dump( strripos("Hello, World", ",") );
+
+echo "\n-- heredoc string for haystack & needle --\n";
+var_dump( strripos($heredoc_str, "Hello, WoRLd") );
+var_dump( strripos($heredoc_str, 'HelLO') );
+var_dump( strripos($heredoc_str, $heredoc_str) );
+
+?>
+===DONE===
+--EXPECT--
+*** Testing strripos() function: basic functionality ***
+
+-- regular string for haystack & needle --
+int(0)
+int(0)
+int(7)
+int(7)
+bool(false)
+
+-- single char for needle --
+int(8)
+int(5)
+
+-- heredoc string for haystack & needle --
+int(0)
+int(0)
+int(0)
+===DONE===
diff --git a/ext/standard/tests/strings/strripos_basic2.phpt b/ext/standard/tests/strings/strripos_basic2.phpt
new file mode 100644
index 0000000000..d4a1a73f06
--- /dev/null
+++ b/ext/standard/tests/strings/strripos_basic2.phpt
@@ -0,0 +1,64 @@
+--TEST--
+Test strripos() function : basic functionality - with all arguments
+--FILE--
+<?php
+/* Prototype : int strripos ( string $haystack, string $needle [, int $offset] );
+ * Description: Find position of last occurrence of a case-insensitive 'needle' in a 'haystack'
+ * Source code: ext/standard/string.c
+*/
+
+echo "*** Testing strripos() function: basic functionality ***\n";
+$heredoc_str = <<<EOD
+Hello, World
+EOD;
+
+echo "\n-- regular string for haystack & needle, with various offsets --\n";
+var_dump( strripos("Hello, World", "HeLLo", 0) );
+var_dump( strripos("Hello, World", 'Hello', 1) );
+var_dump( strripos('Hello, World', 'world', 1) );
+var_dump( strripos('Hello, World', "WorLD", 5) );
+
+echo "\n-- heredoc string for haystack & needle, with various offsets --\n";
+var_dump( strripos($heredoc_str, "Hello, WORLD", 0) );
+var_dump( strripos($heredoc_str, 'HelLo', 0) );
+var_dump( strripos($heredoc_str, 'HeLLo', 1) );
+var_dump( strripos($heredoc_str, $heredoc_str, 0) );
+var_dump( strripos($heredoc_str, $heredoc_str, 1) );
+
+echo "\n-- various +ve offsets --\n";
+var_dump( strripos("Hello, World", "O", 3) );
+var_dump( strripos("Hello, World", "O", 6) );
+var_dump( strripos("Hello, World", "O", 10) );
+
+echo "\n-- various -ve offsets --\n";
+var_dump( strripos("Hello, World", "O", -1) );
+var_dump( strripos("Hello, World", "O", -5) );
+var_dump( strripos("Hello, World", "O", -9) );
+?>
+===DONE===
+--EXPECT--
+*** Testing strripos() function: basic functionality ***
+
+-- regular string for haystack & needle, with various offsets --
+int(0)
+bool(false)
+int(7)
+int(7)
+
+-- heredoc string for haystack & needle, with various offsets --
+int(0)
+int(0)
+bool(false)
+int(0)
+bool(false)
+
+-- various +ve offsets --
+int(8)
+int(8)
+bool(false)
+
+-- various -ve offsets --
+int(8)
+int(4)
+bool(false)
+===DONE===
diff --git a/ext/standard/tests/strings/strripos_error.phpt b/ext/standard/tests/strings/strripos_error.phpt
new file mode 100644
index 0000000000..59d592681a
--- /dev/null
+++ b/ext/standard/tests/strings/strripos_error.phpt
@@ -0,0 +1,34 @@
+--TEST--
+Test strripos() function : error conditions
+--FILE--
+<?php
+/* Prototype : int strripos ( string $haystack, string $needle [, int $offset] );
+ * Description: Find position of last occurrence of a case-insensitive 'needle' in a 'haystack'
+ * Source code: ext/standard/string.c
+*/
+
+echo "*** Testing strripos() function: error conditions ***";
+echo "\n-- With Zero arguments --";
+var_dump( strripos() );
+
+echo "\n-- With less than expected number of arguments --";
+var_dump( strripos("String") );
+
+echo "\n-- With more than expected number of arguments --";
+var_dump( strripos("string", "String", 1, 'extra_arg') );
+?>
+===DONE===
+--EXPECTF--
+*** Testing strripos() function: error conditions ***
+-- With Zero arguments --
+Warning: strripos() expects at least 2 parameters, 0 given in %s on line %d
+bool(false)
+
+-- With less than expected number of arguments --
+Warning: strripos() expects at least 2 parameters, 1 given in %s on line %d
+bool(false)
+
+-- With more than expected number of arguments --
+Warning: strripos() expects at most 3 parameters, 4 given in %s on line %d
+bool(false)
+===DONE===
diff --git a/ext/standard/tests/strings/strripos_variation1.phpt b/ext/standard/tests/strings/strripos_variation1.phpt
new file mode 100644
index 0000000000..b8a8943d09
--- /dev/null
+++ b/ext/standard/tests/strings/strripos_variation1.phpt
@@ -0,0 +1,254 @@
+--TEST--
+Test strripos() function : usage variations - double quoted strings for 'haystack' & 'needle' arguments
+--FILE--
+<?php
+/* Prototype : int strripos ( string $haystack, string $needle [, int $offset] );
+ * Description: Find position of last occurrence of a case-insensitive 'needle' in a 'haystack'
+ * Source code: ext/standard/string.c
+*/
+
+/* Test strripos() function by passing double quoted strings for 'haystack' & 'needle' arguments */
+
+echo "*** Testing strripos() function: with double quoted strings ***\n";
+$haystack = "Hello,\t\n\0\n $&!#%()*<=>?@hello123456he \x234 \101 ";
+$needles = array(
+ //regular strings
+/*1*/ "l",
+ "L",
+ "HELLO",
+ "hEllo",
+
+ //escape characters
+/*5*/ "\t",
+ "\T", //invalid input
+ " ",
+ "\n",
+ "\N", //invalid input
+ "
+", //new line
+
+ //nulls
+/*11*/ "\0",
+ NULL,
+ null,
+
+ //boolean false
+/*14*/ FALSE,
+ false,
+
+ //empty string
+/*16*/ "",
+
+ //special chars
+/*17*/ " ",
+ "$",
+ " $",
+ "&",
+ "!#",
+ "()",
+ "<=>",
+ ">",
+ "=>",
+ "?",
+ "@",
+ "@hEllo",
+
+/*29*/ "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 to get the position of the needle in haystack string */
+$count = 1;
+foreach ($needles as $needle) {
+ echo "-- Iteration $count --\n";
+ var_dump( strripos($haystack, $needle) );
+ var_dump( strripos($haystack, $needle, 1) );
+ var_dump( strripos($haystack, $needle, 20) );
+ var_dump( strripos($haystack, $needle, -1) );
+ $count++;
+}
+?>
+===DONE===
+--EXPECTF--
+*** Testing strripos() function: with double quoted strings ***
+-- Iteration 1 --
+int(28)
+int(28)
+int(28)
+int(28)
+-- Iteration 2 --
+int(28)
+int(28)
+int(28)
+int(28)
+-- Iteration 3 --
+int(25)
+int(25)
+int(25)
+int(25)
+-- Iteration 4 --
+int(25)
+int(25)
+int(25)
+int(25)
+-- Iteration 5 --
+int(6)
+int(6)
+bool(false)
+int(6)
+-- Iteration 6 --
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+-- Iteration 7 --
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+-- Iteration 8 --
+int(9)
+int(9)
+bool(false)
+int(9)
+-- Iteration 9 --
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+-- Iteration 10 --
+int(9)
+int(9)
+bool(false)
+int(9)
+-- Iteration 11 --
+int(8)
+int(8)
+bool(false)
+int(8)
+-- Iteration 12 --
+int(8)
+int(8)
+bool(false)
+int(8)
+-- Iteration 13 --
+int(8)
+int(8)
+bool(false)
+int(8)
+-- Iteration 14 --
+int(8)
+int(8)
+bool(false)
+int(8)
+-- Iteration 15 --
+int(8)
+int(8)
+bool(false)
+int(8)
+-- Iteration 16 --
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+-- Iteration 17 --
+int(43)
+int(43)
+int(43)
+int(43)
+-- Iteration 18 --
+int(12)
+int(12)
+bool(false)
+int(12)
+-- Iteration 19 --
+int(11)
+int(11)
+bool(false)
+int(11)
+-- Iteration 20 --
+int(13)
+int(13)
+bool(false)
+int(13)
+-- Iteration 21 --
+int(14)
+int(14)
+bool(false)
+int(14)
+-- Iteration 22 --
+int(17)
+int(17)
+bool(false)
+int(17)
+-- Iteration 23 --
+int(20)
+int(20)
+int(20)
+int(20)
+-- Iteration 24 --
+int(22)
+int(22)
+int(22)
+int(22)
+-- Iteration 25 --
+int(21)
+int(21)
+int(21)
+int(21)
+-- Iteration 26 --
+int(23)
+int(23)
+int(23)
+int(23)
+-- Iteration 27 --
+int(24)
+int(24)
+int(24)
+int(24)
+-- Iteration 28 --
+int(24)
+int(24)
+int(24)
+int(24)
+-- Iteration 29 --
+int(30)
+int(30)
+int(30)
+int(30)
+-- Iteration 30 --
+int(39)
+int(39)
+int(39)
+int(39)
+-- Iteration 31 --
+int(39)
+int(39)
+int(39)
+int(39)
+-- Iteration 32 --
+int(42)
+int(42)
+int(42)
+int(42)
+-- Iteration 33 --
+int(42)
+int(42)
+int(42)
+int(42)
+-- Iteration 34 --
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+-- Iteration 35 --
+int(0)
+bool(false)
+bool(false)
+int(0)
+===DONE===
diff --git a/ext/standard/tests/strings/strripos_variation2.phpt b/ext/standard/tests/strings/strripos_variation2.phpt
new file mode 100644
index 0000000000..d8caf73742
--- /dev/null
+++ b/ext/standard/tests/strings/strripos_variation2.phpt
@@ -0,0 +1,260 @@
+--TEST--
+Test strripos() function : usage variations - single quoted strings for 'haystack' & 'needle' arguments
+--FILE--
+<?php
+/* Prototype : int strripos ( string $haystack, string $needle [, int $offset] );
+ * Description: Find position of last occurrence of a case-insensitive 'needle' in a 'haystack'
+ * Source code: ext/standard/string.c
+*/
+
+/* Test strripos() function by passing single quoted strings to 'haystack' & 'needle' arguments */
+
+echo "*** Testing strripos() function: with single quoted strings ***\n";
+$haystack = 'Hello,\t\n\0\n $&!#%()*<=>?@hello123456he \x234 \101 ';
+$needles = array(
+ //regular strings
+/*1*/ 'l',
+ 'L',
+ 'HELLO',
+ 'hEllo',
+
+ //escape characters
+/*5*/ '\t',
+ '\T',
+ ' ',
+ '\n',
+ '\N',
+ '
+ ', //new line
+
+ //nulls
+/*11*/ '\0',
+ NULL,
+ null,
+
+ //boolean false
+/*14*/ FALSE,
+ false,
+
+ //empty string
+/*16*/ '',
+
+ //special chars
+/*17*/ ' ',
+ '$',
+ ' $',
+ '&',
+ '!#',
+ '()',
+ '<=>',
+ '>',
+ '=>',
+ '?',
+ '@',
+ '@hEllo',
+
+/*29*/ '12345', //decimal numeric string
+ '\x23', //hexadecimal numeric string
+ '#', //respective ASCII char of \x23
+ '\101', //octal numeric string
+ 'A', // respective ASCII char for \101
+ '456HEE', //numerics + chars
+ 42, //needle as int(ASCII value of '*')
+ $haystack //haystack as needle
+);
+
+/* loop through to get the position of the needle in haystack string */
+$count = 1;
+foreach ($needles as $needle) {
+ echo "-- Iteration $count --\n";
+ var_dump( strripos($haystack, $needle) );
+ var_dump( strripos($haystack, $needle, 1) );
+ var_dump( strripos($haystack, $needle, 20) );
+ var_dump( strripos($haystack, $needle, -1) );
+ $count++;
+}
+?>
+===DONE===
+--EXPECT--
+*** Testing strripos() function: with single quoted strings ***
+-- Iteration 1 --
+int(32)
+int(32)
+int(32)
+int(32)
+-- Iteration 2 --
+int(32)
+int(32)
+int(32)
+int(32)
+-- Iteration 3 --
+int(29)
+int(29)
+int(29)
+int(29)
+-- Iteration 4 --
+int(29)
+int(29)
+int(29)
+int(29)
+-- Iteration 5 --
+int(6)
+int(6)
+bool(false)
+int(6)
+-- Iteration 6 --
+int(6)
+int(6)
+bool(false)
+int(6)
+-- Iteration 7 --
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+-- Iteration 8 --
+int(12)
+int(12)
+bool(false)
+int(12)
+-- Iteration 9 --
+int(12)
+int(12)
+bool(false)
+int(12)
+-- Iteration 10 --
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+-- Iteration 11 --
+int(10)
+int(10)
+bool(false)
+int(10)
+-- Iteration 12 --
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+-- Iteration 13 --
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+-- Iteration 14 --
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+-- Iteration 15 --
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+-- Iteration 16 --
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+-- Iteration 17 --
+int(53)
+int(53)
+int(53)
+int(53)
+-- Iteration 18 --
+int(16)
+int(16)
+bool(false)
+int(16)
+-- Iteration 19 --
+int(15)
+int(15)
+bool(false)
+int(15)
+-- Iteration 20 --
+int(17)
+int(17)
+bool(false)
+int(17)
+-- Iteration 21 --
+int(18)
+int(18)
+bool(false)
+int(18)
+-- Iteration 22 --
+int(21)
+int(21)
+int(21)
+int(21)
+-- Iteration 23 --
+int(24)
+int(24)
+int(24)
+int(24)
+-- Iteration 24 --
+int(26)
+int(26)
+int(26)
+int(26)
+-- Iteration 25 --
+int(25)
+int(25)
+int(25)
+int(25)
+-- Iteration 26 --
+int(27)
+int(27)
+int(27)
+int(27)
+-- Iteration 27 --
+int(28)
+int(28)
+int(28)
+int(28)
+-- Iteration 28 --
+int(28)
+int(28)
+int(28)
+int(28)
+-- Iteration 29 --
+int(34)
+int(34)
+int(34)
+int(34)
+-- Iteration 30 --
+int(43)
+int(43)
+int(43)
+int(43)
+-- Iteration 31 --
+int(19)
+int(19)
+bool(false)
+int(19)
+-- Iteration 32 --
+int(49)
+int(49)
+int(49)
+int(49)
+-- Iteration 33 --
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+-- Iteration 34 --
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+-- Iteration 35 --
+int(23)
+int(23)
+int(23)
+int(23)
+-- Iteration 36 --
+int(0)
+bool(false)
+bool(false)
+int(0)
+===DONE===
diff --git a/ext/standard/tests/strings/strripos_variation3.phpt b/ext/standard/tests/strings/strripos_variation3.phpt
new file mode 100644
index 0000000000..c380106341
--- /dev/null
+++ b/ext/standard/tests/strings/strripos_variation3.phpt
@@ -0,0 +1,59 @@
+--TEST--
+Test strripos() function : usage variations - multi line heredoc string for 'haystack' argument
+--FILE--
+<?php
+/* Prototype : int strripos ( string $haystack, string $needle [, int $offset] );
+ * Description: Find position of last occurrence of a case-insensitive 'needle' in a 'haystack'
+ * Source code: ext/standard/string.c
+*/
+
+/* Test strripos() function by passing multi-line heredoc string for haystack and
+ * with various needles & offsets
+*/
+
+echo "*** Testing strripos() 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;
+
+echo "\n-- Multi line strings with +ve offsets -- \n";
+var_dump( strripos($multi_line_str, "iNg", 0) );
+var_dump( strripos($multi_line_str, "inG", 15) );
+var_dump( strripos($multi_line_str, "Ing", 22) );
+
+echo "\n-- Multi line strings with +ve offsets -- \n";
+var_dump( strripos($multi_line_str, "Ing", -1) );
+var_dump( strripos($multi_line_str, "Ing", -17) );
+var_dump( strripos($multi_line_str, "Ing", -50) );
+
+echo "\n-- Multi line strings with no offset -- \n";
+var_dump( strripos($multi_line_str, "spAn") );
+var_dump( strripos($multi_line_str, "IPlE") );
+var_dump( strripos($multi_line_str, "") );
+var_dump( strripos($multi_line_str, " ") );
+
+?>
+===DONE===
+--EXPECT--
+*** Testing strripos() function: with heredoc strings ***
+-- With heredoc string containing multi lines --
+
+-- Multi line strings with +ve offsets --
+int(44)
+int(44)
+int(44)
+
+-- Multi line strings with +ve offsets --
+int(44)
+int(44)
+bool(false)
+
+-- Multi line strings with no offset --
+int(18)
+int(31)
+bool(false)
+int(55)
+===DONE===
diff --git a/ext/standard/tests/strings/strripos_variation4.phpt b/ext/standard/tests/strings/strripos_variation4.phpt
new file mode 100644
index 0000000000..c355330cab
--- /dev/null
+++ b/ext/standard/tests/strings/strripos_variation4.phpt
@@ -0,0 +1,41 @@
+--TEST--
+Test strripos() function : usage variations - heredoc string containing special chars for 'haystack' argument
+--FILE--
+<?php
+/* Prototype : int strripos ( string $haystack, string $needle [, int $offset] );
+ * Description: Find position of last occurrence of a case-insensitive 'needle' in a 'haystack'
+ * Source code: ext/standard/string.c
+*/
+
+/* Test strripos() function by passing heredoc string containing special chars for haystack
+ * and with various needles & offets
+*/
+
+echo "*** Testing strripos() 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( strripos($special_chars_str, "Ex'pLE", 0) );
+var_dump( strripos($special_chars_str, "!@@!", 23) );
+var_dump( strripos($special_chars_str, '_') );
+var_dump( strripos($special_chars_str, '("_")') );
+var_dump( strripos($special_chars_str, "$*") );
+var_dump( strripos($special_chars_str, "$*", 10) );
+var_dump( strripos($special_chars_str, "(speCIal)") );
+
+?>
+===DONE===
+--EXPECTF--
+*** Testing strripos() function: with heredoc strings ***
+-- With heredoc string containing special chars --
+int(0)
+bool(false)
+int(41)
+int(39)
+int(55)
+int(55)
+int(57)
+===DONE===
diff --git a/ext/standard/tests/strings/strripos_variation5.phpt b/ext/standard/tests/strings/strripos_variation5.phpt
new file mode 100644
index 0000000000..5f6df79903
--- /dev/null
+++ b/ext/standard/tests/strings/strripos_variation5.phpt
@@ -0,0 +1,34 @@
+--TEST--
+Test strripos() function : usage variations - heredoc string containing escape chars for 'haystack' argument
+--FILE--
+<?php
+/* Prototype : int strripos ( string $haystack, string $needle [, int $offset] );
+ * Description: Find position of last occurrence of a case-insensitive 'needle' in a 'haystack'
+ * Source code: ext/standard/string.c
+*/
+
+/* Test strripos() function by passing heredoc string containing escape chars for haystack
+ * and with various needles & offsets
+*/
+
+echo "*** Testing strripos() 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( strripos($control_char_str, "\n") );
+var_dump( strripos($control_char_str, "\t") );
+var_dump( strripos($control_char_str, "\n", 12) );
+var_dump( strripos($control_char_str, "\t", 15) );
+
+?>
+===DONE===
+--EXPECTF--
+*** Testing strripos() function: with heredoc strings ***
+-- With heredoc string containing escape characters --
+int(13)
+int(19)
+int(13)
+int(19)
+===DONE===