-$u = urlencode("ü");
-$s = urlencode("ß");
-$t = "p1*=utf-8''s$u$s,p2*=utf-8''hei$s;a1*=utf-8''a$s;a2*=utf-8''e$s;a3=no,p3=not";
-$p = new http\Params($t);
-var_dump($p->params);
-var_dump((string)$p === $t, (string)$p, $t);
+
+$s = "foo bar.arg:0.bla gotit:0.now";
+$p = new http\Params($s, " ", ".", ":");
+$c = $s;
+$k = array("foo", "bar", "gotit");
+$a = array("foo"=>"arg", "bar"=>"bla", "gotit"=>"now");
+$r = array (
+ 'foo' =>
+ array (
+ 'value' => true,
+ 'arguments' =>
+ array (
+ ),
+ ),
+ 'bar' =>
+ array (
+ 'value' => true,
+ 'arguments' =>
+ array (
+ 'arg' => '0',
+ 'bla' => true,
+ ),
+ ),
+ 'gotit' =>
+ array (
+ 'value' => '0',
+ 'arguments' =>
+ array (
+ 'now' => true,
+ ),
+ ),
+);
+
+# ---
+
+var_dump(count($p->params));
+
+echo "key exists\n";
+foreach ($k as $key) {
+ var_dump(array_key_exists($key, $p->params));
+}
+
+echo "values\n";
+foreach ($k as $key) {
+ var_dump($p[$key]["value"]);
+}
+
+echo "args\n";
+foreach ($k as $key) {
+ var_dump(count($p[$key]["arguments"]));
+}
+
+echo "arg values\n";
+foreach ($k as $key) {
+ var_dump(@$p[$key]["arguments"][$a[$key]]);
+}
+
+echo "equals\n";
+var_dump($c === (string) $p);
+var_dump($r === $p->params);
+$x = new http\Params($p->params);
+var_dump($r === $x->toArray());