fiy a serialization issue; always add "arguments" key to params array; add tests
[m6w6/ext-http] / phpunit / ParamsTest.php
index a06d72e3a71c7917af9fff93c7ea9ccedebcf684..71bfcf45dec635bd5d94c4bd705268e6b4990e13 100644 (file)
@@ -50,6 +50,55 @@ class ParamsTest extends PHPUnit_Framework_TestCase {
         $this->assertEquals("form-data;name=upload;filename=\"trick\\\"\\0\\\"ed\"", (string) $p);
     }
 
+    function testUrlencoded() {
+        $s = "foo=b%22r&bar=b%22z&a%5B%5D%5B%5D=1";
+        $p = new http\Params($s, "&", "", "=", http\Params::PARSE_URLENCODED);
+        $this->assertEquals(
+            array(
+                "foo" => array(
+                    "value" => "b\"r",
+                    "arguments" => array(),
+                ),
+                "bar" => array(
+                    "value" => "b\"z",
+                    "arguments" => array(),
+                ),
+                "a[][]" => array(
+                    "value" => "1",
+                    "arguments" => array(),
+                ),
+            ),
+            $p->params
+        );
+        $this->assertEquals("foo=b%22r&bar=b%22z&a%5B%5D%5B%5D=1", (string) $p);
+    }
+
+    function testQuery() {
+        $s = "foo=b%22r&bar=b%22z&a%5B%5D%5B%5D=1";
+        $p = new http\Params($s, "&", "", "=", http\Params::PARSE_QUERY);
+        $this->assertEquals(
+            array(
+                "foo" => array(
+                    "value" => "b\"r",
+                    "arguments" => array(),
+                ),
+                "bar" => array(
+                    "value" => "b\"z",
+                    "arguments" => array(),
+                ),
+                "a" => array(
+                    "value" => array(
+                        array("1")
+                    ),
+                    "arguments" => array(),
+                ),
+            ),
+            $p->params
+        );
+        $this->assertEquals("foo=b%22r&bar=b%22z&a%5B0%5D%5B0%5D=1", (string) $p);
+    }
+
+
     function testEmpty() {
         $p = new http\Params(NULL);
         $this->assertEquals(array(), $p->params);