| @@ 87-110 (lines=24) @@ | ||
| 84 | /** |
|
| 85 | * @test |
|
| 86 | */ |
|
| 87 | public function shouldTokenizeObject() |
|
| 88 | { |
|
| 89 | //given |
|
| 90 | $param = 'object $name {string $firstName int $age}'; |
|
| 91 | $tokenizer = new Tokenizer(); |
|
| 92 | ||
| 93 | //when |
|
| 94 | $tokens = $tokenizer->lex($param); |
|
| 95 | ||
| 96 | //then |
|
| 97 | Assert::thatArray($tokens) |
|
| 98 | ->extracting('getName()', 'getValue()') |
|
| 99 | ->containsExactly( |
|
| 100 | [Token::TYPE, 'object'], |
|
| 101 | [Token::NAME, '$name'], |
|
| 102 | [Token::OPEN_OBJECT, '{'], |
|
| 103 | [Token::TYPE, 'string'], |
|
| 104 | [Token::NAME, '$firstName'], |
|
| 105 | [Token::TYPE, 'int'], |
|
| 106 | [Token::NAME, '$age'], |
|
| 107 | [Token::CLOSE_OBJECT, '}'], |
|
| 108 | [Token::EOF, 'eof'] |
|
| 109 | ); |
|
| 110 | } |
|
| 111 | ||
| 112 | /** |
|
| 113 | * @test |
|
| @@ 115-139 (lines=25) @@ | ||
| 112 | /** |
|
| 113 | * @test |
|
| 114 | */ |
|
| 115 | public function shouldTokenizeObjectWithArray() |
|
| 116 | { |
|
| 117 | //given |
|
| 118 | $param = 'object[] $name {string $firstName int $age}'; |
|
| 119 | $tokenizer = new Tokenizer(); |
|
| 120 | ||
| 121 | //when |
|
| 122 | $tokens = $tokenizer->lex($param); |
|
| 123 | ||
| 124 | //then |
|
| 125 | Assert::thatArray($tokens) |
|
| 126 | ->extracting('getName()', 'getValue()') |
|
| 127 | ->containsExactly( |
|
| 128 | [Token::TYPE, 'object'], |
|
| 129 | [Token::ARRAYS, '[]'], |
|
| 130 | [Token::NAME, '$name'], |
|
| 131 | [Token::OPEN_OBJECT, '{'], |
|
| 132 | [Token::TYPE, 'string'], |
|
| 133 | [Token::NAME, '$firstName'], |
|
| 134 | [Token::TYPE, 'int'], |
|
| 135 | [Token::NAME, '$age'], |
|
| 136 | [Token::CLOSE_OBJECT, '}'], |
|
| 137 | [Token::EOF, 'eof'] |
|
| 138 | ); |
|
| 139 | } |
|
| 140 | ||
| 141 | /** |
|
| 142 | * @test |
|