Chris@2: collection = new TokenCollection(); Chris@2: } Chris@2: Chris@2: public function testCollectionIsInitiallyEmpty() { Chris@2: $this->assertCount(0, $this->collection); Chris@2: } Chris@2: Chris@2: public function testTokenCanBeAddedToCollection() { Chris@2: $token = $this->createMock(Token::class); Chris@2: $this->collection->addToken($token); Chris@2: Chris@2: $this->assertCount(1, $this->collection); Chris@2: $this->assertSame($token, $this->collection[0]); Chris@2: } Chris@2: Chris@2: public function testCanIterateOverTokens() { Chris@2: $token = $this->createMock(Token::class); Chris@2: $this->collection->addToken($token); Chris@2: $this->collection->addToken($token); Chris@2: Chris@2: foreach($this->collection as $position => $current) { Chris@2: $this->assertInternalType('integer', $position); Chris@2: $this->assertSame($token, $current); Chris@2: } Chris@2: } Chris@2: Chris@2: public function testOffsetCanBeUnset() { Chris@2: $token = $this->createMock(Token::class); Chris@2: $this->collection->addToken($token); Chris@2: Chris@2: $this->assertCount(1, $this->collection); Chris@2: unset($this->collection[0]); Chris@2: $this->assertCount(0, $this->collection); Chris@2: } Chris@2: Chris@2: public function testTokenCanBeSetViaOffsetPosition() { Chris@2: $token = $this->createMock(Token::class); Chris@2: $this->collection[0] = $token; Chris@2: $this->assertCount(1, $this->collection); Chris@2: $this->assertSame($token, $this->collection[0]); Chris@2: } Chris@2: Chris@2: public function testTryingToUseNonIntegerOffsetThrowsException() { Chris@2: $this->expectException(TokenCollectionException::class); Chris@2: $this->collection['foo'] = $this->createMock(Token::class); Chris@2: } Chris@2: Chris@2: public function testTryingToSetNonTokenAtOffsetThrowsException() { Chris@2: $this->expectException(TokenCollectionException::class); Chris@2: $this->collection[0] = 'abc'; Chris@2: } Chris@2: Chris@2: public function testTryingToGetTokenAtNonExistingOffsetThrowsException() { Chris@2: $this->expectException(TokenCollectionException::class); Chris@2: $x = $this->collection[3]; Chris@2: } Chris@2: Chris@2: }