/**
* Tests identifier quoting
*
* @return void
*/
public function testQuoteIdentifier()
{
$driver = $this->getMock('Cake\\Database\\Driver\\Sqlite', ['enabled']);
$driver->expects($this->once())->method('enabled')->will($this->returnValue(true));
$connection = new Connection(['driver' => $driver]);
$result = $connection->quoteIdentifier('name');
$expected = '"name"';
$this->assertEquals($expected, $result);
$result = $connection->quoteIdentifier('Model.*');
$expected = '"Model".*';
$this->assertEquals($expected, $result);
$result = $connection->quoteIdentifier('MTD()');
$expected = 'MTD()';
$this->assertEquals($expected, $result);
$result = $connection->quoteIdentifier('(sm)');
$expected = '(sm)';
$this->assertEquals($expected, $result);
$result = $connection->quoteIdentifier('name AS x');
$expected = '"name" AS "x"';
$this->assertEquals($expected, $result);
$result = $connection->quoteIdentifier('Model.name AS x');
$expected = '"Model"."name" AS "x"';
$this->assertEquals($expected, $result);
$result = $connection->quoteIdentifier('Function(Something.foo)');
$expected = 'Function("Something"."foo")';
$this->assertEquals($expected, $result);
$result = $connection->quoteIdentifier('Function(SubFunction(Something.foo))');
$expected = 'Function(SubFunction("Something"."foo"))';
$this->assertEquals($expected, $result);
$result = $connection->quoteIdentifier('Function(Something.foo) AS x');
$expected = 'Function("Something"."foo") AS "x"';
$this->assertEquals($expected, $result);
$result = $connection->quoteIdentifier('name-with-minus');
$expected = '"name-with-minus"';
$this->assertEquals($expected, $result);
$result = $connection->quoteIdentifier('my-name');
$expected = '"my-name"';
$this->assertEquals($expected, $result);
$result = $connection->quoteIdentifier('Foo-Model.*');
$expected = '"Foo-Model".*';
$this->assertEquals($expected, $result);
$result = $connection->quoteIdentifier('Team.P%');
$expected = '"Team"."P%"';
$this->assertEquals($expected, $result);
$result = $connection->quoteIdentifier('Team.G/G');
$expected = '"Team"."G/G"';
$result = $connection->quoteIdentifier('Model.name as y');
$expected = '"Model"."name" AS "y"';
$this->assertEquals($expected, $result);
}