Chris@14
|
1 <?php declare(strict_types = 1);
|
Chris@14
|
2 namespace TheSeer\Tokenizer;
|
Chris@14
|
3
|
Chris@14
|
4 use PHPUnit\Framework\TestCase;
|
Chris@14
|
5
|
Chris@14
|
6 /**
|
Chris@14
|
7 * @covers \TheSeer\Tokenizer\TokenCollection
|
Chris@14
|
8 */
|
Chris@14
|
9 class TokenCollectionTest extends TestCase {
|
Chris@14
|
10
|
Chris@14
|
11 /** @var TokenCollection */
|
Chris@14
|
12 private $collection;
|
Chris@14
|
13
|
Chris@14
|
14 protected function setUp() {
|
Chris@14
|
15 $this->collection = new TokenCollection();
|
Chris@14
|
16 }
|
Chris@14
|
17
|
Chris@14
|
18 public function testCollectionIsInitiallyEmpty() {
|
Chris@14
|
19 $this->assertCount(0, $this->collection);
|
Chris@14
|
20 }
|
Chris@14
|
21
|
Chris@14
|
22 public function testTokenCanBeAddedToCollection() {
|
Chris@14
|
23 $token = $this->createMock(Token::class);
|
Chris@14
|
24 $this->collection->addToken($token);
|
Chris@14
|
25
|
Chris@14
|
26 $this->assertCount(1, $this->collection);
|
Chris@14
|
27 $this->assertSame($token, $this->collection[0]);
|
Chris@14
|
28 }
|
Chris@14
|
29
|
Chris@14
|
30 public function testCanIterateOverTokens() {
|
Chris@14
|
31 $token = $this->createMock(Token::class);
|
Chris@14
|
32 $this->collection->addToken($token);
|
Chris@14
|
33 $this->collection->addToken($token);
|
Chris@14
|
34
|
Chris@14
|
35 foreach($this->collection as $position => $current) {
|
Chris@14
|
36 $this->assertInternalType('integer', $position);
|
Chris@14
|
37 $this->assertSame($token, $current);
|
Chris@14
|
38 }
|
Chris@14
|
39 }
|
Chris@14
|
40
|
Chris@14
|
41 public function testOffsetCanBeUnset() {
|
Chris@14
|
42 $token = $this->createMock(Token::class);
|
Chris@14
|
43 $this->collection->addToken($token);
|
Chris@14
|
44
|
Chris@14
|
45 $this->assertCount(1, $this->collection);
|
Chris@14
|
46 unset($this->collection[0]);
|
Chris@14
|
47 $this->assertCount(0, $this->collection);
|
Chris@14
|
48 }
|
Chris@14
|
49
|
Chris@14
|
50 public function testTokenCanBeSetViaOffsetPosition() {
|
Chris@14
|
51 $token = $this->createMock(Token::class);
|
Chris@14
|
52 $this->collection[0] = $token;
|
Chris@14
|
53 $this->assertCount(1, $this->collection);
|
Chris@14
|
54 $this->assertSame($token, $this->collection[0]);
|
Chris@14
|
55 }
|
Chris@14
|
56
|
Chris@14
|
57 public function testTryingToUseNonIntegerOffsetThrowsException() {
|
Chris@14
|
58 $this->expectException(TokenCollectionException::class);
|
Chris@14
|
59 $this->collection['foo'] = $this->createMock(Token::class);
|
Chris@14
|
60 }
|
Chris@14
|
61
|
Chris@14
|
62 public function testTryingToSetNonTokenAtOffsetThrowsException() {
|
Chris@14
|
63 $this->expectException(TokenCollectionException::class);
|
Chris@14
|
64 $this->collection[0] = 'abc';
|
Chris@14
|
65 }
|
Chris@14
|
66
|
Chris@14
|
67 public function testTryingToGetTokenAtNonExistingOffsetThrowsException() {
|
Chris@14
|
68 $this->expectException(TokenCollectionException::class);
|
Chris@14
|
69 $x = $this->collection[3];
|
Chris@14
|
70 }
|
Chris@14
|
71
|
Chris@14
|
72 }
|