fix read_property handler (return_value lives on stack of zend_read_property)
[m6w6/ext-http] / tests / querystring002.phpt
1 --TEST--
2 query string
3 --SKIPIF--
4 <?php
5 include "skipif.inc";
6 ?>
7 --FILE--
8 <?php
9 echo "Test\n";
10
11 $s = "a=b&r[]=0&r[]=1&r[]=2&rr[][]=00&rr[][]=01&1=2";
12 $e = "a=b&r%5B0%5D=0&r%5B1%5D=1&r%5B2%5D=2&rr%5B0%5D%5B0%5D=00&rr%5B0%5D%5B1%5D=01&1=2";
13 $q = new http\QueryString($s);
14
15 var_dump($e === (string) $q);
16 var_dump($e === $q->get());
17
18 printf("Get defval\n");
19 var_dump("nonexistant" === $q->get("unknown", "s", "nonexistant"));
20 var_dump(null === $q->get("unknown"));
21
22 printf("Get 'a'\n");
23 var_dump("b" === $q->get("a"));
24 var_dump(0 === $q->get("a", "i"));
25 var_dump(array("b") === $q->get("a", "a"));
26 var_dump((object)array("scalar" => "b") == $q->get("a", "o"));
27
28 printf("Get 'r'\n");
29 var_dump(array("0","1","2") === $q->get("r"));
30
31 printf("Get 'rr'\n");
32 var_dump(array(array("00","01")) === $q->get("rr"));
33
34 printf("Get 1\n");
35 var_dump(2 == $q->get(1));
36 var_dump("2" === $q->get(1, "s"));
37 var_dump(2.0 === $q->get(1, "f"));
38 var_dump($q->get(1, "b"));
39
40 printf("Del 'a'\n");
41 var_dump("b" === $q->get("a", http\QueryString::TYPE_STRING, null, true));
42 var_dump(null === $q->get("a"));
43
44 printf("Del all\n");
45 $q->set(array("a" => null, "r" => null, "rr" => null, 1 => null));
46 var_dump("" === $q->toString());
47
48 $q = new http\QueryString($s);
49
50 printf("QSO\n");
51 var_dump($e === (string) new http\QueryString($q));
52 var_dump(http_build_query(array("e"=>$q->toArray())) === (string) new http\QueryString(array("e" => $q)));
53
54 printf("Iterator\n");
55 var_dump($q->toArray() === iterator_to_array($q));
56
57 printf("Serialize\n");
58 var_dump($e === (string) unserialize(serialize($q)));
59
60 ?>
61 DONE
62 --EXPECT--
63 Test
64 bool(true)
65 bool(true)
66 Get defval
67 bool(true)
68 bool(true)
69 Get 'a'
70 bool(true)
71 bool(true)
72 bool(true)
73 bool(true)
74 Get 'r'
75 bool(true)
76 Get 'rr'
77 bool(true)
78 Get 1
79 bool(true)
80 bool(true)
81 bool(true)
82 bool(true)
83 Del 'a'
84 bool(true)
85 bool(true)
86 Del all
87 bool(true)
88 QSO
89 bool(true)
90 bool(true)
91 Iterator
92 bool(true)
93 Serialize
94 bool(true)
95 DONE