2009-02-18 02:27:11 +03:00
< ? php
namespace Doctrine\Tests\DBAL\Platforms ;
2009-02-18 13:26:12 +03:00
use Doctrine\DBAL\Platforms\SqlitePlatform ;
2009-05-28 15:13:12 +04:00
use Doctrine\DBAL\Types\Type ;
2009-02-18 13:26:12 +03:00
2009-02-18 02:27:11 +03:00
require_once __DIR__ . '/../../TestInit.php' ;
2009-02-18 13:26:12 +03:00
class SqlitePlatformTest extends \Doctrine\Tests\DbalTestCase
2009-02-18 02:27:11 +03:00
{
2009-02-18 13:26:12 +03:00
private $_platform ;
2009-02-18 02:27:11 +03:00
public function setUp ()
{
2009-02-18 13:26:12 +03:00
$this -> _platform = new SqlitePlatform ;
2009-02-18 02:27:11 +03:00
}
2009-07-07 16:00:22 +04:00
public function testGeneratesTableCreationSql ()
2009-02-18 02:27:11 +03:00
{
$columns = array (
'id' => array (
2009-05-28 15:13:12 +04:00
'type' => Type :: getType ( 'integer' ),
2009-05-03 22:07:57 +04:00
'autoincrement' => true ,
'primary' => true ,
'notnull' => true
2009-02-18 02:27:11 +03:00
),
'test' => array (
2009-05-28 15:13:12 +04:00
'type' => Type :: getType ( 'string' ),
2009-02-18 02:27:11 +03:00
'length' => 255
)
);
2009-05-03 22:07:57 +04:00
$options = array ();
2009-02-18 02:27:11 +03:00
$sql = $this -> _platform -> getCreateTableSql ( 'test' , $columns , $options );
2009-05-03 22:07:57 +04:00
$this -> assertEquals ( 'CREATE TABLE test (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, test VARCHAR(255) DEFAULT NULL)' , $sql [ 0 ]);
2009-02-18 02:27:11 +03:00
}
2009-07-07 16:00:22 +04:00
public function testGeneratesSqlSnippets ()
2009-02-18 02:27:11 +03:00
{
2009-07-07 16:00:22 +04:00
$this -> 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' );
2009-02-18 02:27:11 +03:00
}
2009-07-07 16:00:22 +04:00
public function testGeneratesTransactionCommands ()
2009-02-18 02:27:11 +03:00
{
2009-05-03 22:07:57 +04:00
$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 ));
}
2009-07-07 16:00:22 +04:00
public function testPrefersIdentityColumns ()
2009-05-03 22:07:57 +04:00
{
$this -> assertTrue ( $this -> _platform -> prefersIdentityColumns ());
}
2009-07-07 16:00:22 +04:00
public function testGeneratesTypeDeclarationForIntegers ()
2009-05-03 22:07:57 +04:00
{
$this -> assertEquals (
'INTEGER' ,
$this -> _platform -> getIntegerTypeDeclarationSql ( array ())
);
$this -> assertEquals (
'INTEGER AUTOINCREMENT' ,
2009-07-07 16:00:22 +04:00
$this -> _platform -> getIntegerTypeDeclarationSql ( array ( 'autoincrement' => true ))
);
2009-05-03 22:07:57 +04:00
$this -> assertEquals (
'INTEGER PRIMARY KEY AUTOINCREMENT' ,
$this -> _platform -> getIntegerTypeDeclarationSql (
2009-07-07 16:00:22 +04:00
array ( 'autoincrement' => true , 'primary' => true ))
);
}
public function testGeneratesTypeDeclarationForStrings ()
{
2009-05-03 22:07:57 +04:00
$this -> assertEquals (
'CHAR(10)' ,
$this -> _platform -> getVarcharTypeDeclarationSql (
2009-07-07 16:00:22 +04:00
array ( 'length' => 10 , 'fixed' => true ))
);
2009-05-03 22:07:57 +04:00
$this -> assertEquals (
'VARCHAR(50)' ,
2009-07-07 16:00:22 +04:00
$this -> _platform -> getVarcharTypeDeclarationSql ( array ( 'length' => 50 )),
'Variable string declaration is not correct'
2009-05-03 22:07:57 +04:00
);
$this -> assertEquals (
'TEXT' ,
2009-07-07 16:00:22 +04:00
$this -> _platform -> getVarcharTypeDeclarationSql ( array ()),
'Long string declaration is not correct'
2009-05-03 22:07:57 +04:00
);
2009-02-18 02:27:11 +03:00
}
2009-07-07 16:00:22 +04:00
public function testGeneratesConstraintCreationSql ()
{
$sql = $this -> _platform -> getCreateConstraintSql ( 'test' , 'constraint_name' , array ( 'fields' => array ( 'test' => array ())));
$this -> assertEquals ( 'ALTER TABLE test ADD CONSTRAINT constraint_name (test)' , $sql );
}
public function testGeneratesIndexCreationSql ()
{
$sql = $this -> _platform -> getCreateIndexSql ( 'test' , 'index_name' , array ( 'type' => 'unique' , 'fields' => array ( 'test' , 'test2' )));
$this -> assertEquals ( 'CREATE UNIQUE INDEX index_name ON test (test, test2)' , $sql );
}
public function testGeneratesForeignKeyCreationSql ()
{
$sql = $this -> _platform -> getCreateForeignKeySql ( 'test' , array ( 'foreignTable' => 'other_table' , 'local' => 'fk_name_id' , 'foreign' => 'id' ));
$this -> assertEquals ( 'ALTER TABLE test ADD FOREIGN KEY (fk_name_id) REFERENCES other_table(id)' , $sql );
}
2009-07-14 02:59:36 +04:00
public function testModifyLimitQuery ()
{
$sql = $this -> _platform -> modifyLimitQuery ( 'SELECT * FROM user' , 10 , 0 );
$this -> assertEquals ( 'SELECT * FROM user OFFSET 0 LIMIT 10' , $sql );
}
public function testModifyLimitQueryWithEmptyOffset ()
{
$sql = $this -> _platform -> modifyLimitQuery ( 'SELECT * FROM user' , 10 );
$this -> assertEquals ( 'SELECT * FROM user LIMIT 10' , $sql );
}
}