getTokensList('table1 AS t1 READ LOCAL')); $this->assertNotNull($component->table); $this->assertEquals($component->table->table, 'table1'); $this->assertEquals($component->table->alias, 't1'); $this->assertEquals($component->type, 'READ LOCAL'); } public function testParse2() { $component = LockExpression::parse(new Parser(), $this->getTokensList('table1 LOW_PRIORITY WRITE')); $this->assertNotNull($component->table); $this->assertEquals($component->table->table, 'table1'); $this->assertEquals($component->type, 'LOW_PRIORITY WRITE'); } /** * @param mixed $expr * @param mixed $error * * @dataProvider parseErrProvider */ public function testParseErr($expr, $error) { $parser = new Parser(); LockExpression::parse($parser, $this->getTokensList($expr)); $errors = $this->getErrorsAsArray($parser); $this->assertEquals($errors[0][0], $error); } public function parseErrProvider() { return [ [ 'table1 AS t1', 'Unexpected end of LOCK expression.', ], [ 'table1 AS t1 READ WRITE', 'Unexpected keyword.', ], [ 'table1 AS t1 READ 2', 'Unexpected token.', ], ]; } public function testBuild() { $component = [ LockExpression::parse(new Parser(), $this->getTokensList('table1 AS t1 READ LOCAL')), LockExpression::parse(new Parser(), $this->getTokensList('table2 LOW_PRIORITY WRITE')), ]; $this->assertEquals( LockExpression::build($component), 'table1 AS `t1` READ LOCAL, table2 LOW_PRIORITY WRITE' ); } }