<?php
require_once dirname(__FILE__).'/../phpunit2.php';
require_once(dirname(__FILE__).'/common.php');
require_once(SQLMAP_DIR.'/TSqlMapClient.php');
/**
* @package System.DataAccess.SQLMap
*/
class BaseTest extends PHPUnit2_Framework_TestCase
{
protected $sqlmap;
protected $connection;
private $mapper;
private $config;
public function testCase1()
{
$this->assertTrue(true);
}
public function testCase2()
{
$this->assertTrue(true);
}
public function __construct()
{
parent::__construct();
$this->config = BaseTestConfig::createConfigInstance();
$this->ScriptDirectory = $this->config->getScriptDir();
}
public function hasSupportFor($feature)
{
return $this->config->hasFeature($feature);
}
public function __destruct()
{
if(!is_null($this->mapper))
$this->mapper->cacheConfiguration();
}
function getConnection()
{
if(is_null($this->connection))
$this->connection = new TAdodbConnection($this->config->getConnectionString());
$this->connection->open();
return $this->connection;
}
protected static $ScriptDirectory;
/**
* Initialize an sqlMap
*/
protected function initSqlMap()
{
$filename = $this->config->getSqlMapConfigFile();
$this->mapper = new TSQLMapClient;
$this->sqlmap = $this->mapper->configure($filename,true);
$this->sqlmap->getTypeHandlerFactory()->register('date', new TDateTimeHandler);
$this->sqlmap->getDataProvider()->setConnectionString($this->config->getConnectionString());
}
/**
* Run a sql batch for the datasource.
*/
protected function initScript($script)
{
$runner = $this->config->getScriptRunner();
$runner->runScript($this->getConnection(), $this->ScriptDirectory.$script);
}
/**
* Create a new account with id = 6
*/
protected function NewAccount6()
{
$account = new Account();
$account->setID(6);
$account->setFirstName('Calamity');
$account->setLastName('Jane');
$account->setEmailAddress('no_email@provided.com');
return $account;
}
/**
* Verify that the input account is equal to the account(id=1).
*/
protected function assertAccount1(Account $account)
{
$this->assertEquals($account->getID(), 1);
$this->assertEquals($account->getFirstName(), 'Joe');
$this->assertEquals($account->getEmailAddress(), 'Joe.Dalton@somewhere.com');
}
/**
* Verify that the input account is equal to the account(id=6).
*/
protected function assertAccount6(Account $account)
{
$this->assertEquals($account->getID(), 6);
$this->assertEquals($account->getFirstName(), 'Calamity');
$this->assertEquals($account->getLastName(), 'Jane');
$this->assertNull($account->getEmailAddress());
}
/**
* Verify that the input order is equal to the order(id=1).
*/
protected function assertOrder1(Order $order)
{
$date = @mktime(8,15,0,2,15,2003);
$this->assertEquals((int)$order->getID(), 1);
if($order->getDate() instanceof TDateTime)
$this->assertEquals($order->getDate()->getTimestamp(), $date);
else
$this->fail();
$this->assertEquals($order->getCardType(), 'VISA');
$this->assertEquals($order->getCardNumber(), '999999999999');
$this->assertEquals($order->getCardExpiry(), '05/03');
$this->assertEquals($order->getStreet(), '11 This Street');
$this->assertEquals($order->getProvince(), 'BC');
$this->assertEquals($order->getPostalCode(), 'C4B 4F4');
}
function assertAccount1AsHashArray($account)
{
$this->assertEquals(1, (int)$account["Id"]);
$this->assertEquals("Joe", $account["FirstName"]);
$this->assertEquals("Dalton", $account["LastName"]);
$this->assertEquals("Joe.Dalton@somewhere.com", $account["EmailAddress"]);
}
function AssertOrder1AsHashArray($order)
{
$date = @mktime(8,15,0,2,15,2003);
$this->assertEquals(1, $order["Id"]);
if($order['Date'] instanceof TDateTime)
$this->assertEquals($date, $order["Date"]->getTimestamp());
else
$this->fail();
$this->assertEquals("VISA", $order["CardType"]);
$this->assertEquals("999999999999", $order["CardNumber"]);
$this->assertEquals("05/03", $order["CardExpiry"]);
$this->assertEquals("11 This Street", $order["Street"]);
$this->assertEquals("Victoria", $order["City"]);
$this->assertEquals("BC", $order["Province"]);
$this->assertEquals("C4B 4F4", $order["PostalCode"]);
}
}
class HundredsBool implements ITypeHandlerCallback
{
public function getResult($string)
{
$value = intval($string);
if($value == 100)
return true;
if($value == 200)
return false;
//throw new Exception('unexpected value '.$value);
}
public function getParameter($parameter)
{
if($parameter)
return 100;
else
return 200;
}
public function createNewInstance($data=null)
{
throw new TDataMapperException('can not create');
}
}
class OuiNonBool implements ITypeHandlerCallback
{
const YES = "Oui";
const NO = "Non";
public function getResult($string)
{
if($string === self::YES)
return true;
if($string === self::NO)
return false;
//throw new Exception('unexpected value '.$string);
}
public function getParameter($parameter)
{
if($parameter)
return self::YES;
else
return self::NO;
}
public function createNewInstance($data=null)
{
throw new TDataMapperException('can not create');
}
}
class TDateTimeHandler implements ITypeHandlerCallback
{
public function getResult($string)
{
$time = new TDateTime($string);
return $time;
}
public function getParameter($parameter)
{
if($parameter instanceof TDateTime)
return $parameter->getTimestamp();
else
return $parameter;
}
public function createNewInstance($data=null)
{
return new TDateTime;
}
}
class TDateTime
{
private $_datetime;
public function __construct($datetime=null)
{
if(!is_null($datetime))
$this->setDatetime($datetime);
}
public function getTimestamp()
{
return strtotime($this->getDatetime());
}
public function getDateTime()
{
return $this->_datetime;
}
public function setDateTime($value)
{
$this->_datetime = $value;
}
}
?>