tests++
[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\Table\System());
11 var_dump(ion\Symbol\Table\PHP());
12 var_dump(ion\Symbol\Table\PHP()->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\Table\PHP());
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 DONE
49 --EXPECTF--
50 TEST
51 global
52 object(ion\Symbol\Table\Shared)#%d (3) {
53 ["name"]=>
54 string(4) "$ion"
55 ["version"]=>
56 int(1)
57 ["symbols":"ion\Symbol\Table\Shared":private]=>
58 array(0) {
59 }
60 }
61 object(ion\Symbol\Table\Shared)#%d (3) {
62 ["name"]=>
63 string(3) "PHP"
64 ["version"]=>
65 int(1)
66 ["symbols":"ion\Symbol\Table\Shared":private]=>
67 array(0) {
68 }
69 }
70 object(ion\Symbol)#%d (3) {
71 ["value"]=>
72 string(3) "PHP"
73 ["sid"]=>
74 int(1)
75 ["importLocation"]=>
76 object(ion\Symbol\ImportLocation)#%d (2) {
77 ["name"]=>
78 string(3) "PHP"
79 ["location"]=>
80 int(1)
81 }
82 }
83 shared
84 add 3 syms
85 int(1)
86 int(2)
87 int(3)
88 s3, sid3
89 object(ion\Symbol)#%d (3) {
90 ["value"]=>
91 string(4) "sym3"
92 ["sid"]=>
93 int(-1)
94 ["importLocation"]=>
95 NULL
96 }
97 int(3)
98 find sym3, sid3
99 object(ion\Symbol)#%d (3) {
100 ["value"]=>
101 string(4) "sym3"
102 ["sid"]=>
103 int(3)
104 ["importLocation"]=>
105 object(ion\Symbol\ImportLocation)#%d (2) {
106 ["name"]=>
107 string(6) "shared"
108 ["location"]=>
109 int(3)
110 }
111 }
112 object(ion\Symbol)#%d (3) {
113 ["value"]=>
114 string(4) "sym3"
115 ["sid"]=>
116 int(3)
117 ["importLocation"]=>
118 object(ion\Symbol\ImportLocation)#%d (2) {
119 ["name"]=>
120 string(6) "shared"
121 ["location"]=>
122 int(3)
123 }
124 }
125 local
126 import PHP
127 import shared
128 find sym1, local sym1
129 object(ion\Symbol)#%d (3) {
130 ["value"]=>
131 string(4) "sym1"
132 ["sid"]=>
133 int(1)
134 ["importLocation"]=>
135 object(ion\Symbol\ImportLocation)#%d (2) {
136 ["name"]=>
137 string(6) "shared"
138 ["location"]=>
139 int(1)
140 }
141 }
142 NULL
143 add, find, local sym4
144 int(23)
145 object(ion\Symbol)#%d (3) {
146 ["value"]=>
147 string(4) "sym4"
148 ["sid"]=>
149 int(23)
150 ["importLocation"]=>
151 NULL
152 }
153 object(ion\Symbol)#%d (3) {
154 ["value"]=>
155 string(4) "sym4"
156 ["sid"]=>
157 int(23)
158 ["importLocation"]=>
159 NULL
160 }
161 int(23)
162 DONE