<?php
#include_once dirname(__FILE__) . '/DbTestCommon.php';
#class Db_MySQLTest extends DbTestCommon {
class Db_MySQLTest extends UnitTestCase
{
public $db;
public $config = array(
'SINGLE' => array(
'phptype' => 'mysql',
'hostspec' => 'localhost',
'database' => 'skeletontest1',
'username' => 'skeleton',
'password' => 'skeleton',
),
'MASTER_SLAVE' => array(
'config_class' => 'A_Db_Config_Masterslave',
'master' => array(
0 => array(
'phptype' => 'mysql',
'hostspec' => 'localhost',
'database' => 'skeletontest1',
'username' => 'skeleton',
'password' => 'skeleton',
),
),
'slave' => array(
0 => array(
'phptype' => 'mysql',
'hostspec' => 'localhost',
'database' => 'skeletontest2',
'username' => 'skeleton',
'password' => 'skeleton',
),
),
),
'MASTERS_SLAVES' => array(
'config_class' => 'A_Db_Config_Masterslave',
'master' => array(
0 => array(
'phptype' => 'mysql',
'hostspec' => 'localhost',
'database' => 'skeletontest1',
'username' => 'skeleton',
'password' => 'skeleton',
),
1 => array(
'phptype' => 'mysql',
'hostspec' => 'localhost',
'database' => 'skeletontest2',
'username' => 'skeleton',
'password' => 'skeleton',
),
),
'slave' => array(
0 => array(
'phptype' => 'mysql',
'hostspec' => 'localhost',
'database' => 'skeletontest1',
'username' => 'skeleton',
'password' => 'skeleton',
),
1 => array(
'phptype' => 'mysql',
'hostspec' => 'localhost',
'database' => 'skeletontest2',
'username' => 'skeleton',
'password' => 'skeleton',
),
),
),
);
public function setUp()
{
$this->db = new A_Db_MySQL($this->config['SINGLE']);
/*
CREATE TABLE `skeletontest1`.`test1` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR( 255 ) NOT NULL
) ENGINE = InnoDB;
CREATE TABLE `skeletontest2`.`test1` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR( 255 ) NOT NULL
) ENGINE = InnoDB;
*/
}
public function TearDown() {
$this->db->close();
}
/*
function testDb_Single() {
$db = new A_Db_MySQL($this->config['SINGLE']);
$db->connect();
$sql = "DELETE FROM test1";
$db->query($sql);
echo "SQL=$sql, ERROR=".$db->getErrorMsg()."<br/>\n";
$this->assertTrue($db->getErrorMsg() == '');
$sql = "INSERT INTO test1 (id,name) VALUES (1,'One'),(2,'Two')";
$db->query($sql);
echo "SQL=$sql, ERROR=".$db->getErrorMsg()."<br/>\n";
$this->assertTrue($db->getErrorMsg() == '');
$sql = "SELECT id,name FROM test1";
$result = $db->query($sql);
echo "SQL=$sql, ERROR=".$db->getErrorMsg()."<br/>\n";
$this->assertTrue($db->getErrorMsg() == '');
$rows = $result->fetchAll();
dump($rows, 'ROWS: ');
$diff = array_diff_assoc($rows->toArray(), array(0=>array('id'=>1,'name'=>'One'),1=>array('id'=>2,'name'=>'Two')));
dump($diff, 'DIFF: ');
$this->assertTrue($diff == array());
$this->assertTrue($db->getErrorMsg() == '');
# $this->assertFalse(!$result);
}
function testDb_MasterSlave() {
$db = new A_Db_MySQL($this->config['MASTER_SLAVE']);
$db->connect();
// should go to master
$sql = "DELETE FROM test1";
$db->query($sql);
echo "SQL=$sql, ERROR=".$db->getErrorMsg()."<br/>\n";
$this->assertTrue($db->getErrorMsg() == '');
// should go to master
$sql = "INSERT INTO test1 (id,name) VALUES (3,'Three'),(4,'Four')";
$db->query($sql);
echo "SQL=$sql, ERROR=".$db->getErrorMsg()."<br/>\n";
$this->assertTrue($db->getErrorMsg() == '');
// should come from slave
$sql = "SELECT id,name FROM test1";
$result = $db->query($sql);
echo "SQL=$sql, ERROR=".$db->getErrorMsg()."<br/>\n";
$this->assertTrue($db->getErrorMsg() == '');
$rows = $result->fetchAll();
dump($rows, 'ROWS: ');
$diff = array_diff_assoc($rows->toArray(), array(0=>array('id'=>1,'name'=>'One'),1=>array('id'=>2,'name'=>'Two')));
dump($diff, 'DIFF: ');
$this->assertTrue($diff == array());
$this->assertTrue($db->getErrorMsg() == '');
# $this->assertFalse(!$result);
}
*/
public function testDb_FetchRow() {
$this->db->connect();
$sql = "DELETE FROM test1";
$this->db->query($sql);
#echo "SQL=$sql, ERROR=".$this->db->getErrorMsg()."<br/>\n";
$this->assertTrue($this->db->getErrorMsg() == '');
$sql = "INSERT INTO test1 (id,name) VALUES (1,'One'),(2, 'Two'),(3,'Three'),(4, 'Four')";
$result = $this->db->query($sql);
#echo "SQL=$sql, ERROR=".$this->db->getErrorMsg()."<br/>\n";
$this->assertTrue($this->db->getErrorMsg() == '');
$this->assertTrue($result->numRows() == 4);
$this->assertTrue($result->getErrorMsg() == '');
$sql = "SELECT id,name FROM test1";
$result = $this->db->query($sql);
#echo "SQL=$sql, ERROR=".$this->db->getErrorMsg()."<br/>\n";
$this->assertTrue($this->db->getErrorMsg() == '');
$this->assertTrue($result->numRows() == 4);
$this->assertTrue($result->getErrorMsg() == '');
$expect_rows = array(
0 => array('id'=>1,'name'=>'One'),
1 => array('id'=>2,'name'=>'Two'),
2 => array('id'=>3,'name'=>'Three'),
3 => array('id'=>4,'name'=>'Four'),
);
$i = 0;
while ($row = $result->fetchRow()) {
$diff = array_diff_assoc($row, $expect_rows[$i]);
$this->assertTrue($diff == array());
++$i;
}
$this->assertTrue($this->db->getErrorMsg() == '');
}
public function testDb_FetchAll() {
$this->db->connect();
$sql = "DELETE FROM test1";
$this->db->query($sql);
#echo "SQL=$sql, ERROR=".$this->db->getErrorMsg()."<br/>\n";
$this->assertTrue($this->db->getErrorMsg() == '');
$sql = "INSERT INTO test1 (id,name) VALUES (1,'One'),(2, 'Two'),(3,'Three'),(4, 'Four')";
$result = $this->db->query($sql);
#echo "SQL=$sql, ERROR=".$this->db->getErrorMsg()."<br/>\n";
$this->assertTrue($this->db->getErrorMsg() == '');
$this->assertTrue($result->numRows() == 4);
$this->assertTrue($result->getErrorMsg() == '');
$sql = "SELECT id,name FROM test1";
$result = $this->db->query($sql);
#echo "SQL=$sql, ERROR=".$this->db->getErrorMsg()."<br/>\n";
$this->assertTrue($this->db->getErrorMsg() == '');
$this->assertTrue($result->numRows() == 4);
$this->assertTrue($result->getErrorMsg() == '');
$expect_rows = array(
0 => array('id'=>1,'name'=>'One'),
1 => array('id'=>2,'name'=>'Two'),
2 => array('id'=>3,'name'=>'Three'),
3 => array('id'=>4,'name'=>'Four'),
);
$i = 0;
$result->fetchAll();
foreach ($result->toArray() as $row) {
$diff = array_diff_assoc($row, $expect_rows[$i]);
$this->assertTrue($diff == array());
++$i;
}
$this->assertTrue($this->db->getErrorMsg() == '');
}
public function testDb_Iterator() {
$this->db->connect();
$sql = "DELETE FROM test1";
$this->db->query($sql);
#echo "SQL=$sql, ERROR=".$this->db->getErrorMsg()."<br/>\n";
$this->assertTrue($this->db->getErrorMsg() == '');
$sql = "INSERT INTO test1 (id,name) VALUES (1,'One'),(2, 'Two'),(3,'Three'),(4, 'Four')";
$result = $this->db->query($sql);
#echo "SQL=$sql, ERROR=".$this->db->getErrorMsg()."<br/>\n";
$this->assertTrue($this->db->getErrorMsg() == '');
$this->assertTrue($result->numRows() == 4);
$this->assertTrue($result->getErrorMsg() == '');
$sql = "SELECT id,name FROM test1";
$result = $this->db->query($sql);
#echo "SQL=$sql, ERROR=".$this->db->getErrorMsg()."<br/>\n";
$this->assertTrue($this->db->getErrorMsg() == '');
$this->assertTrue($result->numRows() == 4);
$this->assertTrue($result->getErrorMsg() == '');
$expect_rows = array(
0 => array('id'=>1,'name'=>'One'),
1 => array('id'=>2,'name'=>'Two'),
2 => array('id'=>3,'name'=>'Three'),
3 => array('id'=>4,'name'=>'Four'),
);
$i = 0;
foreach ($result as $key => $row) {
$diff = array_diff_assoc($row, $expect_rows[$i]);
$this->assertTrue($diff == array());
++$i;
}
$this->assertTrue($this->db->getErrorMsg() == '');
}
public function testDb_IteratorGather() {
$this->db->connect();
$sql = "DELETE FROM test1";
$this->db->query($sql);
#echo "SQL=$sql, ERROR=".$this->db->getErrorMsg()."<br/>\n";
$this->assertTrue($this->db->getErrorMsg() == '');
$sql = "INSERT INTO test1 (id,name) VALUES (1,'One'),(2, 'Two'),(3,'Three'),(4, 'Four')";
$result = $this->db->query($sql);
#echo "SQL=$sql, ERROR=".$this->db->getErrorMsg()."<br/>\n";
$this->assertTrue($this->db->getErrorMsg() == '');
$this->assertTrue($result->numRows() == 4);
$this->assertTrue($result->getErrorMsg() == '');
$sql = "SELECT id,name FROM test1";
$result = $this->db->query($sql);
#echo "SQL=$sql, ERROR=".$this->db->getErrorMsg()."<br/>\n";
$this->assertTrue($this->db->getErrorMsg() == '');
$this->assertTrue($result->numRows() == 4);
$this->assertTrue($result->getErrorMsg() == '');
$expect_rows = array(
0 => array('id'=>1,'name'=>'One'),
1 => array('id'=>2,'name'=>'Two'),
2 => array('id'=>3,'name'=>'Three'),
3 => array('id'=>4,'name'=>'Four'),
);
$i = 0;
dump($result, 'RESULT BEFORE 1ST FOREACH: ', 1);
$result->enableGather();
foreach ($result as $key => $row) {
dump($row, "ROW $i: $key => ", 1);
$diff = array_diff_assoc($row, $expect_rows[$i]);
$this->assertTrue($diff == array());
++$i;
}
$i = 0;
dump($result, 'RESULT AFTER 1ST FOREACH: ', 1);
foreach ($result as $key => $row) {
dump($row, "ROW $i: $key => ", 1);
$diff = array_diff_assoc($row, $expect_rows[$i]);
$this->assertTrue($diff == array());
++$i;
}
dump($result, 'RESULT AFTER 2ND FOREACH: ', 1);
$this->assertTrue($this->db->getErrorMsg() == '');
}
public function testDb_PrepareArray() {
$this->db->connect();
$sql = "SELECT id,name FROM test1 WHERE id>:id AND name LIKE ':name'";
// with and without : before tags
$result = $this->db->query($sql, array('id'=>1, ':name'=>'T%'));
echo "ERRORMSG=" . $this->db->getErrorMsg() . "<br/>";
$this->assertTrue($this->db->getErrorMsg() == '');
$expect_rows = array(
0 => array('id'=>2,'name'=>'Two'),
1 => array('id'=>3,'name'=>'Three'),
);
$i = 0;
foreach ($result as $key => $row) {
$diff = array_diff_assoc($row, $expect_rows[$i]);
$this->assertTrue($diff == array());
++$i;
}
}
}
|