update 1.0.8.0
Commits for version update
This commit is contained in:
88
vendor/mtdowling/jmespath.php/tests/LexerTest.php
vendored
Normal file
88
vendor/mtdowling/jmespath.php/tests/LexerTest.php
vendored
Normal file
@@ -0,0 +1,88 @@
|
||||
<?php
|
||||
namespace JmesPath\Tests;
|
||||
|
||||
use JmesPath\Lexer;
|
||||
use JmesPath\SyntaxErrorException;
|
||||
|
||||
/**
|
||||
* @covers JmesPath\Lexer
|
||||
*/
|
||||
class LexerTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
public function inputProvider()
|
||||
{
|
||||
return array(
|
||||
array('0', 'number'),
|
||||
array('1', 'number'),
|
||||
array('2', 'number'),
|
||||
array('3', 'number'),
|
||||
array('4', 'number'),
|
||||
array('5', 'number'),
|
||||
array('6', 'number'),
|
||||
array('7', 'number'),
|
||||
array('8', 'number'),
|
||||
array('9', 'number'),
|
||||
array('-1', 'number'),
|
||||
array('-1.5', 'number'),
|
||||
array('109.5', 'number'),
|
||||
array('.', 'dot'),
|
||||
array('{', 'lbrace'),
|
||||
array('}', 'rbrace'),
|
||||
array('[', 'lbracket'),
|
||||
array(']', 'rbracket'),
|
||||
array(':', 'colon'),
|
||||
array(',', 'comma'),
|
||||
array('||', 'or'),
|
||||
array('*', 'star'),
|
||||
array('foo', 'identifier'),
|
||||
array('"foo"', 'quoted_identifier'),
|
||||
array('`true`', 'literal'),
|
||||
array('`false`', 'literal'),
|
||||
array('`null`', 'literal'),
|
||||
array('`"true"`', 'literal')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider inputProvider
|
||||
*/
|
||||
public function testTokenizesInput($input, $type)
|
||||
{
|
||||
$l = new Lexer();
|
||||
$tokens = $l->tokenize($input);
|
||||
$this->assertEquals($tokens[0]['type'], $type);
|
||||
}
|
||||
|
||||
public function testTokenizesJsonLiterals()
|
||||
{
|
||||
$l = new Lexer();
|
||||
$tokens = $l->tokenize('`null`, `false`, `true`, `"abc"`, `"ab\\"c"`,'
|
||||
. '`0`, `0.45`, `-0.5`');
|
||||
$this->assertNull($tokens[0]['value']);
|
||||
$this->assertFalse($tokens[2]['value']);
|
||||
$this->assertTrue($tokens[4]['value']);
|
||||
$this->assertEquals('abc', $tokens[6]['value']);
|
||||
$this->assertEquals('ab"c', $tokens[8]['value']);
|
||||
$this->assertSame(0, $tokens[10]['value']);
|
||||
$this->assertSame(0.45, $tokens[12]['value']);
|
||||
$this->assertSame(-0.5, $tokens[14]['value']);
|
||||
}
|
||||
|
||||
public function testTokenizesJsonNumbers()
|
||||
{
|
||||
$l = new Lexer();
|
||||
$tokens = $l->tokenize('`10`, `1.2`, `-10.20e-10`, `1.2E+2`');
|
||||
$this->assertEquals(10, $tokens[0]['value']);
|
||||
$this->assertEquals(1.2, $tokens[2]['value']);
|
||||
$this->assertEquals(-1.02E-9, $tokens[4]['value']);
|
||||
$this->assertEquals(120, $tokens[6]['value']);
|
||||
}
|
||||
|
||||
public function testCanWorkWithElidedJsonLiterals()
|
||||
{
|
||||
$l = new Lexer();
|
||||
$tokens = $l->tokenize('`foo`');
|
||||
$this->assertEquals('foo', $tokens[0]['value']);
|
||||
$this->assertEquals('literal', $tokens[0]['type']);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user