fix #6: compatibility with 8.2
[awesomized/ext-ion] / tests / Symbol / Table.phpt
1 --TEST--
2 ion\Symbol\Table
3 --EXTENSIONS--
4 ion
5 --FILE--
6 TEST
7 <?php
8
9 echo "global\n";
10 var_dump(ion\Symbol\System::asTable());
11 var_dump(ion\Symbol\PHP::asTable());
12 var_dump(ion\Symbol\PHP::asTable()->find(1));
13
14 echo "shared\n";
15 $shared = new ion\Symbol\Table\Shared("shared");
16
17 echo "add 3 syms\n";
18 var_dump(
19 $shared->add("sym1"),
20 $shared->add("sym2"),
21 $sid3 = $shared->add($s3 = new ion\Symbol("sym3")),
22 );
23
24 echo "s3, sid3\n";
25 var_dump($s3, $sid3);
26
27 echo "find sym3, sid3\n";
28 var_dump($shared->find("sym3"));
29 var_dump($shared->find($sid3));
30
31 echo "local\n";
32 $local = new ion\Symbol\Table\Local;
33 echo "import PHP\n";
34 $local->import(ion\Symbol\PHP::asTable());
35 echo "import shared\n";
36 $local->import($shared);
37
38 echo "find sym1, local sym1\n";
39 var_dump($local->find("sym1"));
40 var_dump($local->findLocal("sym1"));
41
42 echo "add, find, local sym4\n";
43 var_dump($local->add("sym4"));
44 var_dump($local->find("sym4"));
45 var_dump($local->findLocal("sym4"));
46 var_dump($local->getMaxId());
47
48 var_dump(clone $local);
49 var_dump(clone $shared);
50 ?>
51 DONE
52 --EXPECTF--
53 TEST
54 global
55 object(ion\Symbol\Table\Shared)#%d (3) {
56 ["name"]=>
57 string(4) "$ion"
58 ["version"]=>
59 int(1)
60 ["symbols":"ion\Symbol\Table\Shared":private]=>
61 array(0) {
62 }
63 }
64 object(ion\Symbol\Table\Shared)#%d (3) {
65 ["name"]=>
66 string(3) "PHP"
67 ["version"]=>
68 int(1)
69 ["symbols":"ion\Symbol\Table\Shared":private]=>
70 array(0) {
71 }
72 }
73 object(ion\Symbol)#%d (3) {
74 ["value"]=>
75 string(3) "PHP"
76 ["sid"]=>
77 int(1)
78 ["importLocation"]=>
79 object(ion\Symbol\ImportLocation)#%d (2) {
80 ["name"]=>
81 string(3) "PHP"
82 ["location"]=>
83 int(1)
84 }
85 }
86 shared
87 add 3 syms
88 int(1)
89 int(2)
90 int(3)
91 s3, sid3
92 object(ion\Symbol)#%d (3) {
93 ["value"]=>
94 string(4) "sym3"
95 ["sid"]=>
96 int(-1)
97 ["importLocation"]=>
98 NULL
99 }
100 int(3)
101 find sym3, sid3
102 object(ion\Symbol)#%d (3) {
103 ["value"]=>
104 string(4) "sym3"
105 ["sid"]=>
106 int(3)
107 ["importLocation"]=>
108 object(ion\Symbol\ImportLocation)#%d (2) {
109 ["name"]=>
110 string(6) "shared"
111 ["location"]=>
112 int(3)
113 }
114 }
115 object(ion\Symbol)#%d (3) {
116 ["value"]=>
117 string(4) "sym3"
118 ["sid"]=>
119 int(3)
120 ["importLocation"]=>
121 object(ion\Symbol\ImportLocation)#%d (2) {
122 ["name"]=>
123 string(6) "shared"
124 ["location"]=>
125 int(3)
126 }
127 }
128 local
129 import PHP
130 import shared
131 find sym1, local sym1
132 object(ion\Symbol)#%d (3) {
133 ["value"]=>
134 string(4) "sym1"
135 ["sid"]=>
136 int(1)
137 ["importLocation"]=>
138 object(ion\Symbol\ImportLocation)#%d (2) {
139 ["name"]=>
140 string(6) "shared"
141 ["location"]=>
142 int(1)
143 }
144 }
145 NULL
146 add, find, local sym4
147 int(23)
148 object(ion\Symbol)#%d (3) {
149 ["value"]=>
150 string(4) "sym4"
151 ["sid"]=>
152 int(23)
153 ["importLocation"]=>
154 NULL
155 }
156 object(ion\Symbol)#%d (3) {
157 ["value"]=>
158 string(4) "sym4"
159 ["sid"]=>
160 int(23)
161 ["importLocation"]=>
162 NULL
163 }
164 int(23)
165 object(ion\Symbol\Table\Local)#%d (2) {
166 ["imports":"ion\Symbol\Table\Local":private]=>
167 array(0) {
168 }
169 ["symbols":"ion\Symbol\Table\Local":private]=>
170 array(0) {
171 }
172 }
173 object(ion\Symbol\Table\Shared)#%d (3) {
174 ["name"]=>
175 string(6) "shared"
176 ["version"]=>
177 int(1)
178 ["symbols":"ion\Symbol\Table\Shared":private]=>
179 array(0) {
180 }
181 }
182 DONE