| @@ 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 |
|