summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaghubansh Kumar <kraghuba@php.net>2007-09-06 04:01:25 +0000
committerRaghubansh Kumar <kraghuba@php.net>2007-09-06 04:01:25 +0000
commitaf40765f8fe491b1c14a13d1bf8e91279ed62523 (patch)
tree1ce278d71555ea3d4f94d88469f8da1e2dc0223d
parent49c91f6e33b183fe2207110d244009ef21302a4a (diff)
downloadphp-git-af40765f8fe491b1c14a13d1bf8e91279ed62523.tar.gz
New testcases for addslashes() function
-rw-r--r--ext/standard/tests/strings/addslashes_basic.phpt39
-rw-r--r--ext/standard/tests/strings/addslashes_error.phpt44
-rw-r--r--ext/standard/tests/strings/addslashes_variation1.phpt170
-rw-r--r--ext/standard/tests/strings/addslashes_variation2.phpt195
-rw-r--r--ext/standard/tests/strings/addslashes_variation3.phpt198
5 files changed, 646 insertions, 0 deletions
diff --git a/ext/standard/tests/strings/addslashes_basic.phpt b/ext/standard/tests/strings/addslashes_basic.phpt
new file mode 100644
index 0000000000..6ed1210670
--- /dev/null
+++ b/ext/standard/tests/strings/addslashes_basic.phpt
@@ -0,0 +1,39 @@
+--TEST--
+Test addslashes() function : basic functionality
+--INI--
+--FILE--
+<?php
+/* Prototype : string addslashes ( string $str )
+ * Description: Returns a string with backslashes before characters (single quotes, double quote,
+ * backslash and nul character) that need to be quoted in database queries etc.
+ * Source code: ext/standard/string.c
+*/
+
+/*
+ * Testing addslashes() with strings containing characters that can be prefixed with backslash
+ * by the function
+*/
+
+echo "*** Testing addslashes() : basic functionality ***\n";
+
+// Initialize all required variables
+$str_array = array( "How's everybody", // string containing single quote
+ 'Are you "JOHN"?', // string with double quotes
+ 'c:\php\addslashes', // string with backslashes
+ "hello\0world" // string with nul character
+ );
+
+// Calling addslashes() with all arguments
+foreach( $str_array as $str ) {
+ var_dump( addslashes($str) );
+}
+
+echo "Done\n";
+?>
+--EXPECTF--
+*** Testing addslashes() : basic functionality ***
+string(16) "How\'s everybody"
+string(17) "Are you \"JOHN\"?"
+string(19) "c:\\php\\addslashes"
+string(12) "hello\0world"
+Done \ No newline at end of file
diff --git a/ext/standard/tests/strings/addslashes_error.phpt b/ext/standard/tests/strings/addslashes_error.phpt
new file mode 100644
index 0000000000..b512716934
--- /dev/null
+++ b/ext/standard/tests/strings/addslashes_error.phpt
@@ -0,0 +1,44 @@
+--TEST--
+Test addslashes() function : error conditions
+--INI--
+--FILE--
+<?php
+/* Prototype : string addslashes ( string $str )
+ * Description: Returns a string with backslashes before characters that need to be quoted in database queries etc.
+ * Source code: ext/standard/string.c
+*/
+
+/*
+ * Testing addslashes() for error conditions
+*/
+
+echo "*** Testing addslashes() : error conditions ***\n";
+
+// Zero argument
+echo "\n-- Testing addslashes() function with Zero arguments --\n";
+var_dump( addslashes() );
+
+// More than expected number of arguments
+echo "\n-- Testing addslashes() function with more than expected no. of arguments --\n";
+$str = '"hello"\"world"';
+$extra_arg = 10;
+
+var_dump( addslashes($str, $extra_arg) );
+var_dump( $str );
+
+echo "Done\n";
+?>
+--EXPECTF--
+*** Testing addslashes() : error conditions ***
+
+-- Testing addslashes() function with Zero arguments --
+
+Warning: Wrong parameter count for addslashes() in %s on line %d
+NULL
+
+-- Testing addslashes() function with more than expected no. of arguments --
+
+Warning: Wrong parameter count for addslashes() in %s on line %d
+NULL
+string(15) ""hello"\"world""
+Done
diff --git a/ext/standard/tests/strings/addslashes_variation1.phpt b/ext/standard/tests/strings/addslashes_variation1.phpt
new file mode 100644
index 0000000000..01ef78176e
--- /dev/null
+++ b/ext/standard/tests/strings/addslashes_variation1.phpt
@@ -0,0 +1,170 @@
+--TEST--
+Test addslashes() function : usage variations - non-string type argument
+--INI--
+--FILE--
+<?php
+/* Prototype : string addslashes ( string $str )
+ * Description: Returns a string with backslashes before characters that need to be quoted in database queries etc.
+ * Source code: ext/standard/string.c
+*/
+
+/*
+ * Test addslashes() with non-string type argument such as int, float, etc
+*/
+
+echo "*** Testing addslashes() : with non-string type argument ***\n";
+// initialize all required variables
+
+// get an unset variable
+$unset_var = 'string_val';
+unset($unset_var);
+
+// declaring a class
+class sample {
+ public function __toString() {
+ return "obj'ct";
+ }
+}
+
+// Defining 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,
+
+ // empty string
+ "",
+ '',
+
+ // undefined variable
+ $undefined_var,
+
+ // unset variable
+ $unset_var,
+
+ // objects
+ new sample(),
+
+ // resource
+ $file_handle,
+
+ NULL,
+ null
+);
+
+
+// loop through each element of the array and check the working of addslashes()
+// when $str arugment is supplied with different values
+echo "\n--- Testing addslashes() by supplying different values for 'str' argument ---\n";
+$counter = 1;
+for($index = 0; $index < count($values); $index ++) {
+ echo "-- Iteration $counter --\n";
+ $str = $values [$index];
+
+ var_dump( addslashes($str) );
+
+ $counter ++;
+}
+
+// closing the file
+fclose($file_handle);
+
+echo "Done\n";
+?>
+--EXPECTF--
+*** Testing addslashes() : with non-string type argument ***
+
+Notice: Undefined variable: undefined_var in %s on line %d
+
+Notice: Undefined variable: unset_var in %s on line %d
+
+--- Testing addslashes() by supplying different values for 'str' argument ---
+-- Iteration 1 --
+string(1) "0"
+-- Iteration 2 --
+string(1) "1"
+-- Iteration 3 --
+string(5) "12345"
+-- Iteration 4 --
+string(5) "-2345"
+-- Iteration 5 --
+string(4) "10.5"
+-- Iteration 6 --
+string(5) "-10.5"
+-- Iteration 7 --
+string(12) "105000000000"
+-- Iteration 8 --
+string(7) "1.06E-9"
+-- Iteration 9 --
+string(3) "0.5"
+-- Iteration 10 --
+
+Notice: Array to string conversion in %s on line %d
+string(5) "Array"
+-- Iteration 11 --
+
+Notice: Array to string conversion in %s on line %d
+string(5) "Array"
+-- Iteration 12 --
+
+Notice: Array to string conversion in %s on line %d
+string(5) "Array"
+-- Iteration 13 --
+
+Notice: Array to string conversion in %s on line %d
+string(5) "Array"
+-- Iteration 14 --
+
+Notice: Array to string conversion in %s on line %d
+string(5) "Array"
+-- Iteration 15 --
+string(1) "1"
+-- Iteration 16 --
+string(0) ""
+-- Iteration 17 --
+string(1) "1"
+-- Iteration 18 --
+string(0) ""
+-- Iteration 19 --
+string(0) ""
+-- Iteration 20 --
+string(0) ""
+-- Iteration 21 --
+string(0) ""
+-- Iteration 22 --
+string(0) ""
+-- Iteration 23 --
+string(7) "obj\'ct"
+-- Iteration 24 --
+string(14) "Resource id #%d"
+-- Iteration 25 --
+string(0) ""
+-- Iteration 26 --
+string(0) ""
+Done
diff --git a/ext/standard/tests/strings/addslashes_variation2.phpt b/ext/standard/tests/strings/addslashes_variation2.phpt
new file mode 100644
index 0000000000..285d9058af
--- /dev/null
+++ b/ext/standard/tests/strings/addslashes_variation2.phpt
@@ -0,0 +1,195 @@
+--TEST--
+Test addslashes() function : usage variations - strings with characters to be backslashed
+--INI--
+--FILE--
+<?php
+/* Prototype : string addslashes ( string $str )
+ * Description: Returns a string with backslashes before characters that need to be quoted in database queries etc.
+ * Source code: ext/standard/string.c
+*/
+
+/*
+ * Test addslashes() with various strings containing characters thats can be backslashed
+*/
+
+echo "*** Testing addslashes() : with various strings containing characters to be backslashed ***\n";
+
+// initialising a heredoc string
+$heredoc_string = <<<EOT
+This is line 1 of 'heredoc' string
+This is line 2 of "heredoc" string
+EOT;
+
+$heredoc_null_string =<<<EOT
+EOT;
+
+// initialising the string array
+
+$str_array = array(
+ // string without any characters that can be backslashed
+ 'Hello world',
+
+ // string with single quotes
+ "how're you doing?",
+ "don't disturb u'r neighbours",
+ "don't disturb u'r neighbours''",
+ '',
+ '\'',
+ "'",
+
+ // string with double quotes
+ 'he said, "he will be on leave"',
+ 'he said, ""he will be on leave"',
+ '"""PHP"""',
+ "",
+ "\"",
+ '"',
+ "hello\"",
+
+ // string with backslash characters
+ 'Is your name Ram\Krishna?',
+ '\\0.0.0.0',
+ 'c:\php\testcase\addslashes',
+ '\\',
+
+ // string with nul characters
+ 'hello'.chr(0).'world',
+ chr(0).'hello'.chr(0),
+ chr(0).chr(0).'hello',
+ chr(0),
+
+ // mixed strings
+ "'\\0.0.0.0'",
+ "'\\0.0.0.0'".chr(0),
+ chr(0)."'c:\php\'",
+ '"\\0.0.0.0"',
+ '"c:\php\"'.chr(0)."'",
+ '"hello"'."'world'".chr(0).'//',
+
+ // string with hexadecimal number
+ "0xABCDEF0123456789",
+ "\x00",
+ '!@#$%&*@$%#&/;:,<>',
+ "hello\x00world",
+
+ // heredoc strings
+ $heredoc_string,
+ $heredoc_null_string
+ );
+
+$count = 1;
+// looping to test for all strings in $str_array
+foreach( $str_array as $str ) {
+ echo "\n-- Iteration $count --\n";
+ var_dump( addslashes($str) );
+ $count ++;
+}
+
+echo "Done\n";
+?>
+--EXPECTF--
+*** Testing addslashes() : with various strings containing characters to be backslashed ***
+
+-- Iteration 1 --
+string(11) "Hello world"
+
+-- Iteration 2 --
+string(18) "how\'re you doing?"
+
+-- Iteration 3 --
+string(30) "don\'t disturb u\'r neighbours"
+
+-- Iteration 4 --
+string(34) "don\'t disturb u\'r neighbours\'\'"
+
+-- Iteration 5 --
+string(0) ""
+
+-- Iteration 6 --
+string(2) "\'"
+
+-- Iteration 7 --
+string(2) "\'"
+
+-- Iteration 8 --
+string(32) "he said, \"he will be on leave\""
+
+-- Iteration 9 --
+string(34) "he said, \"\"he will be on leave\""
+
+-- Iteration 10 --
+string(15) "\"\"\"PHP\"\"\""
+
+-- Iteration 11 --
+string(0) ""
+
+-- Iteration 12 --
+string(2) "\""
+
+-- Iteration 13 --
+string(2) "\""
+
+-- Iteration 14 --
+string(7) "hello\""
+
+-- Iteration 15 --
+string(26) "Is your name Ram\\Krishna?"
+
+-- Iteration 16 --
+string(9) "\\0.0.0.0"
+
+-- Iteration 17 --
+string(29) "c:\\php\\testcase\\addslashes"
+
+-- Iteration 18 --
+string(2) "\\"
+
+-- Iteration 19 --
+string(12) "hello\0world"
+
+-- Iteration 20 --
+string(9) "\0hello\0"
+
+-- Iteration 21 --
+string(9) "\0\0hello"
+
+-- Iteration 22 --
+string(2) "\0"
+
+-- Iteration 23 --
+string(13) "\'\\0.0.0.0\'"
+
+-- Iteration 24 --
+string(15) "\'\\0.0.0.0\'\0"
+
+-- Iteration 25 --
+string(15) "\0\'c:\\php\\\'"
+
+-- Iteration 26 --
+string(13) "\"\\0.0.0.0\""
+
+-- Iteration 27 --
+string(17) "\"c:\\php\\\"\0\'"
+
+-- Iteration 28 --
+string(22) "\"hello\"\'world\'\0//"
+
+-- Iteration 29 --
+string(18) "0xABCDEF0123456789"
+
+-- Iteration 30 --
+string(2) "\0"
+
+-- Iteration 31 --
+string(18) "!@#$%&*@$%#&/;:,<>"
+
+-- Iteration 32 --
+string(12) "hello\0world"
+
+-- Iteration 33 --
+string(73) "This is line 1 of \'heredoc\' string
+This is line 2 of \"heredoc\" string"
+
+-- Iteration 34 --
+string(0) ""
+Done \ No newline at end of file
diff --git a/ext/standard/tests/strings/addslashes_variation3.phpt b/ext/standard/tests/strings/addslashes_variation3.phpt
new file mode 100644
index 0000000000..72b84823b1
--- /dev/null
+++ b/ext/standard/tests/strings/addslashes_variation3.phpt
@@ -0,0 +1,198 @@
+--TEST--
+Test addslashes() function : usage variations - with magic_quotes_sybase directive ON
+--INI--
+--FILE--
+<?php
+/* Prototype : string addslashes ( string $str )
+ * Description: Returns a string with backslashes before characters that need to be quoted in database queries etc.
+ * Source code: ext/standard/string.c
+*/
+
+/*
+ * Test addslashes() with PHP directive magic_quotes_sybase set ON
+*/
+
+echo "*** Testing addslashes() : with php directive magic_quotes_sybase set ON ***\n";
+
+// setting ON the php directive magic_quotes_sybase
+var_dump( ini_set("magic_quotes_sybase", "1") );
+
+// initialising a heredoc string
+$heredoc_string = <<<EOT
+This is line 1 of 'heredoc' string
+This is line 2 of "heredoc" string
+EOT;
+
+$heredoc_null_string =<<<EOT
+EOT;
+
+// initialising the string array
+$str_array = array(
+ // string without any characters that can be backslashed
+ 'Hello world',
+
+ // string with single quotes
+ "how're you doing?",
+ "don't disturb u'r neighbours",
+ "don't disturb u'r neighbours''",
+ '',
+ '\'',
+ "'",
+
+ // string with double quotes
+ 'he said, "he will be on leave"',
+ 'he said, ""he will be on leave"',
+ '"""PHP"""',
+ "",
+ "\"",
+ '"',
+ "hello\"",
+
+ // string with backslash characters
+ 'Is your name Ram\Krishna?',
+ '\\0.0.0.0',
+ 'c:\php\testcase\addslashes',
+ '\\',
+
+ // string with nul characters
+ 'hello'.chr(0).'world',
+ chr(0).'hello'.chr(0),
+ chr(0).chr(0).'hello',
+ chr(0),
+
+ // mixed strings
+ "'\\0.0.0.0'",
+ "'\\0.0.0.0'".chr(0),
+ chr(0)."'c:\php\'",
+ '"\\0.0.0.0"',
+ '"c:\php\"'.chr(0)."'",
+ '"hello"'."'world'".chr(0).'//',
+
+ // string with hexadecimal number
+ "0xABCDEF0123456789",
+ "\xabcdef0123456789",
+ '!@#$%&*@$%#&/;:,<>',
+ "hello\x00world",
+
+ // heredoc strings
+ $heredoc_string,
+ $heredoc_null_string
+ );
+
+$count = 1;
+// looping to test for all strings in $str_array
+foreach( $str_array as $str ) {
+ echo "\n-- Iteration $count --\n";
+ var_dump( addslashes($str) );
+ $count ++;
+}
+
+echo "Done\n";
+?>
+--EXPECTF--
+*** Testing addslashes() : with php directive magic_quotes_sybase set ON ***
+string(1) "0"
+
+-- Iteration 1 --
+string(11) "Hello world"
+
+-- Iteration 2 --
+string(18) "how''re you doing?"
+
+-- Iteration 3 --
+string(30) "don''t disturb u''r neighbours"
+
+-- Iteration 4 --
+string(34) "don''t disturb u''r neighbours''''"
+
+-- Iteration 5 --
+string(0) ""
+
+-- Iteration 6 --
+string(2) "''"
+
+-- Iteration 7 --
+string(2) "''"
+
+-- Iteration 8 --
+string(30) "he said, "he will be on leave""
+
+-- Iteration 9 --
+string(31) "he said, ""he will be on leave""
+
+-- Iteration 10 --
+string(9) """"PHP""""
+
+-- Iteration 11 --
+string(0) ""
+
+-- Iteration 12 --
+string(1) """
+
+-- Iteration 13 --
+string(1) """
+
+-- Iteration 14 --
+string(6) "hello""
+
+-- Iteration 15 --
+string(25) "Is your name Ram\Krishna?"
+
+-- Iteration 16 --
+string(8) "\0.0.0.0"
+
+-- Iteration 17 --
+string(26) "c:\php\testcase\addslashes"
+
+-- Iteration 18 --
+string(1) "\"
+
+-- Iteration 19 --
+string(12) "hello\0world"
+
+-- Iteration 20 --
+string(9) "\0hello\0"
+
+-- Iteration 21 --
+string(9) "\0\0hello"
+
+-- Iteration 22 --
+string(2) "\0"
+
+-- Iteration 23 --
+string(12) "''\0.0.0.0''"
+
+-- Iteration 24 --
+string(14) "''\0.0.0.0''\0"
+
+-- Iteration 25 --
+string(13) "\0''c:\php\''"
+
+-- Iteration 26 --
+string(10) ""\0.0.0.0""
+
+-- Iteration 27 --
+string(13) ""c:\php\"\0''"
+
+-- Iteration 28 --
+string(20) ""hello"''world''\0//"
+
+-- Iteration 29 --
+string(18) "0xABCDEF0123456789"
+
+-- Iteration 30 --
+string(15) "«cdef0123456789"
+
+-- Iteration 31 --
+string(18) "!@#$%&*@$%#&/;:,<>"
+
+-- Iteration 32 --
+string(12) "hello\0world"
+
+-- Iteration 33 --
+string(71) "This is line 1 of ''heredoc'' string
+This is line 2 of "heredoc" string"
+
+-- Iteration 34 --
+string(0) ""
+Done \ No newline at end of file