assertEquals('RLIKE', $this->_platform->getRegexpExpression(), 'Regular expression operator is not correct'); $this->assertEquals('SUBSTR(column, 5, LENGTH(column))', $this->_platform->getSubstringExpression('column', 5), 'Substring expression without length is not correct'); $this->assertEquals('SUBSTR(column, 0, 5)', $this->_platform->getSubstringExpression('column', 0, 5), 'Substring expression with length is not correct'); } public function testGeneratesTransactionCommands() { $this->assertEquals( 'PRAGMA read_uncommitted = 0', $this->_platform->getSetTransactionIsolationSQL(\Doctrine\DBAL\Connection::TRANSACTION_READ_UNCOMMITTED) ); $this->assertEquals( 'PRAGMA read_uncommitted = 1', $this->_platform->getSetTransactionIsolationSQL(\Doctrine\DBAL\Connection::TRANSACTION_READ_COMMITTED) ); $this->assertEquals( 'PRAGMA read_uncommitted = 1', $this->_platform->getSetTransactionIsolationSQL(\Doctrine\DBAL\Connection::TRANSACTION_REPEATABLE_READ) ); $this->assertEquals( 'PRAGMA read_uncommitted = 1', $this->_platform->getSetTransactionIsolationSQL(\Doctrine\DBAL\Connection::TRANSACTION_SERIALIZABLE) ); } public function testPrefersIdentityColumns() { $this->assertTrue($this->_platform->prefersIdentityColumns()); } public function testGeneratesTypeDeclarationForIntegers() { $this->assertEquals( 'INTEGER', $this->_platform->getIntegerTypeDeclarationSQL(array()) ); $this->assertEquals( 'INTEGER', $this->_platform->getIntegerTypeDeclarationSQL(array('autoincrement' => true)) ); $this->assertEquals( 'INTEGER', $this->_platform->getIntegerTypeDeclarationSQL( array('autoincrement' => true, 'primary' => true)) ); } public function testGeneratesTypeDeclarationForStrings() { $this->assertEquals( 'CHAR(10)', $this->_platform->getVarcharTypeDeclarationSQL( array('length' => 10, 'fixed' => true)) ); $this->assertEquals( 'VARCHAR(50)', $this->_platform->getVarcharTypeDeclarationSQL(array('length' => 50)), 'Variable string declaration is not correct' ); $this->assertEquals( 'VARCHAR(255)', $this->_platform->getVarcharTypeDeclarationSQL(array()), 'Long string declaration is not correct' ); } public function getGenerateIndexSql() { return 'CREATE INDEX my_idx ON mytable (user_name, last_login)'; } public function getGenerateUniqueIndexSql() { return 'CREATE UNIQUE INDEX index_name ON test (test, test2)'; } public function getGenerateForeignKeySql() { $this->markTestSkipped('SQLite does not support ForeignKeys.'); } public function testModifyLimitQuery() { $sql = $this->_platform->modifyLimitQuery('SELECT * FROM user', 10, 0); $this->assertEquals('SELECT * FROM user LIMIT 10 OFFSET 0', $sql); } public function testModifyLimitQueryWithEmptyOffset() { $sql = $this->_platform->modifyLimitQuery('SELECT * FROM user', 10); $this->assertEquals('SELECT * FROM user LIMIT 10', $sql); } public function getGenerateAlterTableSql() { $this->markTestSkipped('SQlite does not support ALTER Table.'); } public function testGetAlterTableSqlDispatchEvent() { $this->markTestSkipped('SQlite does not support ALTER Table.'); } /** * @group DDC-1845 */ public function testGenerateTableSqlShouldNotAutoQuotePrimaryKey() { $table = new \Doctrine\DBAL\Schema\Table('test'); $table->addColumn('"like"', 'integer', array('notnull' => true, 'autoincrement' => true)); $table->setPrimaryKey(array('"like"')); $createTableSQL = $this->_platform->getCreateTableSQL($table); $this->assertEquals( 'CREATE TABLE test ("like" INTEGER NOT NULL, PRIMARY KEY("like"))', $createTableSQL[0] ); $this->assertEquals( 'ALTER TABLE test ADD PRIMARY KEY ("like")', $this->_platform->getCreatePrimaryKeySQL($table->getIndex('primary'), 'test') ); } }