]> granicus.if.org Git - php/commitdiff
New basic parse_str() tests. Tested on Windows,Linux and Lnux 64 bit. Some tests...
authorandy wharmby <wharmby@php.net>
Tue, 23 Jun 2009 22:39:42 +0000 (22:39 +0000)
committerandy wharmby <wharmby@php.net>
Tue, 23 Jun 2009 22:39:42 +0000 (22:39 +0000)
ext/standard/tests/strings/parse_str_basic1.phpt [new file with mode: 0644]
ext/standard/tests/strings/parse_str_basic2.phpt [new file with mode: 0644]
ext/standard/tests/strings/parse_str_basic3.phpt [new file with mode: 0644]
ext/standard/tests/strings/parse_str_basic4.phpt [new file with mode: 0644]
ext/standard/tests/strings/parse_str_error1.phpt [new file with mode: 0644]

diff --git a/ext/standard/tests/strings/parse_str_basic1.phpt b/ext/standard/tests/strings/parse_str_basic1.phpt
new file mode 100644 (file)
index 0000000..ea393b0
--- /dev/null
@@ -0,0 +1,79 @@
+--TEST--
+Test parse_str() function : basic functionality 
+--XFAIL--
+Bug 48658: Test currently fails as parse_str() api insists that the optional reult array 
+is pre-defined. 
+--FILE--
+<?php
+               
+/* Prototype  : void parse_str  ( string $str  [, array &$arr  ] )
+ * Description: Parses the string into variables
+ * Source code: ext/standard/string.c
+*/
+
+echo "*** Testing parse_str() : basic functionality ***\n";
+
+echo "Basic test WITHOUT result arg\n";
+$s1 = "first=val1&second=val2&third=val3";
+var_dump(parse_str($s1));
+var_dump($first, $second, $third);
+
+echo "\nBasic test WITH undefined var for result arg\n";
+$s1 = "first=val1&second=val2&third=val3";
+var_dump(parse_str($s1, $res1));
+var_dump($res1);
+
+echo "\nBasic test WITH existing non-array var for result arg\n";
+$res2 =99;
+$s1 = "first=val1&second=val2&third=val3";
+var_dump(parse_str($s1, $res2));
+var_dump($res2);
+
+echo "\nBasic test with an existing array as results array\n";
+$res3_array = array(1,2,3,4);
+var_dump(parse_str($s1, $res3_array));
+var_dump($res3_array); 
+
+?>
+===DONE===
+--EXPECTF--
+*** Testing parse_str() : basic functionality ***
+Basic test WITHOUT result arg
+NULL
+unicode(4) "val1"
+unicode(4) "val2"
+unicode(4) "val3"
+
+Basic test WITH undefined var for result arg
+NULL
+array(3) {
+  [u"first"]=>
+  unicode(4) "val1"
+  [u"second"]=>
+  unicode(4) "val2"
+  [u"third"]=>
+  unicode(4) "val3"
+}
+
+Basic test WITH existing non-array var for result arg
+NULL
+array(3) {
+  [u"first"]=>
+  unicode(4) "val1"
+  [u"second"]=>
+  unicode(4) "val2"
+  [u"third"]=>
+  unicode(4) "val3"
+}
+
+Basic test with an existing array as results array
+NULL
+array(3) {
+  [u"first"]=>
+  unicode(4) "val1"
+  [u"second"]=>
+  unicode(4) "val2"
+  [u"third"]=>
+  unicode(4) "val3"
+}
+===DONE===
\ No newline at end of file
diff --git a/ext/standard/tests/strings/parse_str_basic2.phpt b/ext/standard/tests/strings/parse_str_basic2.phpt
new file mode 100644 (file)
index 0000000..2c84305
--- /dev/null
@@ -0,0 +1,26 @@
+--TEST--
+Test parse_str() function : non-default arg_separator.input specified
+--INI--
+arg_separator.input = "/" 
+--FILE--
+<?php
+/* Prototype  : void parse_str  ( string $str  [, array &$arr  ] )
+ * Description: Parses the string into variables
+ * Source code: ext/standard/string.c
+*/
+
+echo "*** Testing parse_str() : non-default arg_separator.input specified ***\n";
+
+$s1 = "first=val1/second=val2/third=val3";
+var_dump(parse_str($s1));
+var_dump($first, $second, $third);
+
+?>
+===DONE===
+--EXPECTF--
+*** Testing parse_str() : non-default arg_separator.input specified ***
+NULL
+unicode(4) "val1"
+unicode(4) "val2"
+unicode(4) "val3"
+===DONE===
\ No newline at end of file
diff --git a/ext/standard/tests/strings/parse_str_basic3.phpt b/ext/standard/tests/strings/parse_str_basic3.phpt
new file mode 100644 (file)
index 0000000..a82f2ea
--- /dev/null
@@ -0,0 +1,276 @@
+--TEST--
+Test parse_str() function : Basic functionality
+--XFAIL--
+Bug 48658: Test currently fails as parse_str() api insists that the optional reult array 
+is pre-defined. php.net bugzilla 
+--FILE--
+<?php
+/* Prototype  : void parse_str  ( string $str  [, array &$arr  ] )
+ * Description: Parses the string into variables
+ * Source code: ext/standard/string.c
+*/
+echo "*** Testing parse_str() : basic functionality ***\n";
+
+echo "\nTest string with array values\n";
+$s1 = "first=abc&a[]=123&a[]=false&b[]=str&c[]=3.5&a[]=last";
+var_dump(parse_str($s1));
+var_dump($first, $a, $b, $c); 
+
+echo "\nTest string with array values and results array\n";
+$s1 = "first=abc&a[]=123&a[]=false&b[]=str&c[]=3.5&a[]=last";
+$res3_array= array();
+var_dump(parse_str($s1, $res3_array));
+var_dump($res3_array); 
+
+echo "\nTest string containing numerical array keys\n";
+$str = "arr[1]=sid&arr[4]=bill";
+$res3= array();
+var_dump(parse_str($str, $res));
+var_dump($res);
+
+echo "\nTest string containing associative keys\n";
+$str = "arr[first]=sid&arr[forth]=bill";
+$res3_array= array();
+var_dump(parse_str($str, $res));
+var_dump($res);
+
+echo "\nTest string with array values with same name as existing variable\n";
+$a = 9999;
+$s1 = "a[]=123&a[]=false&a[]=last";
+var_dump(parse_str($s1));
+var_dump($a);
+
+echo "\nTest string with non-array value with same name as existing array variable\n";
+$a = array(10,11,12,13);
+$s1 = "a=999";
+parse_str($s1);
+var_dump($a);
+
+echo "\nTest string with encoded data\n";
+$s1 = "a=%3c%3d%3d%20%20foo+bar++%3d%3d%3e&b=%23%23%23Hello+World%23%23%23";
+parse_str($s1);
+var_dump($a, $b);
+
+echo "\nTest string with single quotes characters\n";
+$s1 = "firstname=Bill&surname=O%27Reilly";
+var_dump(parse_str($s1));
+var_dump($firstname, $surname);
+
+echo "\nTest string with backslash characters\n";
+$s1 = "sum=10%5c2%3d5";
+var_dump(parse_str($s1));
+var_dump($sum);
+
+echo "\nTest string with double quotes data\n";
+$s1 = "str=A+string+with+%22quoted%22+strings";
+var_dump(parse_str($s1));
+var_dump($str);
+
+echo "\nTest string with nulls\n";
+$s1 = "str=A%20string%20with%20containing%20%00%00%00%20nulls";
+var_dump(parse_str($s1));
+var_dump($str);
+
+echo "\nTest string with 2-dim array with numeric keys\n";
+$str = "arr[3][4]=sid&arr[3][6]=fred";
+$res3_array= array();
+var_dump(parse_str($str, $res));
+var_dump($res);
+
+echo "\nTest string with 2-dim array with null keys\n";
+$str = "arr[][]=sid&arr[][]=fred";
+$res3_array= array();
+var_dump(parse_str($str, $res));
+var_dump($res);
+
+echo "\nTest string with 2-dim array with non-numeric keys\n";
+$str = "arr[one][four]=sid&arr[three][six]=fred";
+$res3_array= array();
+var_dump(parse_str($str, $res));
+var_dump($res);
+
+echo "\nTest string with 3-dim array with numeric keys\n";
+$str = "arr[1][2][3]=sid&arr[1][2][6]=fred";
+$res3_array= array();
+var_dump(parse_str($str, $res));
+var_dump($res);
+
+?>
+===DONE===
+--EXPECTF--
+*** Testing parse_str() : basic functionality ***
+
+Test string with array values
+NULL
+unicode(3) "abc"
+array(3) {
+  [0]=>
+  unicode(3) "123"
+  [1]=>
+  unicode(5) "false"
+  [2]=>
+  unicode(4) "last"
+}
+array(1) {
+  [0]=>
+  unicode(3) "str"
+}
+array(1) {
+  [0]=>
+  unicode(3) "3.5"
+}
+
+Test string with array values and results array
+NULL
+array(4) {
+  [u"first"]=>
+  unicode(3) "abc"
+  [u"a"]=>
+  array(3) {
+    [0]=>
+    unicode(3) "123"
+    [1]=>
+    unicode(5) "false"
+    [2]=>
+    unicode(4) "last"
+  }
+  [u"b"]=>
+  array(1) {
+    [0]=>
+    unicode(3) "str"
+  }
+  [u"c"]=>
+  array(1) {
+    [0]=>
+    unicode(3) "3.5"
+  }
+}
+
+Test string containing numerical array keys
+NULL
+array(1) {
+  [u"arr"]=>
+  array(2) {
+    [1]=>
+    unicode(3) "sid"
+    [4]=>
+    unicode(4) "bill"
+  }
+}
+
+Test string containing associative keys
+NULL
+array(1) {
+  [u"arr"]=>
+  array(2) {
+    ["first"]=>
+    unicode(3) "sid"
+    ["forth"]=>
+    unicode(4) "bill"
+  }
+}
+
+Test string with array values with same name as existing variable
+NULL
+array(3) {
+  [0]=>
+  unicode(3) "123"
+  [1]=>
+  unicode(5) "false"
+  [2]=>
+  unicode(4) "last"
+}
+
+Test string with non-array value with same name as existing array variable
+unicode(3) "999"
+
+Test string with encoded data
+unicode(17) "<==  foo bar  ==>"
+unicode(17) "###Hello World###"
+
+Test string with single quotes characters
+NULL
+unicode(4) "Bill"
+unicode(9) "O\'Reilly"
+
+Test string with backslash characters
+NULL
+unicode(7) "10\\2=5"
+
+Test string with double quotes data
+NULL
+unicode(32) "A string with \"quoted\" strings"
+
+Test string with nulls
+NULL
+unicode(37) "A string with containing \0\0\0 nulls"
+
+Test string with 2-dim array with numeric keys
+NULL
+array(1) {
+  [u"arr"]=>
+  array(1) {
+    [3]=>
+    array(2) {
+      [4]=>
+      unicode(3) "sid"
+      [6]=>
+      unicode(4) "fred"
+    }
+  }
+}
+
+Test string with 2-dim array with null keys
+NULL
+array(1) {
+  [u"arr"]=>
+  array(2) {
+    [0]=>
+    array(1) {
+      [0]=>
+      unicode(3) "sid"
+    }
+    [1]=>
+    array(1) {
+      [0]=>
+      unicode(4) "fred"
+    }
+  }
+}
+
+Test string with 2-dim array with non-numeric keys
+NULL
+array(1) {
+  [u"arr"]=>
+  array(2) {
+    [u"one"]=>
+    array(1) {
+      ["four"]=>
+      unicode(3) "sid"
+    }
+    [u"three"]=>
+    array(1) {
+      [u"six"]=>
+      unicode(4) "fred"
+    }
+  }
+}
+
+Test string with 3-dim array with numeric keys
+NULL
+array(1) {
+  [u"arr"]=>
+  array(1) {
+    [1]=>
+    array(1) {
+      [2]=>
+      array(2) {
+        [3]=>
+        unicode(3) "sid"
+        [6]=>
+        unicode(4) "fred"
+      }
+    }
+  }
+}
+===DONE===
\ No newline at end of file
diff --git a/ext/standard/tests/strings/parse_str_basic4.phpt b/ext/standard/tests/strings/parse_str_basic4.phpt
new file mode 100644 (file)
index 0000000..3aa33ac
--- /dev/null
@@ -0,0 +1,79 @@
+--TEST--
+Test parse_str() function : test with badly formed strings
+--XFAIL--
+Bug 48658: Test currently fails as parse_str() api insists that the optional reult array 
+is pre-defined. php.net bugzilla 
+--FILE--
+<?php
+/* Prototype  : void parse_str  ( string $str  [, array &$arr  ] )
+ * Description: Parses the string into variables
+ * Source code: ext/standard/string.c
+*/
+
+echo "\nTest string with badly formed strings\n";
+$str = "arr[1=sid&arr[4][2=fred";
+var_dump(parse_str($str, $res));
+var_dump($res);
+
+$str = "arr1]=sid&arr[4]2]=fred";
+var_dump(parse_str($str, $res));
+var_dump($res);
+
+$str = "arr[one=sid&arr[4][two=fred";
+var_dump(parse_str($str, $res));
+var_dump($res);
+
+echo "\nTest string with non-binary safe name\n";
+$str = "arr.test[1]=sid&arr test[4][two]=fred";
+var_dump(parse_str($str, $res));
+var_dump($res);
+?>
+===DONE===
+--EXPECTF--
+Test string with badly formed strings
+NULL
+array(2) {
+  [u"arr_1"]=>
+  unicode(3) "sid"
+  [u"arr"]=>
+  array(1) {
+    [4]=>
+    unicode(4) "fred"
+  }
+}
+NULL
+array(2) {
+  [u"arr1]"]=>
+  unicode(3) "sid"
+  [u"arr"]=>
+  array(1) {
+    [4]=>
+    unicode(4) "fred"
+  }
+}
+NULL
+array(2) {
+  [u"arr_one"]=>
+  unicode(3) "sid"
+  [u"arr"]=>
+  array(1) {
+    [4]=>
+    unicode(4) "fred"
+  }
+}
+
+Test string with non-binary safe name
+NULL
+array(1) {
+  [u"arr_test"]=>
+  array(2) {
+    [1]=>
+    unicode(3) "sid"
+    [4]=>
+    array(1) {
+      [u"two"]=>
+      unicode(4) "fred"
+    }
+  }
+}
+===DONE===
\ No newline at end of file
diff --git a/ext/standard/tests/strings/parse_str_error1.phpt b/ext/standard/tests/strings/parse_str_error1.phpt
new file mode 100644 (file)
index 0000000..a9c902e
--- /dev/null
@@ -0,0 +1,32 @@
+--TEST--
+Test parse_str() function : non-default arg_separator.input specified
+--INI--
+arg_separator.input = "/" 
+--FILE--
+<?php
+/* Prototype  : void parse_str  ( string $str  [, array &$arr  ] )
+ * Description: Parses the string into variables
+ * Source code: ext/standard/string.c
+*/
+
+echo "*** Testing parse_str() : error conditions ***\n";
+
+echo "\n-- Testing htmlentities() function with less than expected no. of arguments --\n";
+parse_str();
+echo "\n-- Testing htmlentities() function with more than expected no. of arguments --\n";
+$s1 = "first=val1&second=val2&third=val3";
+parse_str($s1, $res_array, true); 
+
+?>
+===DONE===
+--EXPECTF--
+*** Testing parse_str() : error conditions ***
+
+-- Testing htmlentities() function with less than expected no. of arguments --
+
+Warning: parse_str() expects at least 1 parameter, 0 given in %s on line %d
+
+-- Testing htmlentities() function with more than expected no. of arguments --
+
+Warning: parse_str() expects at most 2 parameters, 3 given in %s on line %d
+===DONE===
\ No newline at end of file