TokenizerTest.php 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. <?php declare(strict_types = 1);
  2. namespace TheSeer\Tokenizer;
  3. use PHPUnit\Framework\TestCase;
  4. /**
  5. * @covers \TheSeer\Tokenizer\Tokenizer
  6. */
  7. class TokenizerTest extends TestCase {
  8. public function testValidSourceGetsParsed(): void {
  9. $this->assertParsedTokensMatchFixture('test.php');
  10. }
  11. public function testParsingEmptyStringReturnsEmptyCollection(): void {
  12. $this->assertCount(
  13. 0,
  14. (new Tokenizer())->parse('')
  15. );
  16. }
  17. /**
  18. * @ticket https://github.com/theseer/tokenizer/issues/13
  19. */
  20. public function testFileWithSingleEmptyLineGetsParsed(): void {
  21. $this->assertParsedTokensMatchFixture('source_with_single_empty_line.php');
  22. }
  23. private function assertParsedTokensMatchFixture(string $fixture): void {
  24. $expected = \unserialize(
  25. \file_get_contents(__DIR__ . '/_files/' . $fixture . '.tokens'),
  26. [TokenCollection::class, Token::class]
  27. );
  28. $actual = (new Tokenizer)->parse(\file_get_contents(__DIR__ . '/_files/' . $fixture));
  29. $this->assertEquals($expected, $actual);
  30. }
  31. }