Arbit - project tracking

PHP Depend

Browse source code

File: / tests/ PHP/ Depend/ Tokenizer/ InternalTest.php

Type
text/plain text/plain
Last Author
mapi
Version
1069
Line Rev. Author Source
1 18 mapi <?php
2 mapi /**
3 mapi * This file is part of PHP_Depend.
4 560 mapi *
5 18 mapi * PHP Version 5
6 mapi *
7 1030 mapi * Copyright (c) 2008-2010, Manuel Pichler <mapi@pdepend.org>.
8 18 mapi * All rights reserved.
9 mapi *
10 mapi * Redistribution and use in source and binary forms, with or without
11 mapi * modification, are permitted provided that the following conditions
12 mapi * are met:
13 mapi *
14 mapi * * Redistributions of source code must retain the above copyright
15 mapi * notice, this list of conditions and the following disclaimer.
16 mapi *
17 mapi * * Redistributions in binary form must reproduce the above copyright
18 mapi * notice, this list of conditions and the following disclaimer in
19 mapi * the documentation and/or other materials provided with the
20 mapi * distribution.
21 mapi *
22 mapi * * Neither the name of Manuel Pichler nor the names of his
23 mapi * contributors may be used to endorse or promote products derived
24 mapi * from this software without specific prior written permission.
25 mapi *
26 mapi * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
27 mapi * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
28 mapi * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
29 mapi * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
30 mapi * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
31 mapi * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
32 mapi * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
33 mapi * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
34 mapi * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
35 mapi * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
36 mapi * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
37 mapi * POSSIBILITY OF SUCH DAMAGE.
38 mapi *
39 941 mapi * @category QualityAssurance
40 mapi * @package PHP_Depend
41 mapi * @subpackage Tokenizer
42 mapi * @author Manuel Pichler <mapi@pdepend.org>
43 1030 mapi * @copyright 2008-2010 Manuel Pichler. All rights reserved.
44 941 mapi * @license http://www.opensource.org/licenses/bsd-license.php BSD License
45 mapi * @version SVN: $Id: InternalTest.php 1069 2010-02-18 15:27:17Z mapi $
46 mapi * @link http://pdepend.org/
47 18 mapi */
48 mapi
49 941 mapi require_once dirname(__FILE__) . '/../AbstractTest.php';
50 18 mapi
51 941 mapi require_once 'PHP/Depend/Token.php';
52 560 mapi require_once 'PHP/Depend/Tokenizer/Internal.php';
53 18 mapi
54 mapi /**
55 941 mapi * Test case for the {@link PHP_Depend_Tokenizer_Internal} class.
56 18 mapi *
57 941 mapi * @category QualityAssurance
58 mapi * @package PHP_Depend
59 mapi * @subpackage Tokenizer
60 mapi * @author Manuel Pichler <mapi@pdepend.org>
61 1030 mapi * @copyright 2008-2010 Manuel Pichler. All rights reserved.
62 941 mapi * @license http://www.opensource.org/licenses/bsd-license.php BSD License
63 mapi * @version Release: @package_version@
64 mapi * @link http://pdepend.org/
65 18 mapi */
66 941 mapi class PHP_Depend_Tokenizer_InternalTest extends PHP_Depend_AbstractTest
67 18 mapi {
68 19 mapi /**
69 mapi * Tests the tokenizer with a source file that contains only classes.
70 mapi *
71 mapi * @return void
72 1036 mapi * @covers PHP_Depend_Tokenizer_Internal
73 mapi * @group pdepend
74 mapi * @group pdepend::tokenizer
75 mapi * @group unittest
76 19 mapi */
77 560 mapi public function testInternalWithClasses()
78 18 mapi {
79 941 mapi $sourceFile = realpath(dirname(__FILE__) . '/../_code/classes.php');
80 606 mapi $tokenizer = new PHP_Depend_Tokenizer_Internal();
81 mapi $tokenizer->setSourceFile($sourceFile);
82 560 mapi
83 1036 mapi $expected = array(
84 558 mapi PHP_Depend_TokenizerI::T_OPEN_TAG,
85 mapi PHP_Depend_TokenizerI::T_DOC_COMMENT,
86 mapi PHP_Depend_TokenizerI::T_ABSTRACT,
87 mapi PHP_Depend_TokenizerI::T_CLASS,
88 mapi PHP_Depend_TokenizerI::T_STRING,
89 mapi PHP_Depend_TokenizerI::T_CURLY_BRACE_OPEN,
90 mapi PHP_Depend_TokenizerI::T_CURLY_BRACE_CLOSE,
91 mapi PHP_Depend_TokenizerI::T_CLASS,
92 mapi PHP_Depend_TokenizerI::T_STRING,
93 mapi PHP_Depend_TokenizerI::T_EXTENDS,
94 mapi PHP_Depend_TokenizerI::T_STRING,
95 mapi PHP_Depend_TokenizerI::T_CURLY_BRACE_OPEN,
96 mapi PHP_Depend_TokenizerI::T_PUBLIC,
97 mapi PHP_Depend_TokenizerI::T_FUNCTION,
98 mapi PHP_Depend_TokenizerI::T_STRING,
99 mapi PHP_Depend_TokenizerI::T_PARENTHESIS_OPEN,
100 mapi PHP_Depend_TokenizerI::T_PARENTHESIS_CLOSE,
101 mapi PHP_Depend_TokenizerI::T_CURLY_BRACE_OPEN,
102 mapi PHP_Depend_TokenizerI::T_STRING,
103 mapi PHP_Depend_TokenizerI::T_DOUBLE_COLON,
104 mapi PHP_Depend_TokenizerI::T_STRING,
105 mapi PHP_Depend_TokenizerI::T_PARENTHESIS_OPEN,
106 mapi PHP_Depend_TokenizerI::T_PARENTHESIS_CLOSE,
107 mapi PHP_Depend_TokenizerI::T_SEMICOLON,
108 mapi PHP_Depend_TokenizerI::T_VARIABLE,
109 mapi PHP_Depend_TokenizerI::T_EQUAL,
110 mapi PHP_Depend_TokenizerI::T_CONSTANT_ENCAPSED_STRING,
111 mapi PHP_Depend_TokenizerI::T_SEMICOLON,
112 mapi PHP_Depend_TokenizerI::T_VARIABLE,
113 mapi PHP_Depend_TokenizerI::T_EQUAL,
114 mapi PHP_Depend_TokenizerI::T_TRUE,
115 mapi PHP_Depend_TokenizerI::T_SEMICOLON,
116 mapi PHP_Depend_TokenizerI::T_CURLY_BRACE_CLOSE,
117 mapi PHP_Depend_TokenizerI::T_CURLY_BRACE_CLOSE
118 18 mapi );
119 560 mapi
120 1036 mapi $actual = array();
121 mapi while (is_object($token = $tokenizer->next())) {
122 mapi $actual[] = $token->type;
123 18 mapi }
124 560 mapi
125 1036 mapi $this->assertEquals($expected, $actual);
126 18 mapi }
127 560 mapi
128 19 mapi /**
129 mapi * Tests the tokenizer with a source file that contains mixed content of
130 mapi * classes and functions.
131 mapi *
132 mapi * @return void
133 1036 mapi * @covers PHP_Depend_Tokenizer_Internal
134 mapi * @group pdepend
135 mapi * @group pdepend::tokenizer
136 mapi * @group unittest
137 560 mapi */
138 mapi public function testInternalWithMixedContent()
139 18 mapi {
140 941 mapi $sourceFile = realpath(dirname(__FILE__) . '/../_code/func_class.php');
141 606 mapi $tokenizer = new PHP_Depend_Tokenizer_Internal();
142 mapi $tokenizer->setSourceFile($sourceFile);
143 560 mapi
144 1036 mapi $expected = array(
145 558 mapi array(PHP_Depend_TokenizerI::T_OPEN_TAG, 1),
146 mapi array(PHP_Depend_TokenizerI::T_COMMENT, 2),
147 mapi array(PHP_Depend_TokenizerI::T_FUNCTION, 5),
148 mapi array(PHP_Depend_TokenizerI::T_STRING, 5),
149 mapi array(PHP_Depend_TokenizerI::T_PARENTHESIS_OPEN, 5),
150 mapi array(PHP_Depend_TokenizerI::T_VARIABLE, 5),
151 mapi array(PHP_Depend_TokenizerI::T_COMMA, 5),
152 mapi array(PHP_Depend_TokenizerI::T_VARIABLE, 5),
153 mapi array(PHP_Depend_TokenizerI::T_PARENTHESIS_CLOSE, 5),
154 mapi array(PHP_Depend_TokenizerI::T_CURLY_BRACE_OPEN, 5),
155 mapi array(PHP_Depend_TokenizerI::T_NEW, 6),
156 mapi array(PHP_Depend_TokenizerI::T_STRING, 6),
157 mapi array(PHP_Depend_TokenizerI::T_PARENTHESIS_OPEN, 6),
158 mapi array(PHP_Depend_TokenizerI::T_VARIABLE, 6),
159 mapi array(PHP_Depend_TokenizerI::T_COMMA, 6),
160 mapi array(PHP_Depend_TokenizerI::T_VARIABLE, 6),
161 mapi array(PHP_Depend_TokenizerI::T_PARENTHESIS_CLOSE, 6),
162 mapi array(PHP_Depend_TokenizerI::T_SEMICOLON, 6),
163 mapi array(PHP_Depend_TokenizerI::T_CURLY_BRACE_CLOSE, 7),
164 mapi array(PHP_Depend_TokenizerI::T_DOC_COMMENT, 10),
165 mapi array(PHP_Depend_TokenizerI::T_CLASS, 13),
166 mapi array(PHP_Depend_TokenizerI::T_STRING, 13),
167 mapi array(PHP_Depend_TokenizerI::T_CURLY_BRACE_OPEN, 13),
168 mapi array(PHP_Depend_TokenizerI::T_COMMENT, 14),
169 mapi array(PHP_Depend_TokenizerI::T_CURLY_BRACE_CLOSE, 15),
170 mapi array(PHP_Depend_TokenizerI::T_CLOSE_TAG, 16)
171 18 mapi );
172 560 mapi
173 1036 mapi $actual = array();
174 mapi while (is_object($token = $tokenizer->next())) {
175 mapi $actual[] = array($token->type, $token->startLine);
176 18 mapi }
177 1036 mapi
178 mapi $this->assertEquals($expected, $actual);
179 18 mapi }
180 560 mapi
181 19 mapi /**
182 157 mapi * Tests that the tokenizer returns <b>T_BOF</b> if there is no previous
183 mapi * token.
184 mapi *
185 mapi * @return void
186 1036 mapi * @covers PHP_Depend_Tokenizer_Internal
187 mapi * @group pdepend
188 mapi * @group pdepend::tokenizer
189 mapi * @group unittest
190 157 mapi */
191 560 mapi public function testInternalReturnsBOFTokenForPrevCall()
192 157 mapi {
193 941 mapi $sourceFile = realpath(dirname(__FILE__) . '/../_code/func_class.php');
194 606 mapi $tokenizer = new PHP_Depend_Tokenizer_Internal();
195 mapi $tokenizer->setSourceFile($sourceFile);
196 560 mapi
197 558 mapi $this->assertEquals(PHP_Depend_TokenizerI::T_BOF, $tokenizer->prev());
198 157 mapi }
199 560 mapi
200 157 mapi /**
201 19 mapi * Tests the tokenizer with a combination of procedural code and functions.
202 mapi *
203 mapi * @return void
204 1036 mapi * @covers PHP_Depend_Tokenizer_Internal
205 mapi * @group pdepend
206 mapi * @group pdepend::tokenizer
207 mapi * @group unittest
208 19 mapi */
209 560 mapi public function testInternalWithProceduralCodeAndFunction()
210 19 mapi {
211 941 mapi $sourceFile = realpath(dirname(__FILE__) . '/../_code/func_code.php');
212 606 mapi $tokenizer = new PHP_Depend_Tokenizer_Internal();
213 mapi $tokenizer->setSourceFile($sourceFile);
214 560 mapi
215 1036 mapi $expected = array(
216 558 mapi PHP_Depend_TokenizerI::T_OPEN_TAG,
217 mapi PHP_Depend_TokenizerI::T_FUNCTION,
218 mapi PHP_Depend_TokenizerI::T_STRING,
219 mapi PHP_Depend_TokenizerI::T_PARENTHESIS_OPEN,
220 mapi PHP_Depend_TokenizerI::T_VARIABLE,
221 mapi PHP_Depend_TokenizerI::T_PARENTHESIS_CLOSE,
222 mapi PHP_Depend_TokenizerI::T_CURLY_BRACE_OPEN,
223 mapi PHP_Depend_TokenizerI::T_VARIABLE,
224 mapi PHP_Depend_TokenizerI::T_EQUAL,
225 mapi PHP_Depend_TokenizerI::T_NEW,
226 mapi PHP_Depend_TokenizerI::T_VARIABLE,
227 mapi PHP_Depend_TokenizerI::T_PARENTHESIS_OPEN,
228 mapi PHP_Depend_TokenizerI::T_PARENTHESIS_CLOSE,
229 mapi PHP_Depend_TokenizerI::T_SEMICOLON,
230 mapi PHP_Depend_TokenizerI::T_CURLY_BRACE_CLOSE,
231 mapi PHP_Depend_TokenizerI::T_VARIABLE,
232 mapi PHP_Depend_TokenizerI::T_EQUAL,
233 mapi PHP_Depend_TokenizerI::T_STRING,
234 mapi PHP_Depend_TokenizerI::T_PARENTHESIS_OPEN,
235 mapi PHP_Depend_TokenizerI::T_CONSTANT_ENCAPSED_STRING,
236 mapi PHP_Depend_TokenizerI::T_PARENTHESIS_CLOSE,
237 mapi PHP_Depend_TokenizerI::T_SEMICOLON,
238 mapi PHP_Depend_TokenizerI::T_STRING,
239 mapi PHP_Depend_TokenizerI::T_PARENTHESIS_OPEN,
240 mapi PHP_Depend_TokenizerI::T_ARRAY,
241 mapi PHP_Depend_TokenizerI::T_PARENTHESIS_OPEN,
242 mapi PHP_Depend_TokenizerI::T_VARIABLE,
243 mapi PHP_Depend_TokenizerI::T_COMMA,
244 mapi PHP_Depend_TokenizerI::T_CONSTANT_ENCAPSED_STRING,
245 mapi PHP_Depend_TokenizerI::T_PARENTHESIS_CLOSE,
246 mapi PHP_Depend_TokenizerI::T_PARENTHESIS_CLOSE,
247 mapi PHP_Depend_TokenizerI::T_SEMICOLON,
248 mapi PHP_Depend_TokenizerI::T_CLOSE_TAG
249 19 mapi );
250 560 mapi
251 1036 mapi $actual = array();
252 mapi while (is_object($token = $tokenizer->next())) {
253 mapi $actual[] = $token->type;
254 19 mapi }
255 560 mapi
256 1036 mapi $this->assertEquals($expected, $actual);
257 19 mapi }
258 560 mapi
259 76 mapi /**
260 mapi * Test case for undetected static method call added.
261 mapi *
262 mapi * @return void
263 1036 mapi * @covers PHP_Depend_Tokenizer_Internal
264 mapi * @group pdepend
265 mapi * @group pdepend::tokenizer
266 mapi * @group unittest
267 76 mapi */
268 560 mapi public function testInternalStaticCallBug01()
269 76 mapi {
270 941 mapi $sourceFile = dirname(__FILE__) . '/../_code/bugs/001.php';
271 606 mapi $tokenizer = new PHP_Depend_Tokenizer_Internal();
272 mapi $tokenizer->setSourceFile($sourceFile);
273 560 mapi
274 1036 mapi $expected = array(
275 558 mapi PHP_Depend_TokenizerI::T_OPEN_TAG,
276 mapi PHP_Depend_TokenizerI::T_DOC_COMMENT,
277 mapi PHP_Depend_TokenizerI::T_CLASS,
278 mapi PHP_Depend_TokenizerI::T_STRING,
279 mapi PHP_Depend_TokenizerI::T_CURLY_BRACE_OPEN,
280 mapi PHP_Depend_TokenizerI::T_PUBLIC,
281 mapi PHP_Depend_TokenizerI::T_FUNCTION,
282 mapi PHP_Depend_TokenizerI::T_STRING,
283 mapi PHP_Depend_TokenizerI::T_PARENTHESIS_OPEN,
284 mapi PHP_Depend_TokenizerI::T_PARENTHESIS_CLOSE,
285 mapi PHP_Depend_TokenizerI::T_CURLY_BRACE_OPEN,
286 mapi PHP_Depend_TokenizerI::T_STRING,
287 mapi PHP_Depend_TokenizerI::T_DOUBLE_COLON,
288 mapi PHP_Depend_TokenizerI::T_STRING,
289 mapi PHP_Depend_TokenizerI::T_PARENTHESIS_OPEN,
290 mapi PHP_Depend_TokenizerI::T_PARENTHESIS_CLOSE,
291 mapi PHP_Depend_TokenizerI::T_SEMICOLON,
292 mapi PHP_Depend_TokenizerI::T_CURLY_BRACE_CLOSE,
293 560 mapi PHP_Depend_TokenizerI::T_CURLY_BRACE_CLOSE,
294 76 mapi );
295 560 mapi
296 1036 mapi $actual = array();
297 mapi while (is_object($token = $tokenizer->next())) {
298 mapi $actual[] = $token->type;
299 76 mapi }
300 560 mapi
301 1036 mapi $this->assertEquals($expected, $actual);
302 76 mapi }
303 560 mapi
304 108 mapi /**
305 mapi * Tests that the tokenizer handles the following syntax correct.
306 560 mapi *
307 108 mapi * <code>
308 mapi * class Foo {
309 mapi * public function formatBug09($x) {
310 mapi * self::${$x};
311 mapi * }
312 mapi * }
313 mapi * </code>
314 560 mapi *
315 108 mapi * http://bugs.xplib.de/index.php?do=details&task_id=9&project=3
316 560 mapi *
317 108 mapi * @return void
318 1036 mapi * @covers PHP_Depend_Tokenizer_Internal
319 mapi * @group pdepend
320 mapi * @group pdepend::tokenizer
321 mapi * @group unittest
322 108 mapi */
323 560 mapi public function testInternalDollarSyntaxBug09()
324 108 mapi {
325 941 mapi $sourceFile = dirname(__FILE__) . '/../_code/bugs/005.php';
326 606 mapi $tokenizer = new PHP_Depend_Tokenizer_Internal();
327 mapi $tokenizer->setSourceFile($sourceFile);
328 560 mapi
329 1036 mapi $expected = array(
330 558 mapi PHP_Depend_TokenizerI::T_OPEN_TAG,
331 mapi PHP_Depend_TokenizerI::T_DOC_COMMENT,
332 mapi PHP_Depend_TokenizerI::T_CLASS,
333 mapi PHP_Depend_TokenizerI::T_STRING,
334 mapi PHP_Depend_TokenizerI::T_CURLY_BRACE_OPEN,
335 mapi PHP_Depend_TokenizerI::T_PUBLIC,
336 mapi PHP_Depend_TokenizerI::T_FUNCTION,
337 mapi PHP_Depend_TokenizerI::T_STRING,
338 mapi PHP_Depend_TokenizerI::T_PARENTHESIS_OPEN,
339 mapi PHP_Depend_TokenizerI::T_VARIABLE,
340 mapi PHP_Depend_TokenizerI::T_PARENTHESIS_CLOSE,
341 mapi PHP_Depend_TokenizerI::T_CURLY_BRACE_OPEN,
342 mapi PHP_Depend_TokenizerI::T_SELF, // SELF
343 mapi PHP_Depend_TokenizerI::T_DOUBLE_COLON,
344 mapi PHP_Depend_TokenizerI::T_DOLLAR,
345 mapi PHP_Depend_TokenizerI::T_CURLY_BRACE_OPEN,
346 mapi PHP_Depend_TokenizerI::T_VARIABLE,
347 mapi PHP_Depend_TokenizerI::T_CURLY_BRACE_CLOSE,
348 mapi PHP_Depend_TokenizerI::T_SEMICOLON,
349 mapi PHP_Depend_TokenizerI::T_CURLY_BRACE_CLOSE,
350 560 mapi PHP_Depend_TokenizerI::T_CURLY_BRACE_CLOSE,
351 108 mapi );
352 560 mapi
353 1036 mapi $actual = array();
354 mapi while (is_object($token = $tokenizer->next())) {
355 mapi $actual[] = $token->type;
356 108 mapi }
357 560 mapi
358 1036 mapi $this->assertEquals($expected, $actual);
359 108 mapi }
360 560 mapi
361 285 mapi /**
362 mapi * Test case for the inline html bug.
363 mapi *
364 mapi * @return void
365 1036 mapi * @covers PHP_Depend_Tokenizer_Internal
366 mapi * @group pdepend
367 mapi * @group pdepend::tokenizer
368 mapi * @group unittest
369 285 mapi */
370 mapi public function testTokenizerWithInlineHtmlBug24()
371 mapi {
372 941 mapi $sourceFile = dirname(__FILE__) . '/../_code/bugs/024.php';
373 606 mapi $tokenizer = new PHP_Depend_Tokenizer_Internal();
374 mapi $tokenizer->setSourceFile($sourceFile);
375 560 mapi
376 1036 mapi $expected = array(
377 558 mapi array(PHP_Depend_TokenizerI::T_OPEN_TAG, 1),
378 mapi array(PHP_Depend_TokenizerI::T_CLASS, 2),
379 mapi array(PHP_Depend_TokenizerI::T_STRING, 2),
380 mapi array(PHP_Depend_TokenizerI::T_CURLY_BRACE_OPEN, 3),
381 mapi array(PHP_Depend_TokenizerI::T_FUNCTION, 4),
382 mapi array(PHP_Depend_TokenizerI::T_STRING, 4),
383 mapi array(PHP_Depend_TokenizerI::T_PARENTHESIS_OPEN, 4),
384 mapi array(PHP_Depend_TokenizerI::T_PARENTHESIS_CLOSE, 4),
385 mapi array(PHP_Depend_TokenizerI::T_CURLY_BRACE_OPEN, 5),
386 mapi array(PHP_Depend_TokenizerI::T_CLOSE_TAG, 6),
387 641 mapi array(PHP_Depend_ConstantsI::T_NO_PHP, 7),
388 mapi array(PHP_Depend_TokenizerI::T_OPEN_TAG, 7),
389 558 mapi array(PHP_Depend_TokenizerI::T_ECHO, 7),
390 mapi array(PHP_Depend_TokenizerI::T_STRING, 7),
391 mapi array(PHP_Depend_TokenizerI::T_SEMICOLON, 7),
392 mapi array(PHP_Depend_TokenizerI::T_CLOSE_TAG, 7),
393 641 mapi array(PHP_Depend_ConstantsI::T_NO_PHP, 7),
394 558 mapi array(PHP_Depend_TokenizerI::T_OPEN_TAG, 8),
395 mapi array(PHP_Depend_TokenizerI::T_ECHO, 8),
396 mapi array(PHP_Depend_TokenizerI::T_STRING, 8),
397 mapi array(PHP_Depend_TokenizerI::T_PARENTHESIS_OPEN, 8),
398 mapi array(PHP_Depend_TokenizerI::T_VARIABLE, 8),
399 mapi array(PHP_Depend_TokenizerI::T_PARENTHESIS_CLOSE, 8),
400 mapi array(PHP_Depend_TokenizerI::T_SEMICOLON, 8),
401 mapi array(PHP_Depend_TokenizerI::T_CLOSE_TAG, 8),
402 641 mapi array(PHP_Depend_ConstantsI::T_NO_PHP, 8),
403 558 mapi array(PHP_Depend_TokenizerI::T_OPEN_TAG, 10),
404 mapi array(PHP_Depend_TokenizerI::T_CURLY_BRACE_CLOSE, 11),
405 mapi array(PHP_Depend_TokenizerI::T_FUNCTION, 13),
406 mapi array(PHP_Depend_TokenizerI::T_STRING, 13),
407 mapi array(PHP_Depend_TokenizerI::T_PARENTHESIS_OPEN, 13),
408 mapi array(PHP_Depend_TokenizerI::T_PARENTHESIS_CLOSE, 13),
409 mapi array(PHP_Depend_TokenizerI::T_CURLY_BRACE_OPEN, 14),
410 mapi array(PHP_Depend_TokenizerI::T_CURLY_BRACE_CLOSE, 16),
411 560 mapi array(PHP_Depend_TokenizerI::T_CURLY_BRACE_CLOSE, 17),
412 285 mapi );
413 560 mapi
414 1036 mapi $actual = array();
415 mapi while (is_object($token = $tokenizer->next())) {
416 mapi $actual[] = array($token->type, $token->startLine);
417 285 mapi }
418 560 mapi
419 1036 mapi $this->assertSame($expected, $actual);
420 285 mapi }
421 596 mapi
422 mapi /**
423 mapi * Tests that the tokenizer handles a backslash within a string correct,
424 mapi * this bug only occures for PHP versions < 5.3.0alpha3.
425 mapi *
426 mapi * @return void
427 1036 mapi * @covers PHP_Depend_Tokenizer_Internal
428 mapi * @group pdepend
429 mapi * @group pdepend::tokenizer
430 mapi * @group unittest
431 596 mapi */
432 mapi public function testTokenizerHandlesBackslashInStringCorrectBug84()
433 mapi {
434 mapi if (version_compare(phpversion(), '5.3.0alpha3') >= 0) {
435 mapi $this->markTestSkipped('Only relevant for php versions < 5.3.0alpha3');
436 mapi }
437 mapi
438 941 mapi $sourceFile = dirname(__FILE__) . '/../_code/bugs/054-namespace-separator.php';
439 606 mapi $tokenizer = new PHP_Depend_Tokenizer_Internal();
440 mapi $tokenizer->setSourceFile($sourceFile);
441 596 mapi
442 1036 mapi $expected = array(
443 596 mapi array(PHP_Depend_TokenizerI::T_OPEN_TAG, 1),
444 mapi array(PHP_Depend_TokenizerI::T_VARIABLE, 2),
445 mapi array(PHP_Depend_TokenizerI::T_EQUAL, 2),
446 mapi array(PHP_Depend_TokenizerI::T_CONSTANT_ENCAPSED_STRING, 2),
447 mapi array(PHP_Depend_TokenizerI::T_SEMICOLON, 2),
448 mapi array(PHP_Depend_TokenizerI::T_CLOSE_TAG, 3),
449 mapi );
450 mapi
451 1036 mapi $actual = array();
452 mapi while (is_object($token = $tokenizer->next())) {
453 mapi $actual[] = array($token->type, $token->startLine);
454 596 mapi }
455 mapi
456 1036 mapi $this->assertSame($expected, $actual);
457 596 mapi }
458 645 mapi
459 mapi /**
460 mapi * Tests the tokenizers column calculation implementation.
461 mapi *
462 mapi * @return void
463 1036 mapi * @covers PHP_Depend_Tokenizer_Internal
464 mapi * @group pdepend
465 mapi * @group pdepend::tokenizer
466 mapi * @group unittest
467 645 mapi */
468 mapi public function testTokenizerCalculatesCorrectColumnForInlinePhpIssue88()
469 mapi {
470 941 mapi $sourceFile = dirname(__FILE__) . '/../_code/issues/088-1.phtml';
471 645 mapi $tokenizer = new PHP_Depend_Tokenizer_Internal();
472 mapi $tokenizer->setSourceFile($sourceFile);
473 mapi
474 1036 mapi $expected = array(
475 645 mapi array(PHP_Depend_ConstantsI::T_NO_PHP, '<html>
476 mapi <head>
477 mapi <title>', 1, 3, 1, 15),
478 mapi array(PHP_Depend_ConstantsI::T_OPEN_TAG, '<?php', 3, 3, 16, 20),
479 mapi array(PHP_Depend_ConstantsI::T_ECHO, 'echo', 3, 3, 22, 25),
480 mapi array(PHP_Depend_ConstantsI::T_VARIABLE, '$foo', 3, 3, 27, 30),
481 mapi array(PHP_Depend_ConstantsI::T_SEMICOLON, ';', 3, 3, 31, 31),
482 mapi array(PHP_Depend_ConstantsI::T_CLOSE_TAG, '?>', 3, 3, 32, 33),
483 mapi array(PHP_Depend_ConstantsI::T_NO_PHP, '</title>
484 mapi </head>
485 mapi <body>', 3, 5, 34, 10),
486 mapi array(PHP_Depend_ConstantsI::T_OPEN_TAG, '<?php', 6, 6, 9, 13),
487 mapi array(PHP_Depend_ConstantsI::T_ECHO, 'echo', 6, 6, 15, 18),
488 mapi array(PHP_Depend_ConstantsI::T_VARIABLE, '$bar', 6, 6, 20, 23),
489 mapi array(PHP_Depend_ConstantsI::T_SEMICOLON, ';', 6, 6, 24, 24),
490 mapi array(PHP_Depend_ConstantsI::T_CLOSE_TAG, '?>', 6, 6, 26, 27),
491 mapi array(PHP_Depend_ConstantsI::T_NO_PHP, ' </body>
492 mapi </html>', 7, 8, 1, 7),
493 mapi );
494 mapi
495 1036 mapi $actual = array();
496 mapi while (is_object($token = $tokenizer->next())) {
497 mapi $actual[] = array(
498 mapi $token->type,
499 mapi $token->image,
500 mapi $token->startLine,
501 mapi $token->endLine,
502 mapi $token->startColumn,
503 mapi $token->endColumn
504 mapi );
505 645 mapi }
506 mapi
507 1036 mapi $this->assertSame($expected, $actual);
508 645 mapi }
509 mapi
510 mapi /**
511 mapi * Tests the tokenizers column calculation implementation.
512 mapi *
513 mapi * @return void
514 1036 mapi * @covers PHP_Depend_Tokenizer_Internal
515 mapi * @group pdepend
516 mapi * @group pdepend::tokenizer
517 mapi * @group unittest
518 645 mapi */
519 mapi public function testTokenizerCalculatesCorrectColumnForInlinePhpInTextIssue88()
520 mapi {
521 941 mapi $sourceFile = dirname(__FILE__) . '/../_code/issues/088-2.php';
522 645 mapi $tokenizer = new PHP_Depend_Tokenizer_Internal();
523 mapi $tokenizer->setSourceFile($sourceFile);
524 mapi
525 1036 mapi $expected = array(
526 645 mapi array(PHP_Depend_ConstantsI::T_NO_PHP, 'Hello', 1, 1, 1, 5),
527 mapi array(PHP_Depend_ConstantsI::T_OPEN_TAG, '<?php', 1, 1, 7, 11),
528 mapi array(PHP_Depend_ConstantsI::T_ECHO, 'echo', 1, 1, 13, 16),
529 mapi array(PHP_Depend_ConstantsI::T_VARIABLE, '$user', 1, 1, 18, 22),
530 mapi array(PHP_Depend_ConstantsI::T_SEMICOLON, ';', 1, 1, 23, 23),
531 mapi array(PHP_Depend_ConstantsI::T_CLOSE_TAG, '?>', 1, 1, 25, 26),
532 mapi array(PHP_Depend_ConstantsI::T_NO_PHP, '
533 mapi this is a simple letter to users of', 2, 3, 1, 35),
534 mapi array(PHP_Depend_ConstantsI::T_OPEN_TAG, '<?php', 3, 3, 37, 41),
535 mapi array(PHP_Depend_ConstantsI::T_PRINT, 'print', 3, 3, 43, 47),
536 mapi array(PHP_Depend_ConstantsI::T_VARIABLE, '$service', 3, 3, 49, 56),
537 mapi array(PHP_Depend_ConstantsI::T_SEMICOLON, ';', 3, 3, 57, 57),
538 mapi array(PHP_Depend_ConstantsI::T_CLOSE_TAG, '?>', 3, 3, 59, 60),
539 mapi array(PHP_Depend_ConstantsI::T_NO_PHP, '.
540 mapi
541 mapi Manuel', 3, 5, 61, 6),
542 mapi );
543 mapi
544 1036 mapi $actual = array();
545 mapi while (is_object($token = $tokenizer->next())) {
546 mapi $actual[] = array(
547 mapi $token->type,
548 mapi $token->image,
549 mapi $token->startLine,
550 mapi $token->endLine,
551 mapi $token->startColumn,
552 mapi $token->endColumn
553 mapi );
554 645 mapi }
555 mapi
556 1036 mapi $this->assertSame($expected, $actual);
557 645 mapi }
558 1037 mapi
559 mapi /**
560 mapi * testTokenizerSubstitutesDollarCurlyOpenWithTwoSeparateTokens
561 mapi *
562 mapi * @return void
563 mapi * @covers PHP_Depend_Tokenizer_Internal
564 mapi * @group pdepend
565 mapi * @group pdepend::tokenizer
566 mapi * @group unittest
567 mapi */
568 mapi public function testTokenizerSubstitutesDollarCurlyOpenWithTwoSeparateTokens()
569 mapi {
570 mapi $tokenizer = new PHP_Depend_Tokenizer_Internal();
571 mapi $tokenizer->setSourceFile(
572 mapi self::createCodeResourceURI('tokenizer/' . __FUNCTION__ . '.php')
573 mapi );
574 mapi
575 mapi $actual = array();
576 mapi while (is_object($token = $tokenizer->next())) {
577 mapi $actual[] = array($token->type, $token->startColumn, $token->endColumn);
578 mapi }
579 mapi
580 mapi $expected = array(
581 mapi array(PHP_Depend_ConstantsI::T_OPEN_TAG, 1, 5),
582 mapi array(PHP_Depend_ConstantsI::T_DOLLAR, 1, 1),
583 mapi array(PHP_Depend_ConstantsI::T_CURLY_BRACE_OPEN, 2, 2),
584 mapi array(PHP_Depend_ConstantsI::T_VARIABLE, 3, 6),
585 mapi array(PHP_Depend_ConstantsI::T_CONCAT, 8, 8),
586 mapi array(PHP_Depend_ConstantsI::T_VARIABLE, 10, 13),
587 mapi array(PHP_Depend_ConstantsI::T_CURLY_BRACE_CLOSE, 14, 14),
588 mapi array(PHP_Depend_ConstantsI::T_SEMICOLON, 15, 15),
589 mapi );
590 mapi
591 mapi $this->assertEquals($expected, $actual);
592 mapi }
593 1069 mapi
594 mapi /**
595 mapi * testReturnsExpectedTokensForStringWithEmbeddedBacktickExpression
596 mapi *
597 mapi * @return void
598 mapi * @covers PHP_Depend_Tokenizer_Internal
599 mapi * @group pdepend
600 mapi * @group pdepend::tokenizer
601 mapi * @group unittest
602 mapi */
603 mapi public function testReturnsExpectedTokensForStringWithEmbeddedBacktickExpression()
604 mapi {
605 mapi $tokenizer = new PHP_Depend_Tokenizer_Internal();
606 mapi $tokenizer->setSourceFile(
607 mapi self::createCodeResourceURI('tokenizer/' . __FUNCTION__ . '.php')
608 mapi );
609 mapi
610 mapi $actual = array();
611 mapi while (is_object($token = $tokenizer->next())) {
612 mapi $actual[] = array($token->type);
613 mapi }
614 mapi
615 mapi $expected = array(
616 mapi array(PHP_Depend_ConstantsI::T_OPEN_TAG),
617 mapi array(PHP_Depend_ConstantsI::T_DOUBLE_QUOTE),
618 mapi array(PHP_Depend_ConstantsI::T_ENCAPSED_AND_WHITESPACE),
619 mapi array(PHP_Depend_ConstantsI::T_VARIABLE),
620 mapi array(PHP_Depend_ConstantsI::T_BACKTICK),
621 mapi array(PHP_Depend_ConstantsI::T_DOUBLE_QUOTE),
622 mapi array(PHP_Depend_ConstantsI::T_SEMICOLON),
623 mapi );
624 mapi
625 mapi $this->assertEquals($expected, $actual);
626 mapi }
627 mapi
628 mapi /**
629 mapi * testReturnsExpectedTokensForBacktickExpressionWithEmbeddedString
630 mapi *
631 mapi * @return void
632 mapi * @covers PHP_Depend_Tokenizer_Internal
633 mapi * @group pdepend
634 mapi * @group pdepend::tokenizer
635 mapi * @group unittest
636 mapi */
637 mapi public function testReturnsExpectedTokensForBacktickExpressionWithEmbeddedString()
638 mapi {
639 mapi $tokenizer = new PHP_Depend_Tokenizer_Internal();
640 mapi $tokenizer->setSourceFile(
641 mapi self::createCodeResourceURI('tokenizer/' . __FUNCTION__ . '.php')
642 mapi );
643 mapi
644 mapi $actual = array();
645 mapi while (is_object($token = $tokenizer->next())) {
646 mapi $actual[] = array($token->type);
647 mapi }
648 mapi
649 mapi $expected = array(
650 mapi array(PHP_Depend_ConstantsI::T_OPEN_TAG),
651 mapi array(PHP_Depend_ConstantsI::T_BACKTICK),
652 mapi array(PHP_Depend_ConstantsI::T_ENCAPSED_AND_WHITESPACE),
653 mapi array(PHP_Depend_ConstantsI::T_VARIABLE),
654 mapi array(PHP_Depend_ConstantsI::T_DOUBLE_QUOTE),
655 mapi array(PHP_Depend_ConstantsI::T_BACKTICK),
656 mapi array(PHP_Depend_ConstantsI::T_SEMICOLON),
657 mapi );
658 mapi
659 mapi $this->assertEquals($expected, $actual);
660 mapi }
661 941 mapi }