1443 lines
43 KiB
PHP
1443 lines
43 KiB
PHP
<?php
|
|
/** DomFramework - Tests
|
|
* @package domframework
|
|
* @author Dominique Fournier <dominique@fournier38.fr>
|
|
* @license BSD
|
|
*/
|
|
|
|
namespace Domframework\Tests;
|
|
|
|
class dblayerooTest{ENGINE} extends PHPUnit_Framework_TestCase
|
|
{
|
|
// Test with column name 'group', 'object', 'where', 'with space'
|
|
// Test with table name 'group', 'object', 'where', 'with space'
|
|
// For the 3 DB engines
|
|
|
|
public $engine="{ENGINE}";
|
|
public $confs = array (
|
|
"sqlite" => array (
|
|
"dsn" => "sqlite:/tmp/databaseDBLayeroo.db",
|
|
"username" => null,
|
|
"password" => null,
|
|
"driver_options" => null,
|
|
"tableprefix" => "",
|
|
),
|
|
"mysql" => array (
|
|
"dsn" => "mysql:host=127.0.0.1;port=3306;dbname=test",
|
|
"username" => "root",
|
|
"password" => "lqsym",
|
|
"driver_options" => null,
|
|
"tableprefix" => "",
|
|
),
|
|
"pgsql" => array (
|
|
"dsn" => "pgsql:host=127.0.0.1;port=5432;dbname=dbname",
|
|
"username" => "root",
|
|
"password" => "root",
|
|
"driver_options" => null,
|
|
"tableprefix" => "",
|
|
),
|
|
);
|
|
|
|
private function tbl1 ()
|
|
{
|
|
$dbconfig = $this->confs["{ENGINE}"];
|
|
$tbl1 = new dblayeroo ($dbconfig["dsn"], $dbconfig["username"],
|
|
$dbconfig["password"], $dbconfig["driver_options"]);
|
|
$tbl1->table ("groupedoo");
|
|
$tbl1->fields (array ("group"=>array ("varchar(255)", "not null"),
|
|
"object"=>array ("varchar(255)", "not null"),
|
|
"where"=>array ("varchar(255)", "not null"),
|
|
"with space"=>array ("varchar(255)")));
|
|
$tbl1->unique (array ());
|
|
$tbl1->primary ("group");
|
|
$tbl1->realTypes (array ("group" => "regex(/^\S{1,10}$/)"));
|
|
return $tbl1;
|
|
}
|
|
|
|
private function tbl2 ()
|
|
{
|
|
$dbconfig = $this->confs["{ENGINE}"];
|
|
$tbl2 = new dblayeroo ($dbconfig["dsn"], $dbconfig["username"],
|
|
$dbconfig["password"], $dbconfig["driver_options"]);
|
|
$tbl2->table ("usersoo");
|
|
$tbl2->fields (array ("uid"=>array ("integer", "not null", "autoincrement"),
|
|
"gecos"=>array ("varchar(255)", "not null"),
|
|
"password"=>array ("varchar(255)", "not null"),
|
|
"group" => array ("varchar(255)", "not null"),
|
|
));
|
|
$tbl2->unique (array ("gecos","password"));
|
|
$tbl2->primary ("uid");
|
|
$tbl2->foreign (array ("group" => array ("groupedoo", "group",
|
|
"ON DELETE CASCADE")));
|
|
return $tbl2;
|
|
}
|
|
|
|
private function tbl3 ()
|
|
{
|
|
$dbconfig = $this->confs["{ENGINE}"];
|
|
$tbl3 = new dblayeroo ($dbconfig["dsn"], $dbconfig["username"],
|
|
$dbconfig["password"], $dbconfig["driver_options"]);
|
|
return $tbl3;
|
|
}
|
|
|
|
private function tbl4 ()
|
|
{
|
|
$dbconfig = $this->confs["{ENGINE}"];
|
|
$tbl4 = new dblayeroo ($dbconfig["dsn"], $dbconfig["username"],
|
|
$dbconfig["password"], $dbconfig["driver_options"]);
|
|
$tbl4->table ("rightsoo");
|
|
$tbl4->fields (array ("id"=>array ("integer", "not null", "autoincrement"),
|
|
"name"=>array ("varchar(255)", "not null"),
|
|
"group" => array ("varchar(255)", "not null"),
|
|
));
|
|
$tbl4->unique (array ("name"));
|
|
$tbl4->primary ("id");
|
|
$tbl4->foreign (array ("group" => array ("groupedoo", "group",
|
|
"ON DELETE CASCADE")));
|
|
return $tbl4;
|
|
}
|
|
|
|
public function test_dropTable ()
|
|
{
|
|
$dbconfig = $this->confs["{ENGINE}"];
|
|
$db = new dblayeroo ($dbconfig["dsn"], $dbconfig["username"],
|
|
$dbconfig["password"], $dbconfig["driver_options"]);
|
|
foreach (array ("rightsoo", "usersoo", "groupedoo",
|
|
"multipleoo", "multiple2oo", "users3oo",
|
|
"readORoo") as
|
|
$table)
|
|
{
|
|
$db->table ($table);
|
|
try
|
|
{
|
|
$res = $db->dropTable();
|
|
}
|
|
catch (Exception $e)
|
|
{
|
|
}
|
|
}
|
|
$db->disconnect ();
|
|
// Never generate an error, just drop the table if it exists, and do noting
|
|
// if it doesn't exists
|
|
}
|
|
|
|
public function test_createTable1 ()
|
|
{
|
|
// Create a table named groupedoo
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $tbl1->createTable ();
|
|
$tbl1->disconnect ();
|
|
$this->assertSame (0, $res);
|
|
}
|
|
|
|
public function test_createTable2 ()
|
|
{
|
|
// Create a table named usersoo
|
|
$tbl2 = $this->tbl2 ();
|
|
$res = $tbl2->createTable ();
|
|
$tbl2->disconnect ();
|
|
$this->assertSame (0, $res);
|
|
}
|
|
|
|
public function test_createTable4 ()
|
|
{
|
|
// Create a table named rightsoo
|
|
$tbl4 = $this->tbl4 ();
|
|
$res = $tbl4->createTable ();
|
|
$tbl4->disconnect ();
|
|
$this->assertSame (0, $res);
|
|
}
|
|
|
|
public function test_select1 ()
|
|
{
|
|
// Select all on the table : nothing
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $tbl1->select()->execute ();
|
|
$tbl1->disconnect ();
|
|
$this->assertSame (array (), $res);
|
|
}
|
|
|
|
public function test_insert1 ()
|
|
{
|
|
// Insert without value : raise an exception
|
|
$this->setExpectedException ("Exception");
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $tbl1->insert()->execute ();
|
|
$tbl1->disconnect ();
|
|
}
|
|
|
|
public function test_insert2 ()
|
|
{
|
|
// Insert : missing not null field : exception
|
|
$this->setExpectedException ("Exception");
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $tbl1->insert()
|
|
->setValues(array ("group"=>"group1", "where"=>"where"))
|
|
->execute ();
|
|
$tbl1->disconnect ();
|
|
}
|
|
|
|
public function test_insert3 ()
|
|
{
|
|
// Insert : first row inserted
|
|
$tbl1 = $this->tbl1 ();
|
|
// Normalize the value to be inserted too
|
|
$res = $tbl1->insert()->setValues(array ("group"=>" group1 ",
|
|
"where"=>"where",
|
|
"object"=>"object"))->execute ();
|
|
$tbl1->disconnect ();
|
|
// As the key is not an autoincrement, the lastInsertID can be 0 or 1
|
|
$this->assertSame ($res, "group1");
|
|
}
|
|
|
|
public function test_select2 ()
|
|
{
|
|
// Select all on the table : nothing
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $tbl1->select()->execute ();
|
|
$tbl1->disconnect ();
|
|
$this->assertSame (array (array ("group"=>"group1", "object"=>"object",
|
|
"where"=>"where", "with space"=>null)),
|
|
$res);
|
|
}
|
|
|
|
public function test_update1 ()
|
|
{
|
|
// update the all the rows of the table (without WHERE)
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $tbl1->update()->setValues(array ("group"=>"group2",
|
|
"where"=>"where",
|
|
"object"=>"object"))->execute ();
|
|
$tbl1->disconnect ();
|
|
$this->assertSame (1, $res);
|
|
}
|
|
|
|
public function test_select3 ()
|
|
{
|
|
// Select all on the table after update
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $tbl1->select()->execute ();
|
|
$tbl1->disconnect ();
|
|
$this->assertSame (array (array ("group"=>"group2", "object"=>"object",
|
|
"where"=>"where", "with space"=>null)),
|
|
$res);
|
|
}
|
|
|
|
public function test_update2 ()
|
|
{
|
|
// update the all the rows of the table (with inexisting WHERE)
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $tbl1->update()
|
|
->setValues(array ("group"=>"group2", "where"=>"where",
|
|
"object"=>"object"))
|
|
->whereAdd ("group", "=", "group1")
|
|
->execute ();
|
|
$tbl1->disconnect ();
|
|
$this->assertSame (0, $res);
|
|
}
|
|
|
|
public function test_update3 ()
|
|
{
|
|
// update the all the rows of the table (with existing WHERE)
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $tbl1->update()
|
|
->setValues(array ("group"=>"group1", "where"=>"where",
|
|
"object"=>"object"))
|
|
->whereAdd ("group", "=", "group2")
|
|
->execute ();
|
|
$tbl1->disconnect ();
|
|
$this->assertSame (1, $res);
|
|
}
|
|
|
|
public function test_update4 ()
|
|
{
|
|
// update the all the rows of the table : NOT NULL value not provided
|
|
// (already existing in the table)
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $tbl1->update()
|
|
->setValues(array ("group"=>"group1"))
|
|
->execute ();
|
|
$tbl1->disconnect ();
|
|
$this->assertSame (1, $res);
|
|
}
|
|
|
|
public function test_delete1 ()
|
|
{
|
|
// Delete : WHERE return nothing
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $tbl1->delete ()
|
|
->whereAdd ("group", "=", "group2")
|
|
->execute ();
|
|
$tbl1->disconnect ();
|
|
$this->assertSame (0, $res);
|
|
}
|
|
|
|
public function test_delete2 ()
|
|
{
|
|
// Delete all
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $tbl1->delete ()
|
|
->execute ();
|
|
$tbl1->disconnect ();
|
|
$this->assertSame (1, $res);
|
|
}
|
|
|
|
public function test_select4 ()
|
|
{
|
|
// Select all on the table : nothing
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $tbl1->select()->execute ();
|
|
$tbl1->disconnect ();
|
|
$this->assertSame (array (), $res);
|
|
}
|
|
|
|
public function test_insert5 ()
|
|
{
|
|
// Insert : first row inserted for TABLE 2 tests
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $tbl1->insert()->setValues(array ("group"=>"group1",
|
|
"where"=>"where",
|
|
"object"=>"object"))->execute ();
|
|
$tbl1->disconnect ();
|
|
// As the key is not an autoincrement, the lastInsertID can be 0 or 1
|
|
$this->assertSame ($res, "group1");
|
|
}
|
|
|
|
///////////////////
|
|
/// TABLE 2 ///
|
|
///////////////////
|
|
public function test_insertAutoincrement1 ()
|
|
{
|
|
// Test autoincrement
|
|
$tbl1 = $this->tbl1 ();
|
|
$tbl2 = $this->tbl2 ();
|
|
$tbl2->setForeignObj ($tbl1);
|
|
$res = $tbl2->insert()->setValues(array ("gecos"=>"name",
|
|
"password"=>"toto",
|
|
"group"=>"group1"))->execute ();
|
|
$tbl1->disconnect ();
|
|
$tbl2->disconnect ();
|
|
$this->assertSame ("1", $res);
|
|
}
|
|
|
|
public function test_insertAutoincrement2 ()
|
|
{
|
|
// Test autoincrement
|
|
$tbl1 = $this->tbl1 ();
|
|
$tbl2 = $this->tbl2 ();
|
|
$tbl2->setForeignObj ($tbl1);
|
|
$res = $tbl2->insert()->setValues(array ("gecos"=>"firstname2",
|
|
"password"=>"toto2",
|
|
"group"=>"group1"))->execute ();
|
|
$tbl1->disconnect ();
|
|
$tbl2->disconnect ();
|
|
$this->assertSame ("2", $res);
|
|
}
|
|
|
|
public function test_insertAutoincrement3 ()
|
|
{
|
|
// Test autoincrement
|
|
$tbl1 = $this->tbl1 ();
|
|
$tbl2 = $this->tbl2 ();
|
|
$tbl2->setForeignObj ($tbl1);
|
|
$res = $tbl2->insert()->setValues(array ("gecos"=>"firstname3",
|
|
"password"=>"toto3",
|
|
"group"=>"group1"))->execute ();
|
|
$tbl1->disconnect ();
|
|
$tbl2->disconnect ();
|
|
$this->assertSame ("3", $res);
|
|
}
|
|
|
|
public function test_delete3 ()
|
|
{
|
|
// Delete with WHERE clause
|
|
$tbl1 = $this->tbl1 ();
|
|
$tbl2 = $this->tbl2 ();
|
|
$tbl2->setForeignObj ($tbl1);
|
|
$res = $tbl2->delete ()
|
|
->whereAdd ("gecos", "LIKE", "firstname%")
|
|
->execute ();
|
|
$tbl1->disconnect ();
|
|
$tbl2->disconnect ();
|
|
$this->assertSame (2, $res);
|
|
}
|
|
|
|
public function test_select5 ()
|
|
{
|
|
// Select all on the table : one entry "gecos"=>"name"
|
|
$tbl1 = $this->tbl1 ();
|
|
$tbl2 = $this->tbl2 ();
|
|
$tbl2->setForeignObj ($tbl1);
|
|
$res = $tbl2->select()->execute ();
|
|
$tbl1->disconnect ();
|
|
$tbl2->disconnect ();
|
|
$this->assertSame (array (array ("uid"=>1,
|
|
"gecos"=>"name",
|
|
"password"=>"toto",
|
|
"group"=>"group1")), $res);
|
|
}
|
|
|
|
/// SCHEMA MANAGEMENT ///
|
|
public function test_getTableSchema1 ()
|
|
{
|
|
$tbl3 = $this->tbl3 ();
|
|
$res = $tbl3->getTableSchema ("usersoo");
|
|
$tbl3->disconnect ();
|
|
$this->assertSame (
|
|
array ("table" => "usersoo",
|
|
"fields" => array (
|
|
"uid" => array ("integer", "not null", "autoincrement"),
|
|
"gecos" => array ("varchar(255)", "not null"),
|
|
"password" => array ("varchar(255)", "not null"),
|
|
"group" => array ("varchar(255)", "not null"),
|
|
),
|
|
"primary" => "uid",
|
|
"unique" => array ("gecos","password","uid"),
|
|
"foreign" => array (
|
|
"group" => array ('groupedoo', 'group', 'ON DELETE CASCADE'),
|
|
),
|
|
"foreignUsed" => array (
|
|
),
|
|
), $res);
|
|
}
|
|
|
|
public function test_getTableSchema2 ()
|
|
{
|
|
$tbl3 = $this->tbl3 ();
|
|
$res = $tbl3->getTableSchema ("groupedoo");
|
|
$tbl3->disconnect ();
|
|
$this->assertSame (
|
|
array (
|
|
"table" => "groupedoo",
|
|
"fields" => array (
|
|
"group" => array ("varchar(255)", "not null"),
|
|
"object" => array ("varchar(255)", "not null"),
|
|
"where" => array ("varchar(255)", "not null"),
|
|
"with space" => array ("varchar(255)")),
|
|
"primary" => "group",
|
|
"unique" => array ("group"),
|
|
"foreign" => array (),
|
|
"foreignUsed" => array (
|
|
"group" => array (
|
|
array ("rightsoo", "group"),
|
|
array ("usersoo", "group"),
|
|
),
|
|
),
|
|
), $res);
|
|
}
|
|
|
|
// JOINS
|
|
public function test_insertJoin1 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$tbl1->insert()
|
|
->setValues(array ("group"=>"group2",
|
|
"object"=>"object",
|
|
"where"=>"where"))
|
|
->execute ();
|
|
$tbl2 = $this->tbl2 ();
|
|
$tbl2->setForeignObj ($tbl1);
|
|
$res = $tbl2->insert()
|
|
->setValues(array ("gecos"=>"name2",
|
|
"password"=>"pwd2",
|
|
"group"=>"group1"))
|
|
->execute ();
|
|
$res = $tbl2->insert()
|
|
->setValues(array ("gecos"=>"name3",
|
|
"password"=>"pwd3",
|
|
"group"=>"group1"))
|
|
->execute ();
|
|
$res = $tbl2->insert()
|
|
->setValues(array ("gecos"=>"name4",
|
|
"password"=>"pwd4",
|
|
"group"=>"group1"))
|
|
->execute ();
|
|
$tbl1->disconnect ();
|
|
$tbl2->disconnect ();
|
|
}
|
|
|
|
public function test_innerJoin1 ()
|
|
{
|
|
// No filter
|
|
$tbl1 = $this->tbl1 ();
|
|
$tbl2 = $this->tbl2 ();
|
|
$res = $tbl2->select ()
|
|
->joinInner ($tbl1, array ("group"=>"group"))
|
|
->execute ();
|
|
$tbl1->disconnect ();
|
|
$tbl2->disconnect ();
|
|
$this->assertSame (array (
|
|
array (
|
|
'usersoo.uid' => 1,
|
|
'usersoo.gecos' => 'name',
|
|
'usersoo.password' => 'toto',
|
|
'usersoo.group' => 'group1',
|
|
'groupedoo.group' => 'group1',
|
|
'groupedoo.object' => 'object',
|
|
'groupedoo.where' => 'where',
|
|
'groupedoo.with space' => NULL,
|
|
),
|
|
array (
|
|
'usersoo.uid' => 4,
|
|
'usersoo.gecos' => 'name2',
|
|
'usersoo.password' => 'pwd2',
|
|
'usersoo.group' => 'group1',
|
|
'groupedoo.group' => 'group1',
|
|
'groupedoo.object' => 'object',
|
|
'groupedoo.where' => 'where',
|
|
'groupedoo.with space' => NULL,
|
|
),
|
|
array (
|
|
'usersoo.uid' => 5,
|
|
'usersoo.gecos' => 'name3',
|
|
'usersoo.password' => 'pwd3',
|
|
'usersoo.group' => 'group1',
|
|
'groupedoo.group' => 'group1',
|
|
'groupedoo.object' => 'object',
|
|
'groupedoo.where' => 'where',
|
|
'groupedoo.with space' => NULL,
|
|
),
|
|
array (
|
|
'usersoo.uid' => 6,
|
|
'usersoo.gecos' => 'name4',
|
|
'usersoo.password' => 'pwd4',
|
|
'usersoo.group' => 'group1',
|
|
'groupedoo.group' => 'group1',
|
|
'groupedoo.object' => 'object',
|
|
'groupedoo.where' => 'where',
|
|
'groupedoo.with space' => NULL,
|
|
),
|
|
), $res);
|
|
}
|
|
|
|
public function test_innerJoin2 ()
|
|
{
|
|
// No filter. Manage the empty displayAdd
|
|
$tbl1 = $this->tbl1 ();
|
|
$tbl1->displayAdd ();
|
|
$tbl2 = $this->tbl2 ();
|
|
$res = $tbl2->select ()
|
|
->joinInner ($tbl1, array ("group"=>"group"))
|
|
->execute ();
|
|
$tbl1->disconnect ();
|
|
$tbl2->disconnect ();
|
|
$this->assertSame (array (
|
|
array (
|
|
'uid' => 1,
|
|
'gecos' => 'name',
|
|
'password' => 'toto',
|
|
'group' => 'group1',
|
|
),
|
|
array (
|
|
'uid' => 4,
|
|
'gecos' => 'name2',
|
|
'password' => 'pwd2',
|
|
'group' => 'group1',
|
|
),
|
|
array (
|
|
'uid' => 5,
|
|
'gecos' => 'name3',
|
|
'password' => 'pwd3',
|
|
'group' => 'group1',
|
|
),
|
|
array (
|
|
'uid' => 6,
|
|
'gecos' => 'name4',
|
|
'password' => 'pwd4',
|
|
'group' => 'group1',
|
|
),
|
|
), $res);
|
|
}
|
|
|
|
public function test_innerJoin3 ()
|
|
{
|
|
// No filter. Manage the empty displayAdd
|
|
$tbl1 = $this->tbl1 ();
|
|
$tbl2 = $this->tbl2 ();
|
|
$tbl2->displayAdd ();
|
|
$res = $tbl2->select ()
|
|
->joinInner ($tbl1, array ("group"=>"group"))
|
|
->execute ();
|
|
$tbl1->disconnect ();
|
|
$tbl2->disconnect ();
|
|
$this->assertSame (array (
|
|
array (
|
|
'group' => 'group1',
|
|
'object' => 'object',
|
|
'where' => 'where',
|
|
'with space' => NULL,
|
|
),
|
|
array (
|
|
'group' => 'group1',
|
|
'object' => 'object',
|
|
'where' => 'where',
|
|
'with space' => NULL,
|
|
),
|
|
array (
|
|
'group' => 'group1',
|
|
'object' => 'object',
|
|
'where' => 'where',
|
|
'with space' => NULL,
|
|
),
|
|
array (
|
|
'group' => 'group1',
|
|
'object' => 'object',
|
|
'where' => 'where',
|
|
'with space' => NULL,
|
|
),
|
|
), $res);
|
|
}
|
|
|
|
public function test_leftJoin2 ()
|
|
{
|
|
// No filter
|
|
$tbl1 = $this->tbl1 ();
|
|
$tbl2 = $this->tbl2 ();
|
|
$res = $tbl1->select ()
|
|
->joinLeft ($tbl2, array ("group"=>"group"))
|
|
->execute ();
|
|
$tbl1->disconnect ();
|
|
$tbl2->disconnect ();
|
|
$this->assertSame (array (
|
|
array (
|
|
'groupedoo.group' => 'group1',
|
|
'groupedoo.object' => 'object',
|
|
'groupedoo.where' => 'where',
|
|
'groupedoo.with space' => NULL,
|
|
'usersoo.uid' => 1,
|
|
'usersoo.gecos' => 'name',
|
|
'usersoo.password' => 'toto',
|
|
'usersoo.group' => 'group1',
|
|
),
|
|
array (
|
|
'groupedoo.group' => 'group1',
|
|
'groupedoo.object' => 'object',
|
|
'groupedoo.where' => 'where',
|
|
'groupedoo.with space' => NULL,
|
|
'usersoo.uid' => 4,
|
|
'usersoo.gecos' => 'name2',
|
|
'usersoo.password' => 'pwd2',
|
|
'usersoo.group' => 'group1',
|
|
),
|
|
array (
|
|
'groupedoo.group' => 'group1',
|
|
'groupedoo.object' => 'object',
|
|
'groupedoo.where' => 'where',
|
|
'groupedoo.with space' => NULL,
|
|
'usersoo.uid' => 5,
|
|
'usersoo.gecos' => 'name3',
|
|
'usersoo.password' => 'pwd3',
|
|
'usersoo.group' => 'group1',
|
|
),
|
|
array (
|
|
'groupedoo.group' => 'group1',
|
|
'groupedoo.object' => 'object',
|
|
'groupedoo.where' => 'where',
|
|
'groupedoo.with space' => NULL,
|
|
'usersoo.uid' => 6,
|
|
'usersoo.gecos' => 'name4',
|
|
'usersoo.password' => 'pwd4',
|
|
'usersoo.group' => 'group1',
|
|
),
|
|
array (
|
|
'groupedoo.group' => 'group2',
|
|
'groupedoo.object' => 'object',
|
|
'groupedoo.where' => 'where',
|
|
'groupedoo.with space' => NULL,
|
|
'usersoo.uid' => NULL,
|
|
'usersoo.gecos' => NULL,
|
|
'usersoo.password' => NULL,
|
|
'usersoo.group' => NULL,
|
|
),
|
|
), $res);
|
|
}
|
|
|
|
public function test_leftJoin3 ()
|
|
{
|
|
// Filter on the tbl1, do not display tbl2
|
|
$tbl1 = $this->tbl1 ();
|
|
$tbl2 = $this->tbl2 ();
|
|
$tbl2->displayAdd ();
|
|
$res = $tbl1->select ()
|
|
->displayAdd ("group")
|
|
->joinLeft ($tbl2, array ("group"=>"group"))
|
|
->orderAdd ("group", "ASC")
|
|
->execute ();
|
|
$tbl1->disconnect ();
|
|
$tbl2->disconnect ();
|
|
$this->assertSame (array (
|
|
array (
|
|
'group' => 'group1',
|
|
),
|
|
array (
|
|
'group' => 'group1',
|
|
),
|
|
array (
|
|
'group' => 'group1',
|
|
),
|
|
array (
|
|
'group' => 'group1',
|
|
),
|
|
array (
|
|
'group' => 'group2',
|
|
),
|
|
), $res);
|
|
}
|
|
|
|
public function test_leftJoin4 ()
|
|
{
|
|
// Filter on the tbl1, display one column in tbl2
|
|
$tbl1 = $this->tbl1 ();
|
|
$tbl2 = $this->tbl2 ();
|
|
$tbl2->displayAdd ("group");
|
|
$res = $tbl1->select ()
|
|
->displayAdd ("group")
|
|
->joinLeft ($tbl2, array ("group"=>"group"))
|
|
->orderAdd ("group", "DESC")
|
|
->execute ();
|
|
$tbl1->disconnect ();
|
|
$tbl2->disconnect ();
|
|
$this->assertSame (array (
|
|
array (
|
|
'usersoo.group' => NULL,
|
|
'groupedoo.group' => 'group2',
|
|
),
|
|
array (
|
|
'usersoo.group' => 'group1',
|
|
'groupedoo.group' => 'group1',
|
|
),
|
|
array (
|
|
'usersoo.group' => 'group1',
|
|
'groupedoo.group' => 'group1',
|
|
),
|
|
array (
|
|
'usersoo.group' => 'group1',
|
|
'groupedoo.group' => 'group1',
|
|
),
|
|
array (
|
|
'usersoo.group' => 'group1',
|
|
'groupedoo.group' => 'group1',
|
|
),
|
|
), $res);
|
|
}
|
|
|
|
public function test_leftJoin5 ()
|
|
{
|
|
// Filter on the tbl1 and add order in full mode
|
|
$tbl1 = $this->tbl1 ();
|
|
$tbl2 = $this->tbl2 ();
|
|
$tbl2->displayAdd ("group");
|
|
$res = $tbl1->select ()
|
|
->displayAdd ("group")
|
|
->joinLeft ($tbl2, array ("group"=>"group"))
|
|
->orderAdd ("group", "DESC")
|
|
->execute ();
|
|
$tbl1->disconnect ();
|
|
$tbl2->disconnect ();
|
|
$this->assertSame (array (
|
|
array (
|
|
'usersoo.group' => NULL,
|
|
'groupedoo.group' => 'group2',
|
|
),
|
|
array (
|
|
'usersoo.group' => 'group1',
|
|
'groupedoo.group' => 'group1',
|
|
),
|
|
array (
|
|
'usersoo.group' => 'group1',
|
|
'groupedoo.group' => 'group1',
|
|
),
|
|
array (
|
|
'usersoo.group' => 'group1',
|
|
'groupedoo.group' => 'group1',
|
|
),
|
|
array (
|
|
'usersoo.group' => 'group1',
|
|
'groupedoo.group' => 'group1',
|
|
),
|
|
), $res);
|
|
}
|
|
|
|
/// THREE TABLES ///
|
|
public function test_insert6 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$tbl4 = $this->tbl4 ();
|
|
$tbl4->setForeignObj ($tbl1);
|
|
$res = $tbl4->insert ()
|
|
->setValues(array ("name"=>"RO",
|
|
"group"=>"group1"))
|
|
->execute ();
|
|
$tbl4->disconnect ();
|
|
// As the key is not an autoincrement, the lastInsertID can be 0 or 1
|
|
$this->assertGreaterThanOrEqual ($res, "0");
|
|
}
|
|
|
|
public function test_leftJoin6 ()
|
|
{
|
|
// Two joins tables in left join
|
|
$tbl1 = $this->tbl1 (); // Do not display anything from groupedoo
|
|
$tbl1->displayAdd ("group")
|
|
->orderAdd ("group", "DESC");
|
|
|
|
$tbl2 = $this->tbl2 (); // Display the gecos and group from usersoo
|
|
$tbl2->displayAdd ("gecos")
|
|
->orderAdd ("gecos", "ASC");
|
|
|
|
$tbl4 = $this->tbl4 (); // Display the name in rightsoo
|
|
$tbl4->displayAdd ("name");
|
|
$tbl1->joinLeft ($tbl4, array ("group"=>"group"));
|
|
$res = $tbl1->select ()
|
|
->joinLeft ($tbl2, array ("group"=>"group"))
|
|
->execute ();
|
|
$tbl1->disconnect ();
|
|
$tbl2->disconnect ();
|
|
$tbl4->disconnect ();
|
|
$this->assertSame (array (
|
|
array (
|
|
'groupedoo.group' => 'group2',
|
|
'usersoo.gecos' => NULL,
|
|
'rightsoo.name' => NULL,
|
|
),
|
|
array (
|
|
'groupedoo.group' => 'group1',
|
|
'usersoo.gecos' => 'name',
|
|
'rightsoo.name' => 'RO',
|
|
),
|
|
array (
|
|
'groupedoo.group' => 'group1',
|
|
'usersoo.gecos' => 'name2',
|
|
'rightsoo.name' => 'RO',
|
|
),
|
|
array (
|
|
'groupedoo.group' => 'group1',
|
|
'usersoo.gecos' => 'name3',
|
|
'rightsoo.name' => 'RO',
|
|
),
|
|
array (
|
|
'groupedoo.group' => 'group1',
|
|
'usersoo.gecos' => 'name4',
|
|
'rightsoo.name' => 'RO',
|
|
),
|
|
), $res);
|
|
}
|
|
|
|
public function test_sortOrder1 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $tbl1->getSortOrder ();
|
|
$tbl1->disconnect ();
|
|
$this->assertSame ("order1", $res);
|
|
}
|
|
|
|
public function test_sortOrder2 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$tbl1->getSortOrder ();
|
|
$res = $tbl1->getSortOrder ();
|
|
$tbl1->disconnect ();
|
|
$this->assertSame ("order2", $res);
|
|
}
|
|
|
|
public function test_sortOrder3 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$tbl2 = $this->tbl2 ();
|
|
$tbl1->getSortOrder ();
|
|
$tbl1->getSortOrder ();
|
|
$res = $tbl2->getSortOrder ();
|
|
$tbl1->disconnect ();
|
|
$tbl2->disconnect ();
|
|
$this->assertSame ("order3", $res);
|
|
}
|
|
|
|
public function test_displayAdd_NotFull1 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$tbl1->displayAdd ("group");
|
|
$res = $tbl1->displayGet ();
|
|
$tbl1->disconnect ();
|
|
$this->assertSame (array ("order1" => $tbl1->sep()."group".$tbl1->sep()),
|
|
$res);
|
|
}
|
|
|
|
public function test_displayAdd_NotFull2 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$tbl1->displayAdd ("distinct group");
|
|
$res = $tbl1->displayGet ();
|
|
$tbl1->disconnect ();
|
|
$this->assertSame (array (
|
|
"order1" => "DISTINCT ".$tbl1->sep()."group".$tbl1->sep()), $res);
|
|
}
|
|
|
|
public function test_displayAdd_NotFull3 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$tbl1->displayAdd ("group_concat ( group ) ");
|
|
$res = $tbl1->displayGet ();
|
|
$tbl1->disconnect ();
|
|
if ($this->engine === "pgsql")
|
|
$this->assertSame (array (
|
|
"order1" => "string_agg(".$tbl1->sep()."group".$tbl1->sep().
|
|
"::character varying, ',' order by \"group\"".
|
|
")"), $res);
|
|
else
|
|
$this->assertSame (array (
|
|
"order1" => "GROUP_CONCAT(".$tbl1->sep()."group".$tbl1->sep().")"), $res);
|
|
}
|
|
|
|
public function test_displayAdd_NotFull4 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$tbl1->displayAdd ("group_concat (distinct group ) ");
|
|
$res = $tbl1->displayGet ();
|
|
$tbl1->disconnect ();
|
|
if ($this->engine === "pgsql")
|
|
$this->assertSame (array (
|
|
"order1" => "string_agg(DISTINCT ".
|
|
$tbl1->sep()."group".$tbl1->sep().
|
|
"::character varying, ',' order by \"group\"".
|
|
")"), $res);
|
|
else
|
|
$this->assertSame (array (
|
|
"order1" => "GROUP_CONCAT(DISTINCT ".
|
|
$tbl1->sep()."group".$tbl1->sep().")"), $res);
|
|
}
|
|
|
|
public function test_displayAdd_NotFull5 ()
|
|
{
|
|
// With alias
|
|
$tbl1 = $this->tbl1 ();
|
|
$tbl1->displayAdd ("group_concat (distinct group ) ", "Group Alias");
|
|
$res = $tbl1->displayGet ();
|
|
$tbl1->disconnect ();
|
|
if ($this->engine === "pgsql")
|
|
$this->assertSame (array (
|
|
"order1" => "string_agg(DISTINCT ".
|
|
$tbl1->sep()."group".$tbl1->sep().
|
|
"::character varying, ',' order by ".
|
|
$tbl1->sep()."group".$tbl1->sep().
|
|
") AS ".
|
|
$tbl1->sep()."Group Alias".$tbl1->sep()), $res);
|
|
else
|
|
$this->assertSame (array (
|
|
"order1" => "GROUP_CONCAT(DISTINCT ".
|
|
$tbl1->sep()."group".$tbl1->sep().") AS ".
|
|
$tbl1->sep()."Group Alias".$tbl1->sep()), $res);
|
|
}
|
|
|
|
public function test_displayAdd_Full1 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$tbl1->displayAdd ("group");
|
|
$res = $tbl1->displayGet (true);
|
|
$tbl1->disconnect ();
|
|
$this->assertSame (array (
|
|
"order1" => $tbl1->sep()."groupedoo".$tbl1->sep().".".
|
|
$tbl1->sep()."group".$tbl1->sep()),
|
|
$res);
|
|
}
|
|
|
|
public function test_displayAdd_Full2 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$tbl1->displayAdd ("distinct group");
|
|
$res = $tbl1->displayGet (true);
|
|
$tbl1->disconnect ();
|
|
$this->assertSame (array (
|
|
"order1" => "DISTINCT ".$tbl1->sep()."groupedoo".$tbl1->sep().".".
|
|
$tbl1->sep()."group".$tbl1->sep()), $res);
|
|
}
|
|
|
|
public function test_displayAdd_Full3 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$tbl1->displayAdd ("group_concat ( group ) ");
|
|
$res = $tbl1->displayGet (true);
|
|
$tbl1->disconnect ();
|
|
if ($this->engine === "pgsql")
|
|
$this->assertSame (array (
|
|
"order1" => "string_agg(".$tbl1->sep()."groupedoo".$tbl1->sep().".".
|
|
$tbl1->sep()."group".$tbl1->sep().
|
|
"::character varying, ',' order by \"group\"".
|
|
")"), $res);
|
|
else
|
|
$this->assertSame (array (
|
|
"order1" => "GROUP_CONCAT(".$tbl1->sep()."groupedoo".$tbl1->sep().".".
|
|
$tbl1->sep()."group".$tbl1->sep().")"), $res);
|
|
}
|
|
|
|
public function test_displayAdd_Full4 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$tbl1->displayAdd ("group_concat (distinct group ) ");
|
|
$res = $tbl1->displayGet (true);
|
|
$tbl1->disconnect ();
|
|
if ($this->engine === "pgsql")
|
|
$this->assertSame (array (
|
|
"order1" => "string_agg(DISTINCT ".
|
|
$tbl1->sep()."groupedoo".$tbl1->sep().".".
|
|
$tbl1->sep()."group".$tbl1->sep().
|
|
"::character varying, ',' order by \"group\"".
|
|
")"), $res);
|
|
else
|
|
$this->assertSame (array (
|
|
"order1" => "GROUP_CONCAT(DISTINCT ".
|
|
$tbl1->sep()."groupedoo".$tbl1->sep().".".
|
|
$tbl1->sep()."group".$tbl1->sep().")"), $res);
|
|
}
|
|
|
|
public function test_displayAdd_Full5 ()
|
|
{
|
|
// With alias
|
|
$tbl1 = $this->tbl1 ();
|
|
$tbl1->displayAdd ("group_concat (distinct group ) ", "Group Alias");
|
|
$res = $tbl1->displayGet (true);
|
|
$tbl1->disconnect ();
|
|
if ($this->engine === "pgsql")
|
|
$this->assertSame (array (
|
|
"order1" => "string_agg(DISTINCT ".
|
|
$tbl1->sep()."groupedoo".$tbl1->sep().".".
|
|
$tbl1->sep()."group".$tbl1->sep().
|
|
"::character varying, ',' order by \"group\"".
|
|
") AS ".
|
|
$tbl1->sep()."Group Alias".$tbl1->sep()), $res);
|
|
else
|
|
$this->assertSame (array (
|
|
"order1" => "GROUP_CONCAT(DISTINCT ".
|
|
$tbl1->sep()."groupedoo".$tbl1->sep().".".
|
|
$tbl1->sep()."group".$tbl1->sep().") AS ".
|
|
$tbl1->sep()."Group Alias".$tbl1->sep()), $res);
|
|
}
|
|
|
|
public function test_displayAdd_Multiple1 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$tbl1->displayAdd ("group");
|
|
$tbl1->displayAdd ("where");
|
|
$res = $tbl1->displayGet ();
|
|
$tbl1->disconnect ();
|
|
$this->assertSame (array ("order1" => $tbl1->sep()."group".$tbl1->sep(),
|
|
"order2" => $tbl1->sep()."where".$tbl1->sep(),),
|
|
$res);
|
|
}
|
|
|
|
|
|
public function test_update5 ()
|
|
{
|
|
// Manage to update the non unique fields
|
|
// the "where" column is not unique, so it allow to have twice the same
|
|
// value
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $tbl1->update()
|
|
->setValues(array ("where"=>"where2"))
|
|
->execute ();
|
|
$tbl1->disconnect ();
|
|
$this->assertSame (2, $res);
|
|
}
|
|
|
|
public function test_update6 ()
|
|
{
|
|
// Manage to update the primary / unique fields
|
|
// There is 2 lines in the DB, so the unique key "group" can not be updated
|
|
// with the same value twice (the result can not be unique)
|
|
$tbl1 = $this->tbl1 ();
|
|
$this->setExpectedException ("Exception");
|
|
$res = $tbl1->update()
|
|
->setValues(array ("group"=>"group3"))
|
|
->execute ();
|
|
$tbl1->disconnect ();
|
|
}
|
|
|
|
public function test_displayAdd_ComaFields1 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$tbl1->displayAdd ("group_concat (group ),group ",
|
|
"Group Alias,Group2");
|
|
$res = $tbl1->select ()
|
|
->execute ();
|
|
$tbl1->disconnect ();
|
|
if ($this->engine !== "pgsql")
|
|
$this->assertSame (array (
|
|
array ('Group Alias' => 'group1',
|
|
'Group2' => 'group1',),
|
|
array ('Group Alias' => 'group2',
|
|
'Group2' => 'group2',),
|
|
), $res);
|
|
}
|
|
|
|
public function test_displayAdd_DISTINCT1 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $tbl1->select ()
|
|
->displayAdd ("distinct where", "ALIAS")
|
|
->execute ();
|
|
$tbl1->disconnect ();
|
|
$this->assertSame (array (0=>array ("ALIAS"=>"where2")),
|
|
$res);
|
|
}
|
|
|
|
public function test_orderAdd_alias1 ()
|
|
{
|
|
$tbl2 = $this->tbl2 ();
|
|
$res = $tbl2->select ()
|
|
->displayAdd ("uid", "max")
|
|
->orderAdd ("max","ASC")
|
|
->execute ();
|
|
$tbl2->disconnect ();
|
|
$this->assertSame (array (
|
|
array ('max' => 1),
|
|
array ('max' => 4),
|
|
array ('max' => 5),
|
|
array ('max' => 6),
|
|
), $res);
|
|
}
|
|
|
|
public function test_displayAdd_MAX_GROUPBY1 ()
|
|
{
|
|
$tbl2 = $this->tbl2 ();
|
|
$res = $tbl2->select ()
|
|
->displayAdd ("MAX(uid)", "max")
|
|
->displayAdd ("gecos")
|
|
->orderAdd ("max","ASC")
|
|
->execute ();
|
|
$tbl2->disconnect ();
|
|
$this->assertSame (array (
|
|
array ('max' => 1, 'gecos' => 'name'),
|
|
array ('max' => 4, 'gecos' => 'name2'),
|
|
array ('max' => 5, 'gecos' => 'name3'),
|
|
array ('max' => 6, 'gecos' => 'name4')),
|
|
$res);
|
|
}
|
|
|
|
public function test_displayAdd_MAX_GROUPBY2 ()
|
|
{
|
|
$tbl2 = $this->tbl2 ();
|
|
$res = $tbl2->select ()
|
|
->displayAdd ("MAX(uid)")
|
|
->execute ();
|
|
$tbl2->disconnect ();
|
|
$this->assertSame (array (array ('MAX(uid)' => 6)), $res);
|
|
}
|
|
|
|
public function test_displayAdd_MAX_GROUPBY3 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$tbl2 = $this->tbl2 ();
|
|
$tbl1->select ()
|
|
->displayAdd ("group");
|
|
$res = $tbl2->select ()
|
|
->displayAdd ("MAX(uid)")
|
|
->joinInner ($tbl1, array ("group"=>"group"))
|
|
->execute ();
|
|
$tbl2->disconnect ();
|
|
$this->assertSame (array (array (
|
|
'groupedoo.group' => 'group1',
|
|
'MAX(usersoo.uid)' => 6,
|
|
)), $res);
|
|
}
|
|
|
|
public function test_GROUPCONCATwithAlias1 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $tbl1->select ()
|
|
->displayAdd ("GROUP_CONCAT(group)", "groups")
|
|
->execute ();
|
|
$this->assertSame (array (array (
|
|
'groups' => 'group1,group2'
|
|
)), $res);
|
|
}
|
|
|
|
public function test_GROUPCONCATwithAlias2 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $tbl1->select ()
|
|
->displayAdd ("GROUP_CONCAT(group,',')", "groups")
|
|
->execute ();
|
|
$this->assertSame (array (array (
|
|
'groups' => 'group1,group2'
|
|
)), $res);
|
|
}
|
|
|
|
public function test_GROUPCONCATwithAlias3 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $tbl1->select ()
|
|
->displayAdd ("GROUP_CONCAT(group,' ')", "groups")
|
|
->execute ();
|
|
$this->assertSame (array (array (
|
|
'groups' => 'group1 group2'
|
|
)), $res);
|
|
}
|
|
|
|
public function test_listTables_1 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $tbl1->listTables ();
|
|
if ($this->engine === "sqlite")
|
|
$this->assertSame (array (
|
|
0 => 'groupedoo',
|
|
1 => 'rightsoo',
|
|
2 => 'usersoo',
|
|
), $res);
|
|
else
|
|
$this->assertSame (array (
|
|
0 => 'grouped',
|
|
1 => 'groupedoo',
|
|
2 => 'multiple',
|
|
3 => 'multiple2',
|
|
4 => 'readOR',
|
|
5 => 'rightsoo',
|
|
6 => 'users',
|
|
7 => 'users3',
|
|
8 => 'usersoo',
|
|
), $res);
|
|
}
|
|
|
|
//// CHECK REAL TYPES TESTS ////
|
|
public function test_checkRealType_integerPositive_1 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $this->invokeMethod ($tbl1, "checkRealType_integerPositive",
|
|
"1", "");
|
|
$this->assertSame (null, $res);
|
|
}
|
|
public function test_checkRealType_integerPositive_2 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $this->invokeMethod ($tbl1, "checkRealType_integerPositive",
|
|
"-1", "");
|
|
$this->assertSame ("Invalid positive integer : ".
|
|
"can not start by minus sign", $res);
|
|
}
|
|
public function test_checkRealType_integerPositive_3 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $this->invokeMethod ($tbl1, "checkRealType_integerPositive",
|
|
"0777", "");
|
|
$this->assertSame ("Invalid positive integer : ".
|
|
"can not start by Zero", $res);
|
|
}
|
|
public function test_checkRealType_integerPositive_4 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $this->invokeMethod ($tbl1, "checkRealType_integerPositive",
|
|
"07a7", "");
|
|
$this->assertSame ("Invalid positive integer : ".
|
|
"invalid char", $res);
|
|
}
|
|
|
|
public function test_checkRealType_allowedchars_1 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $this->invokeMethod ($tbl1, "checkRealType_allowedchars",
|
|
"1111", "allowedchars(123)");
|
|
$this->assertSame (null, $res);
|
|
}
|
|
public function test_checkRealType_allowedchars_2 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $this->invokeMethod ($tbl1, "checkRealType_allowedchars",
|
|
"-1", "allowedchars(123)");
|
|
$this->assertSame ("Invalid char provided", $res);
|
|
}
|
|
|
|
public function test_checkRealType_array_1 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $this->invokeMethod ($tbl1, "checkRealType_array",
|
|
"235", "array('123','235','256')");
|
|
$this->assertSame (null, $res);
|
|
}
|
|
public function test_checkRealType_array_2 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $this->invokeMethod ($tbl1, "checkRealType_array",
|
|
"777", "array('123','235','256')");
|
|
$this->assertSame ("Invalid value provided : not in allowed list", $res);
|
|
}
|
|
|
|
public function test_checkRealType_regex_1 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $this->invokeMethod ($tbl1, "checkRealType_regex",
|
|
"235", "regex(/^\\d+$/)");
|
|
$this->assertSame (null, $res);
|
|
}
|
|
public function test_checkRealType_regex_2 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $this->invokeMethod ($tbl1, "checkRealType_regex",
|
|
"235", "regex(/^\\d{3}$/)");
|
|
$this->assertSame (null, $res);
|
|
}
|
|
public function test_checkRealType_regex_3 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $this->invokeMethod ($tbl1, "checkRealType_regex",
|
|
"235", "regex(/^\\d{4}$/)");
|
|
$this->assertSame ("Invalid value provided : do not match the regex", $res);
|
|
}
|
|
public function test_checkRealType_regex_4 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $this->invokeMethod ($tbl1, "checkRealType_regex",
|
|
"abcdef", "regex(/^[a-z]+$/)");
|
|
$this->assertSame (null, $res);
|
|
}
|
|
public function test_checkRealType_regex_5 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $this->invokeMethod ($tbl1, "checkRealType_regex",
|
|
"Abcdef", "regex(/^[a-z]+$/)");
|
|
$this->assertSame ("Invalid value provided : do not match the regex", $res);
|
|
}
|
|
|
|
public function test_checkRealType_mail_1 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $this->invokeMethod ($tbl1, "checkRealType_mail",
|
|
"toto@example.com", "");
|
|
$this->assertSame (null, $res);
|
|
}
|
|
public function test_checkRealType_mail_2 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $this->invokeMethod ($tbl1, "checkRealType_mail",
|
|
"toto@", "");
|
|
$this->assertSame ("Invalid mail provided", $res);
|
|
}
|
|
|
|
public function test_checkRealType_uuid_1 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $this->invokeMethod ($tbl1, "checkRealType_uuid",
|
|
"4e799e3f-f376-46e5-a5db-85200949987e", "");
|
|
$this->assertSame (null, $res);
|
|
}
|
|
public function test_checkRealType_uuid_2 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $this->invokeMethod ($tbl1, "checkRealType_uuid",
|
|
"4E799E3F-F376-46E5-A5DB-85200949987E", "");
|
|
$this->assertSame (null, $res);
|
|
}
|
|
public function test_checkRealType_uuid_3 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $this->invokeMethod ($tbl1, "checkRealType_uuid",
|
|
"4E799E3F-F376-46E5+A5DB+85200949987E", "");
|
|
$this->assertSame ("Invalid UUID provided : invalid char", $res);
|
|
}
|
|
public function test_checkRealType_uuid_4 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $this->invokeMethod ($tbl1, "checkRealType_uuid",
|
|
"4E799E3F5F376546E55A5DB585200949987E", "");
|
|
$this->assertSame ("Invalid UUID provided : missing dash", $res);
|
|
}
|
|
|
|
public function test_checkRealType_sqldate_1 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $this->invokeMethod ($tbl1, "checkRealType_sqldate",
|
|
"2018-10-24", "");
|
|
$this->assertSame (null, $res);
|
|
}
|
|
public function test_checkRealType_sqldate_2 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $this->invokeMethod ($tbl1, "checkRealType_sqldate",
|
|
"2018/10/24", "");
|
|
$this->assertSame ("Invalid date provided : invalid chars", $res);
|
|
}
|
|
public function test_checkRealType_sqldate_3 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $this->invokeMethod ($tbl1, "checkRealType_sqldate",
|
|
"2018-10-32", "");
|
|
$this->assertSame ("Invalid date provided : can not parse the date", $res);
|
|
}
|
|
|
|
public function test_checkRealType_sqltime_1 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $this->invokeMethod ($tbl1, "checkRealType_sqltime",
|
|
"12:34:56", "");
|
|
$this->assertSame (null, $res);
|
|
}
|
|
public function test_checkRealType_sqltime_2 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $this->invokeMethod ($tbl1, "checkRealType_sqltime",
|
|
"12;22;22", "");
|
|
$this->assertSame ("Invalid time provided : invalid chars", $res);
|
|
}
|
|
public function test_checkRealType_sqltime_3 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $this->invokeMethod ($tbl1, "checkRealType_sqltime",
|
|
"32:34:56", "");
|
|
$this->assertSame ("Invalid time provided : can not parse the time", $res);
|
|
}
|
|
|
|
public function test_checkRealType_sqldatetime_1 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $this->invokeMethod ($tbl1, "checkRealType_sqldatetime",
|
|
"2018-10-24 22:23:24", "");
|
|
$this->assertSame (null, $res);
|
|
}
|
|
public function test_checkRealType_sqldatetime_2 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $this->invokeMethod ($tbl1, "checkRealType_sqldatetime",
|
|
"2018/10/24", "");
|
|
$this->assertSame ("Invalid date and time provided : invalid length", $res);
|
|
}
|
|
public function test_checkRealType_sqldatetime_3 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $this->invokeMethod ($tbl1, "checkRealType_sqldatetime",
|
|
"2018-10-24 25:12:25", "");
|
|
$this->assertSame ("Invalid date and time provided : ".
|
|
"can not parse the date", $res);
|
|
}
|
|
|
|
//// TEST REAL TYPES ////
|
|
public function test_checkRealTypes_1 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $tbl1->checkRealTypes (array ("group" => "notempty"));
|
|
$this->assertSame (array (
|
|
"object" => "The field can not be empty",
|
|
"where" => "The field can not be empty",
|
|
), $res);
|
|
}
|
|
public function test_checkRealTypes_2 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $tbl1->checkRealTypes (array ("group" => "not valid"));
|
|
$this->assertSame (array (
|
|
"group" => "Invalid value provided : do not match the regex",
|
|
"object" => "The field can not be empty",
|
|
"where" => "The field can not be empty",
|
|
), $res);
|
|
}
|
|
public function test_checkRealTypes_3 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $tbl1->checkRealTypes (array ("group" => "notempty"), true);
|
|
$this->assertSame (array (), $res);
|
|
}
|
|
public function test_checkRealTypes_4 ()
|
|
{
|
|
$tbl1 = $this->tbl1 ();
|
|
$res = $tbl1->checkRealTypes (array ("group" => "not valid"), true);
|
|
$this->assertSame (array (
|
|
"group" => "Invalid value provided : do not match the regex",
|
|
), $res);
|
|
}
|
|
}
|