Merge branch 'master' of git.php.net:/pecl/http/pecl_http
[m6w6/ext-http] / tests / headerparser001.phpt
diff --git a/tests/headerparser001.phpt b/tests/headerparser001.phpt
new file mode 100644 (file)
index 0000000..cdd55e4
--- /dev/null
@@ -0,0 +1,61 @@
+--TEST--
+header parser
+--SKIPIF--
+<?php
+include "skipif.inc";
+?>
+--FILE--
+<?php
+echo "Test\n";
+
+$headers = array(
+       "One: ","header\n",
+       "Two: header\n\tlines\n",
+       "Three",": header\n lines\n here\n",
+       "More: than one header\n",
+       "More: ", "than: ", "you: ", "expect\n",
+       "\n",
+);
+
+$states = array(-1=>"FAILURE",0=>"START","KEY","VALUE","VALUE_EX","HEADER_DONE","DONE");
+$parser = new http\Header\Parser;
+do {
+       $state = $parser->parse($part = array_shift($headers), 
+               $headers ? 0 : http\Header\Parser::CLEANUP, 
+               $result);
+       printf("%2\$-32s | %1\$s\n", $states[$state], addcslashes($part, "\r\n\t\0"));
+} while ($headers && $state !== http\Header\Parser::STATE_FAILURE);
+
+var_dump($result);
+
+?>
+===DONE===
+--EXPECT--
+Test
+One:                             | VALUE
+header\n                         | VALUE_EX
+Two: header\n\tlines\n           | VALUE_EX
+Three                            | KEY
+: header\n lines\n here\n        | VALUE_EX
+More: than one header\n          | VALUE_EX
+More:                            | VALUE
+than:                            | VALUE
+you:                             | VALUE
+expect\n                         | VALUE_EX
+\n                               | DONE
+array(4) {
+  ["One"]=>
+  string(6) "header"
+  ["Two"]=>
+  string(12) "header lines"
+  ["Three"]=>
+  string(17) "header lines here"
+  ["More"]=>
+  array(2) {
+    [0]=>
+    string(15) "than one header"
+    [1]=>
+    string(17) "than: you: expect"
+  }
+}
+===DONE===