seriously simplify the buffer writer by not accepting a ref to a buffer
[awesomized/ext-ion] / tests / Symbol / Table / Local.phpt
1 --TEST--
2 ion\Symbol\Table\Local
3 --EXTENSIONS--
4 ion
5 --FILE--
6 TEST
7 <?php
8
9 $w = new ion\Writer\Buffer\Writer(new ion\Writer\Options(outputBinary: true));
10
11 $w->writeSymbol("local1");
12 $w->writeSymbol("local1");
13 $w->writeSymbol("local2");
14 $w->writeSymbol("local2");
15
16 $w->finish();
17
18 foreach (str_split($w->getBuffer(), 8) as $line) {
19 printf("%-26s", chunk_split(bin2hex($line), 2, " "));
20 foreach (str_split($line) as $byte) {
21 echo $byte >= ' ' && $byte <= '~' ? $byte : ".";
22 }
23 echo "\n";
24 }
25 echo "\n";
26
27 $u = new ion\Unserializer\PHP(multiSequence: true);
28 var_dump($u->unserialize($w->getBuffer()));
29
30 ?>
31 DONE
32 --EXPECTF--
33 TEST
34 e0 01 00 ea ee 95 81 83 ........
35 de 91 87 be 8e 86 6c 6f ......lo
36 63 61 6c 31 86 6c 6f 63 cal1.loc
37 61 6c 32 71 0a 71 0a 71 al2q.q.q
38 0b 71 0b .q.
39
40 array(4) {
41 [0]=>
42 object(ion\Symbol)#%d (3) {
43 ["value"]=>
44 string(6) "local1"
45 ["sid"]=>
46 int(10)
47 ["importLocation"]=>
48 NULL
49 }
50 [1]=>
51 object(ion\Symbol)#%d (3) {
52 ["value"]=>
53 string(6) "local1"
54 ["sid"]=>
55 int(10)
56 ["importLocation"]=>
57 NULL
58 }
59 [2]=>
60 object(ion\Symbol)#%d (3) {
61 ["value"]=>
62 string(6) "local2"
63 ["sid"]=>
64 int(11)
65 ["importLocation"]=>
66 NULL
67 }
68 [3]=>
69 object(ion\Symbol)#%d (3) {
70 ["value"]=>
71 string(6) "local2"
72 ["sid"]=>
73 int(11)
74 ["importLocation"]=>
75 NULL
76 }
77 }
78 DONE