assertEquals('RLIKE', $this->_platform->getRegexpExpression(), 'Regular expression operator is not correct'); } public function testGeneratesSqlSnippets() { $this->assertEquals('"', $this->_platform->getIdentifierQuoteCharacter(), 'Identifier quote character is not correct'); $this->assertEquals('dbms_random.value', $this->_platform->getRandomExpression(), 'Random function is not correct'); $this->assertEquals('column1 || column2 || column3', $this->_platform->getConcatExpression('column1', 'column2', 'column3'), 'Concatenation expression is not correct'); } /** * @expectedException Doctrine\DBAL\DBALException */ public function testGetCharsetFieldDeclaration() { $this->assertEquals('CHARACTER SET utf8', $this->_platform->getCharsetFieldDeclaration('utf8'), 'Charset declaration is not correct'); } public function testGeneratesTransactionsCommands() { $this->assertEquals( 'SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED', $this->_platform->getSetTransactionIsolationSql(\Doctrine\DBAL\Connection::TRANSACTION_READ_UNCOMMITTED) ); $this->assertEquals( 'SET TRANSACTION ISOLATION LEVEL READ COMMITTED', $this->_platform->getSetTransactionIsolationSql(\Doctrine\DBAL\Connection::TRANSACTION_READ_COMMITTED) ); $this->assertEquals( 'SET TRANSACTION ISOLATION LEVEL SERIALIZABLE', $this->_platform->getSetTransactionIsolationSql(\Doctrine\DBAL\Connection::TRANSACTION_REPEATABLE_READ) ); $this->assertEquals( 'SET TRANSACTION ISOLATION LEVEL SERIALIZABLE', $this->_platform->getSetTransactionIsolationSql(\Doctrine\DBAL\Connection::TRANSACTION_SERIALIZABLE) ); } /** * @expectedException Doctrine\DBAL\DBALException */ public function testShowDatabasesThrowsException() { $this->assertEquals('SHOW DATABASES', $this->_platform->getShowDatabasesSql()); } /** * @expectedException Doctrine\DBAL\DBALException */ public function testCreateDatabaseThrowsException() { $this->assertEquals('CREATE DATABASE foobar', $this->_platform->getCreateDatabaseSql('foobar')); } public function testDropDatabaseThrowsException() { $this->assertEquals('DROP USER foobar CASCADE', $this->_platform->getDropDatabaseSql('foobar')); } public function testDropTable() { $this->assertEquals('DROP TABLE foobar', $this->_platform->getDropTableSql('foobar')); } public function testGeneratesTypeDeclarationForIntegers() { $this->assertEquals( 'NUMBER(10)', $this->_platform->getIntegerTypeDeclarationSql(array()) ); $this->assertEquals( 'NUMBER(10)', $this->_platform->getIntegerTypeDeclarationSql(array('autoincrement' => true) )); $this->assertEquals( 'NUMBER(10)', $this->_platform->getIntegerTypeDeclarationSql( array('autoincrement' => true, 'primary' => true) )); } public function testGeneratesTypeDeclarationsForStrings() { $this->assertEquals( 'CHAR(10)', $this->_platform->getVarcharTypeDeclarationSql( array('length' => 10, 'fixed' => true) )); $this->assertEquals( 'VARCHAR2(50)', $this->_platform->getVarcharTypeDeclarationSql(array('length' => 50)), 'Variable string declaration is not correct' ); $this->assertEquals( 'VARCHAR2(4000)', $this->_platform->getVarcharTypeDeclarationSql(array()), 'Long string declaration is not correct' ); } public function testPrefersIdentityColumns() { $this->assertFalse($this->_platform->prefersIdentityColumns()); } public function testSupportsIdentityColumns() { $this->assertFalse($this->_platform->supportsIdentityColumns()); } public function testSupportsSavePoints() { $this->assertTrue($this->_platform->supportsSavepoints()); } 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() { return 'ALTER TABLE test ADD FOREIGN KEY (fk_name_id) REFERENCES other_table(id)'; } public function testModifyLimitQuery() { $sql = $this->_platform->modifyLimitQuery('SELECT * FROM user', 10, 0); $this->assertEquals('SELECT a.* FROM (SELECT * FROM user) a WHERE ROWNUM <= 10', $sql); } public function testModifyLimitQueryWithEmptyOffset() { $sql = $this->_platform->modifyLimitQuery('SELECT * FROM user', 10); $this->assertEquals('SELECT a.* FROM (SELECT * FROM user) a WHERE ROWNUM <= 10', $sql); } public function testModifyLimitQueryWithAscOrderBy() { $sql = $this->_platform->modifyLimitQuery('SELECT * FROM user ORDER BY username ASC', 10); $this->assertEquals('SELECT a.* FROM (SELECT * FROM user ORDER BY username ASC) a WHERE ROWNUM <= 10', $sql); } public function testModifyLimitQueryWithDescOrderBy() { $sql = $this->_platform->modifyLimitQuery('SELECT * FROM user ORDER BY username DESC', 10); $this->assertEquals('SELECT a.* FROM (SELECT * FROM user ORDER BY username DESC) a WHERE ROWNUM <= 10', $sql); } }