]> granicus.if.org Git - php/commitdiff
New test for strripos() string function. All tests checked on Windows, Linux and...
authorandy wharmby <wharmby@php.net>
Thu, 15 Jan 2009 13:40:05 +0000 (13:40 +0000)
committerandy wharmby <wharmby@php.net>
Thu, 15 Jan 2009 13:40:05 +0000 (13:40 +0000)
ext/standard/tests/strings/strripos_basic1.phpt [new file with mode: 0644]
ext/standard/tests/strings/strripos_basic2.phpt [new file with mode: 0644]
ext/standard/tests/strings/strripos_error.phpt [new file with mode: 0644]
ext/standard/tests/strings/strripos_variation1.phpt [new file with mode: 0644]
ext/standard/tests/strings/strripos_variation2.phpt [new file with mode: 0644]
ext/standard/tests/strings/strripos_variation3.phpt [new file with mode: 0644]
ext/standard/tests/strings/strripos_variation4.phpt [new file with mode: 0644]
ext/standard/tests/strings/strripos_variation5.phpt [new file with mode: 0644]

diff --git a/ext/standard/tests/strings/strripos_basic1.phpt b/ext/standard/tests/strings/strripos_basic1.phpt
new file mode 100644 (file)
index 0000000..759c231
--- /dev/null
@@ -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 (file)
index 0000000..d4a1a73
--- /dev/null
@@ -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 (file)
index 0000000..59d5926
--- /dev/null
@@ -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 (file)
index 0000000..b8a8943
--- /dev/null
@@ -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 (file)
index 0000000..d8caf73
--- /dev/null
@@ -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 (file)
index 0000000..c380106
--- /dev/null
@@ -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 (file)
index 0000000..c355330
--- /dev/null
@@ -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 (file)
index 0000000..5f6df79
--- /dev/null
@@ -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===