1--TEST--
2Test token_get_all() function : usage variations - with exception keywords
3--FILE--
4<?php
5/* Prototype  : array token_get_all(string $source)
6 * Description: splits the given source into an array of PHP languange tokens
7 * Source code: ext/tokenizer/tokenizer.c
8*/
9
10/*
11 * Testing token_get_all() with different exception keywords
12 *   try - T_TRY(336),
13 *   catch - T_CATCH(337),
14 *   throw - T_THROW(338)
15*/
16
17echo "*** Testing token_get_all() : with exception keywords ***\n";
18
19$source = '<?php
20function inverse($x)
21{
22  if($x == 0) {
23    throw new Exception("Divison by zero");
24  else
25    return 1/$x;
26}
27try {
28  echo inverse(0);
29  echo inverse(5);
30} catch(Exception $e) {
31    echo "caught exception:";
32}
33?>';
34$tokens =  token_get_all($source);
35var_dump($tokens);
36
37echo "Done"
38?>
39--EXPECTF--
40*** Testing token_get_all() : with exception keywords ***
41array(81) {
42  [0]=>
43  array(3) {
44    [0]=>
45    int(368)
46    [1]=>
47    string(6) "<?php
48"
49    [2]=>
50    int(1)
51  }
52  [1]=>
53  array(3) {
54    [0]=>
55    int(334)
56    [1]=>
57    string(8) "function"
58    [2]=>
59    int(2)
60  }
61  [2]=>
62  array(3) {
63    [0]=>
64    int(371)
65    [1]=>
66    string(1) " "
67    [2]=>
68    int(2)
69  }
70  [3]=>
71  array(3) {
72    [0]=>
73    int(307)
74    [1]=>
75    string(7) "inverse"
76    [2]=>
77    int(2)
78  }
79  [4]=>
80  string(1) "("
81  [5]=>
82  array(3) {
83    [0]=>
84    int(309)
85    [1]=>
86    string(2) "$x"
87    [2]=>
88    int(2)
89  }
90  [6]=>
91  string(1) ")"
92  [7]=>
93  array(3) {
94    [0]=>
95    int(371)
96    [1]=>
97    string(1) "
98"
99    [2]=>
100    int(2)
101  }
102  [8]=>
103  string(1) "{"
104  [9]=>
105  array(3) {
106    [0]=>
107    int(371)
108    [1]=>
109    string(3) "
110  "
111    [2]=>
112    int(3)
113  }
114  [10]=>
115  array(3) {
116    [0]=>
117    int(301)
118    [1]=>
119    string(2) "if"
120    [2]=>
121    int(4)
122  }
123  [11]=>
124  string(1) "("
125  [12]=>
126  array(3) {
127    [0]=>
128    int(309)
129    [1]=>
130    string(2) "$x"
131    [2]=>
132    int(4)
133  }
134  [13]=>
135  array(3) {
136    [0]=>
137    int(371)
138    [1]=>
139    string(1) " "
140    [2]=>
141    int(4)
142  }
143  [14]=>
144  array(3) {
145    [0]=>
146    int(283)
147    [1]=>
148    string(2) "=="
149    [2]=>
150    int(4)
151  }
152  [15]=>
153  array(3) {
154    [0]=>
155    int(371)
156    [1]=>
157    string(1) " "
158    [2]=>
159    int(4)
160  }
161  [16]=>
162  array(3) {
163    [0]=>
164    int(305)
165    [1]=>
166    string(1) "0"
167    [2]=>
168    int(4)
169  }
170  [17]=>
171  string(1) ")"
172  [18]=>
173  array(3) {
174    [0]=>
175    int(371)
176    [1]=>
177    string(1) " "
178    [2]=>
179    int(4)
180  }
181  [19]=>
182  string(1) "{"
183  [20]=>
184  array(3) {
185    [0]=>
186    int(371)
187    [1]=>
188    string(5) "
189    "
190    [2]=>
191    int(4)
192  }
193  [21]=>
194  array(3) {
195    [0]=>
196    int(339)
197    [1]=>
198    string(5) "throw"
199    [2]=>
200    int(5)
201  }
202  [22]=>
203  array(3) {
204    [0]=>
205    int(371)
206    [1]=>
207    string(1) " "
208    [2]=>
209    int(5)
210  }
211  [23]=>
212  array(3) {
213    [0]=>
214    int(299)
215    [1]=>
216    string(3) "new"
217    [2]=>
218    int(5)
219  }
220  [24]=>
221  array(3) {
222    [0]=>
223    int(371)
224    [1]=>
225    string(1) " "
226    [2]=>
227    int(5)
228  }
229  [25]=>
230  array(3) {
231    [0]=>
232    int(307)
233    [1]=>
234    string(9) "Exception"
235    [2]=>
236    int(5)
237  }
238  [26]=>
239  string(1) "("
240  [27]=>
241  array(3) {
242    [0]=>
243    int(315)
244    [1]=>
245    string(17) ""Divison by zero""
246    [2]=>
247    int(5)
248  }
249  [28]=>
250  string(1) ")"
251  [29]=>
252  string(1) ";"
253  [30]=>
254  array(3) {
255    [0]=>
256    int(371)
257    [1]=>
258    string(3) "
259  "
260    [2]=>
261    int(5)
262  }
263  [31]=>
264  array(3) {
265    [0]=>
266    int(303)
267    [1]=>
268    string(4) "else"
269    [2]=>
270    int(6)
271  }
272  [32]=>
273  array(3) {
274    [0]=>
275    int(371)
276    [1]=>
277    string(5) "
278    "
279    [2]=>
280    int(6)
281  }
282  [33]=>
283  array(3) {
284    [0]=>
285    int(336)
286    [1]=>
287    string(6) "return"
288    [2]=>
289    int(7)
290  }
291  [34]=>
292  array(3) {
293    [0]=>
294    int(371)
295    [1]=>
296    string(1) " "
297    [2]=>
298    int(7)
299  }
300  [35]=>
301  array(3) {
302    [0]=>
303    int(305)
304    [1]=>
305    string(1) "1"
306    [2]=>
307    int(7)
308  }
309  [36]=>
310  string(1) "/"
311  [37]=>
312  array(3) {
313    [0]=>
314    int(309)
315    [1]=>
316    string(2) "$x"
317    [2]=>
318    int(7)
319  }
320  [38]=>
321  string(1) ";"
322  [39]=>
323  array(3) {
324    [0]=>
325    int(371)
326    [1]=>
327    string(1) "
328"
329    [2]=>
330    int(7)
331  }
332  [40]=>
333  string(1) "}"
334  [41]=>
335  array(3) {
336    [0]=>
337    int(371)
338    [1]=>
339    string(1) "
340"
341    [2]=>
342    int(8)
343  }
344  [42]=>
345  array(3) {
346    [0]=>
347    int(337)
348    [1]=>
349    string(3) "try"
350    [2]=>
351    int(9)
352  }
353  [43]=>
354  array(3) {
355    [0]=>
356    int(371)
357    [1]=>
358    string(1) " "
359    [2]=>
360    int(9)
361  }
362  [44]=>
363  string(1) "{"
364  [45]=>
365  array(3) {
366    [0]=>
367    int(371)
368    [1]=>
369    string(3) "
370  "
371    [2]=>
372    int(9)
373  }
374  [46]=>
375  array(3) {
376    [0]=>
377    int(316)
378    [1]=>
379    string(4) "echo"
380    [2]=>
381    int(10)
382  }
383  [47]=>
384  array(3) {
385    [0]=>
386    int(371)
387    [1]=>
388    string(1) " "
389    [2]=>
390    int(10)
391  }
392  [48]=>
393  array(3) {
394    [0]=>
395    int(307)
396    [1]=>
397    string(7) "inverse"
398    [2]=>
399    int(10)
400  }
401  [49]=>
402  string(1) "("
403  [50]=>
404  array(3) {
405    [0]=>
406    int(305)
407    [1]=>
408    string(1) "0"
409    [2]=>
410    int(10)
411  }
412  [51]=>
413  string(1) ")"
414  [52]=>
415  string(1) ";"
416  [53]=>
417  array(3) {
418    [0]=>
419    int(371)
420    [1]=>
421    string(3) "
422  "
423    [2]=>
424    int(10)
425  }
426  [54]=>
427  array(3) {
428    [0]=>
429    int(316)
430    [1]=>
431    string(4) "echo"
432    [2]=>
433    int(11)
434  }
435  [55]=>
436  array(3) {
437    [0]=>
438    int(371)
439    [1]=>
440    string(1) " "
441    [2]=>
442    int(11)
443  }
444  [56]=>
445  array(3) {
446    [0]=>
447    int(307)
448    [1]=>
449    string(7) "inverse"
450    [2]=>
451    int(11)
452  }
453  [57]=>
454  string(1) "("
455  [58]=>
456  array(3) {
457    [0]=>
458    int(305)
459    [1]=>
460    string(1) "5"
461    [2]=>
462    int(11)
463  }
464  [59]=>
465  string(1) ")"
466  [60]=>
467  string(1) ";"
468  [61]=>
469  array(3) {
470    [0]=>
471    int(371)
472    [1]=>
473    string(1) "
474"
475    [2]=>
476    int(11)
477  }
478  [62]=>
479  string(1) "}"
480  [63]=>
481  array(3) {
482    [0]=>
483    int(371)
484    [1]=>
485    string(1) " "
486    [2]=>
487    int(12)
488  }
489  [64]=>
490  array(3) {
491    [0]=>
492    int(338)
493    [1]=>
494    string(5) "catch"
495    [2]=>
496    int(12)
497  }
498  [65]=>
499  string(1) "("
500  [66]=>
501  array(3) {
502    [0]=>
503    int(307)
504    [1]=>
505    string(9) "Exception"
506    [2]=>
507    int(12)
508  }
509  [67]=>
510  array(3) {
511    [0]=>
512    int(371)
513    [1]=>
514    string(1) " "
515    [2]=>
516    int(12)
517  }
518  [68]=>
519  array(3) {
520    [0]=>
521    int(309)
522    [1]=>
523    string(2) "$e"
524    [2]=>
525    int(12)
526  }
527  [69]=>
528  string(1) ")"
529  [70]=>
530  array(3) {
531    [0]=>
532    int(371)
533    [1]=>
534    string(1) " "
535    [2]=>
536    int(12)
537  }
538  [71]=>
539  string(1) "{"
540  [72]=>
541  array(3) {
542    [0]=>
543    int(371)
544    [1]=>
545    string(5) "
546    "
547    [2]=>
548    int(12)
549  }
550  [73]=>
551  array(3) {
552    [0]=>
553    int(316)
554    [1]=>
555    string(4) "echo"
556    [2]=>
557    int(13)
558  }
559  [74]=>
560  array(3) {
561    [0]=>
562    int(371)
563    [1]=>
564    string(1) " "
565    [2]=>
566    int(13)
567  }
568  [75]=>
569  array(3) {
570    [0]=>
571    int(315)
572    [1]=>
573    string(19) ""caught exception:""
574    [2]=>
575    int(13)
576  }
577  [76]=>
578  string(1) ";"
579  [77]=>
580  array(3) {
581    [0]=>
582    int(371)
583    [1]=>
584    string(1) "
585"
586    [2]=>
587    int(13)
588  }
589  [78]=>
590  string(1) "}"
591  [79]=>
592  array(3) {
593    [0]=>
594    int(371)
595    [1]=>
596    string(1) "
597"
598    [2]=>
599    int(14)
600  }
601  [80]=>
602  array(3) {
603    [0]=>
604    int(370)
605    [1]=>
606    string(2) "?>"
607    [2]=>
608    int(15)
609  }
610}
611Done
612