diff options
author | wei <> | 2006-04-14 11:23:56 +0000 |
---|---|---|
committer | wei <> | 2006-04-14 11:23:56 +0000 |
commit | f6a5e7589396854e10e023c25237b47e512ff047 (patch) | |
tree | 2b313bb8b66869235ee06b9cae2af2f7645cf5c9 /tests/unit/SQLMap/common.php | |
parent | 3d3f8d3832921f99daf8ce1953304763c2e76c62 (diff) |
Adding SQLMap unit tests. Allow sqlmap to use Prado's caching module to cache records.
Diffstat (limited to 'tests/unit/SQLMap/common.php')
-rw-r--r-- | tests/unit/SQLMap/common.php | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/tests/unit/SQLMap/common.php b/tests/unit/SQLMap/common.php new file mode 100644 index 00000000..97f83267 --- /dev/null +++ b/tests/unit/SQLMap/common.php @@ -0,0 +1,152 @@ +<?php
+
+
+if(!defined('SQLMAP_DIR'))
+ define('SQLMAP_DIR', Prado::getFrameworkPath().'/DataAccess/SQLMap/');
+
+require_once(SQLMAP_DIR.'/TMapper.php');
+
+if(!defined('SQLMAP_TESTS'))
+ define('SQLMAP_TESTS', realpath(dirname(__FILE__)));
+
+if(!class_exists('Account', false))
+{
+ include(SQLMAP_TESTS.'/domain/A.php');
+ include(SQLMAP_TESTS.'/domain/Account.php');
+ include(SQLMAP_TESTS.'/domain/AccountBis.php');
+ include(SQLMAP_TESTS.'/domain/AccountCollection.php');
+ include(SQLMAP_TESTS.'/domain/B.php');
+ include(SQLMAP_TESTS.'/domain/Document.php');
+ include(SQLMAP_TESTS.'/domain/Book.php');
+ include(SQLMAP_TESTS.'/domain/C.php');
+ include(SQLMAP_TESTS.'/domain/Category.php');
+ include(SQLMAP_TESTS.'/domain/Complex.php');
+ include(SQLMAP_TESTS.'/domain/D.php');
+ include(SQLMAP_TESTS.'/domain/DocumentCollection.php');
+ include(SQLMAP_TESTS.'/domain/E.php');
+ include(SQLMAP_TESTS.'/domain/F.php');
+ include(SQLMAP_TESTS.'/domain/LineItem.php');
+ include(SQLMAP_TESTS.'/domain/LineItemCollection.php');
+ include(SQLMAP_TESTS.'/domain/Newspaper.php');
+ include(SQLMAP_TESTS.'/domain/Order.php');
+ include(SQLMAP_TESTS.'/domain/Other.php');
+ include(SQLMAP_TESTS.'/domain/Sample.php');
+ include(SQLMAP_TESTS.'/domain/Search.php');
+ include(SQLMAP_TESTS.'/domain/User.php');
+}
+
+error_reporting(E_ALL);
+restore_error_handler();
+
+class DefaultScriptRunner
+{
+ function runScript($connection, $script)
+ {
+ $sql = file_get_contents($script);
+ $lines = explode(';', $sql);
+ foreach($lines as $line)
+ {
+ $line = trim($line);
+ if(strlen($line) > 0)
+ $connection->execute($line);
+ }
+ }
+}
+
+class CopyFileScriptRunner
+{
+ protected $baseFile;
+ protected $targetFile;
+
+ public function __construct($base, $target)
+ {
+ $this->baseFile = $base;
+ $this->targetFile = $target;
+ }
+
+ function runScript($connection, $script)
+ {
+ copy($this->baseFile, $this->targetFile);
+ }
+}
+
+class SQLiteBaseTestConfig extends BaseTestConfig
+{
+ protected $baseFile;
+ protected $targetFile;
+
+ public function __construct()
+ {
+ $this->_sqlmap = SQLMAP_TESTS.'/sqlite.xml';
+ $this->targetFile = realpath(SQLMAP_TESTS.'/sqlite/tests.db');
+ $this->baseFile = realpath(SQLMAP_TESTS.'/sqlite/backup.db');
+ $file = urlencode($this->targetFile);
+ $this->_connectionString = "sqlite://{$file}/";
+ $this->_scriptDir = SQLMAP_TESTS.'/scripts/sqlite/';
+ }
+
+ public function getScriptRunner()
+ {
+ return new CopyFileScriptRunner($this->baseFile, $this->targetFile);
+ }
+}
+
+class MySQLBaseTestConfig extends BaseTestConfig
+{
+ public function __construct()
+ {
+ $this->_sqlmap = SQLMAP_TESTS.'/mysql.xml';
+ $this->_connectionString = 'mysql://root:weizhuo01@localhost/IBatisNet';
+ $this->_scriptDir = SQLMAP_TESTS.'/scripts/mysql/';
+ $this->_features = array('insert_id');
+ }
+}
+
+class MSSQLBaseTestConfig extends BaseTestConfig
+{
+ public function __construct()
+ {
+ $this->_sqlmap = SQLMAP_TESTS.'/mssql.xml';
+ $this->_connectionString = 'odbc_mssql://sqlmap_tests';
+ $this->_scriptDir = SQLMAP_TESTS.'/scripts/mssql/';
+ $this->_features = array('insert_id');
+ }
+}
+
+class BaseTestConfig
+{
+ protected $_scriptDir;
+ protected $_connectionString;
+ protected $_sqlmap;
+ protected $_features = array();
+
+ public function getScriptDir() { return $this->_scriptDir; }
+ public function getConnectionString() { return $this->_connectionString; }
+ public function getSqlMapConfigFile(){ return $this->_sqlmap; }
+
+ public function hasFeature($feature)
+ {
+ return in_array($feature, $this->_features);
+ }
+
+ public function getScriptRunner()
+ {
+ return new DefaultScriptRunner();
+ }
+
+
+ public static function createConfigInstance()
+ {
+ //change this to connection to a different database
+
+ //return new MySQLBaseTestConfig();
+
+ return new SQLiteBaseTestConfig();
+
+ //return new MSSQLBaseTestConfig();
+ }
+
+}
+
+
+?>
\ No newline at end of file |