73 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php declare(strict_types = 1);
 | |
| namespace TheSeer\Tokenizer;
 | |
| 
 | |
| use PHPUnit\Framework\TestCase;
 | |
| 
 | |
| /**
 | |
|  * @covers \TheSeer\Tokenizer\TokenCollection
 | |
|  */
 | |
| class TokenCollectionTest extends TestCase {
 | |
| 
 | |
|     /** @var  TokenCollection */
 | |
|     private $collection;
 | |
| 
 | |
|     protected function setUp() {
 | |
|         $this->collection = new TokenCollection();
 | |
|     }
 | |
| 
 | |
|     public function testCollectionIsInitiallyEmpty() {
 | |
|         $this->assertCount(0, $this->collection);
 | |
|     }
 | |
| 
 | |
|     public function testTokenCanBeAddedToCollection() {
 | |
|         $token = $this->createMock(Token::class);
 | |
|         $this->collection->addToken($token);
 | |
| 
 | |
|         $this->assertCount(1, $this->collection);
 | |
|         $this->assertSame($token, $this->collection[0]);
 | |
|     }
 | |
| 
 | |
|     public function testCanIterateOverTokens() {
 | |
|         $token = $this->createMock(Token::class);
 | |
|         $this->collection->addToken($token);
 | |
|         $this->collection->addToken($token);
 | |
| 
 | |
|         foreach($this->collection as $position => $current) {
 | |
|             $this->assertInternalType('integer', $position);
 | |
|             $this->assertSame($token, $current);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public function testOffsetCanBeUnset() {
 | |
|         $token = $this->createMock(Token::class);
 | |
|         $this->collection->addToken($token);
 | |
| 
 | |
|         $this->assertCount(1, $this->collection);
 | |
|         unset($this->collection[0]);
 | |
|         $this->assertCount(0, $this->collection);
 | |
|     }
 | |
| 
 | |
|     public function testTokenCanBeSetViaOffsetPosition() {
 | |
|         $token = $this->createMock(Token::class);
 | |
|         $this->collection[0] = $token;
 | |
|         $this->assertCount(1, $this->collection);
 | |
|         $this->assertSame($token, $this->collection[0]);
 | |
|     }
 | |
| 
 | |
|     public function testTryingToUseNonIntegerOffsetThrowsException() {
 | |
|         $this->expectException(TokenCollectionException::class);
 | |
|         $this->collection['foo'] = $this->createMock(Token::class);
 | |
|     }
 | |
| 
 | |
|     public function testTryingToSetNonTokenAtOffsetThrowsException() {
 | |
|         $this->expectException(TokenCollectionException::class);
 | |
|         $this->collection[0] = 'abc';
 | |
|     }
 | |
| 
 | |
|     public function testTryingToGetTokenAtNonExistingOffsetThrowsException() {
 | |
|         $this->expectException(TokenCollectionException::class);
 | |
|         $x = $this->collection[3];
 | |
|     }
 | |
| 
 | |
| }
 | 
