ParserTest.php 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <?php
  2. namespace JmesPath\Tests;
  3. use JmesPath\Lexer;
  4. use JmesPath\Parser;
  5. use JmesPath\SyntaxErrorException;
  6. use PHPUnit\Framework\TestCase;
  7. /**
  8. * @covers JmesPath\Parser
  9. */
  10. class ParserTest extends TestCase
  11. {
  12. /**
  13. * @dataProvider invalidExpressionProvider
  14. */
  15. public function testHandlesInvalidExpressions(string $expr, string $msg): void
  16. {
  17. $p = new Parser(new Lexer());
  18. $this->expectException(SyntaxErrorException::class);
  19. $this->expectExceptionMessage($msg);
  20. $p->parse($expr);
  21. }
  22. public static function invalidExpressionProvider(): array
  23. {
  24. return [
  25. ['', 'Unexpected "eof" token'],
  26. ['.bar', 'Syntax error at character 0'],
  27. ['a,', 'Syntax error at character 1'],
  28. ['a.,', 'Syntax error at character 2'],
  29. ['=', 'Syntax error at character 0'],
  30. ['<', 'Syntax error at character 0'],
  31. ['>', 'Syntax error at character 0'],
  32. ['|', 'Syntax error at character 0']
  33. ];
  34. }
  35. }