@@ 184-207 (lines=24) @@ | ||
181 | /** |
|
182 | * @test |
|
183 | */ |
|
184 | public function shouldTokenizeClassWrapper() |
|
185 | { |
|
186 | //given |
|
187 | $param = 'object $name { |
|
188 | className \Foo\Bar\Baz |
|
189 | }'; |
|
190 | $tokenizer = new Tokenizer(); |
|
191 | ||
192 | //when |
|
193 | $tokens = $tokenizer->lex($param); |
|
194 | ||
195 | //then |
|
196 | Assert::thatArray($tokens) |
|
197 | ->extracting('getName()', 'getValue()') |
|
198 | ->containsExactly( |
|
199 | [Token::TYPE, 'object'], |
|
200 | [Token::NAME, '$name'], |
|
201 | [Token::OPEN_OBJECT, '{'], |
|
202 | [Token::TYPE, 'className'], |
|
203 | [Token::CLASS_NAME, '\Foo\Bar\Baz'], |
|
204 | [Token::CLOSE_OBJECT, '}'], |
|
205 | [Token::EOF, 'eof'] |
|
206 | ); |
|
207 | } |
|
208 | ||
209 | /** |
|
210 | * @test |
|
@@ 212-233 (lines=22) @@ | ||
209 | /** |
|
210 | * @test |
|
211 | */ |
|
212 | public function shouldTokenizeClassWrapperOneLine() |
|
213 | { |
|
214 | //given |
|
215 | $param = 'object $name { className \Foo\Bar\Baz }'; |
|
216 | $tokenizer = new Tokenizer(); |
|
217 | ||
218 | //when |
|
219 | $tokens = $tokenizer->lex($param); |
|
220 | ||
221 | //then |
|
222 | Assert::thatArray($tokens) |
|
223 | ->extracting('getName()', 'getValue()') |
|
224 | ->containsExactly( |
|
225 | [Token::TYPE, 'object'], |
|
226 | [Token::NAME, '$name'], |
|
227 | [Token::OPEN_OBJECT, '{'], |
|
228 | [Token::TYPE, 'className'], |
|
229 | [Token::CLASS_NAME, '\Foo\Bar\Baz'], |
|
230 | [Token::CLOSE_OBJECT, '}'], |
|
231 | [Token::EOF, 'eof'] |
|
232 | ); |
|
233 | } |
|
234 | ||
235 | /** |
|
236 | * @test |
|
@@ 238-259 (lines=22) @@ | ||
235 | /** |
|
236 | * @test |
|
237 | */ |
|
238 | public function shouldTokenizeClassWrapperWithDuplicatedBackSlash() |
|
239 | { |
|
240 | //given |
|
241 | $param = 'object $name { className \\Foo\\Bar\\Baz }'; |
|
242 | $tokenizer = new Tokenizer(); |
|
243 | ||
244 | //when |
|
245 | $tokens = $tokenizer->lex($param); |
|
246 | ||
247 | //then |
|
248 | Assert::thatArray($tokens) |
|
249 | ->extracting('getName()', 'getValue()') |
|
250 | ->containsExactly( |
|
251 | [Token::TYPE, 'object'], |
|
252 | [Token::NAME, '$name'], |
|
253 | [Token::OPEN_OBJECT, '{'], |
|
254 | [Token::TYPE, 'className'], |
|
255 | [Token::CLASS_NAME, '\\Foo\\Bar\\Baz'], |
|
256 | [Token::CLOSE_OBJECT, '}'], |
|
257 | [Token::EOF, 'eof'] |
|
258 | ); |
|
259 | } |
|
260 | ||
261 | /** |
|
262 | * @test |
|
@@ 264-285 (lines=22) @@ | ||
261 | /** |
|
262 | * @test |
|
263 | */ |
|
264 | public function shouldTokenizeClassWrapperWithoutFirstBackSlash() |
|
265 | { |
|
266 | //given |
|
267 | $param = 'object $name { className Foo\Bar\Baz }'; |
|
268 | $tokenizer = new Tokenizer(); |
|
269 | ||
270 | //when |
|
271 | $tokens = $tokenizer->lex($param); |
|
272 | ||
273 | //then |
|
274 | Assert::thatArray($tokens) |
|
275 | ->extracting('getName()', 'getValue()') |
|
276 | ->containsExactly( |
|
277 | [Token::TYPE, 'object'], |
|
278 | [Token::NAME, '$name'], |
|
279 | [Token::OPEN_OBJECT, '{'], |
|
280 | [Token::TYPE, 'className'], |
|
281 | [Token::CLASS_NAME, 'Foo\Bar\Baz'], |
|
282 | [Token::CLOSE_OBJECT, '}'], |
|
283 | [Token::EOF, 'eof'] |
|
284 | ); |
|
285 | } |
|
286 | ||
287 | /** |
|
288 | * @test |