Merge branch 'DEV_2' into HEAD
[m6w6/ext-http] / phpunit / ParamsTest.php
index d4415352b0f2067766f42c308babcb5b5f890458..71bfcf45dec635bd5d94c4bd705268e6b4990e13 100644 (file)
@@ -17,6 +17,88 @@ class ParamsTest extends PHPUnit_Framework_TestCase {
         );
     }
 
+    function testQuoted() {
+        $p = new http\Params("multipart/form-data; boundary=\"--123\"");
+        $this->assertEquals(
+            array(
+                "multipart/form-data" => array(
+                    "value" => true,
+                    "arguments" => array(
+                        "boundary" => "--123"
+                    )
+                )
+            ),
+            $p->params
+        );
+        $this->assertEquals("multipart/form-data;boundary=--123", (string) $p);
+    }
+
+    function testEscaped() {
+        $p = new http\Params("form-data; name=\"upload\"; filename=\"trick\\\"\0\\\"ed\"");
+        $this->assertEquals(
+            array(
+                "form-data" => array(
+                    "value" => true,
+                    "arguments" => array(
+                        "name" => "upload",
+                        "filename" => "trick\"\0\"ed"
+                    )
+                )
+            ),
+            $p->params
+        );
+        $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);