Added unit tests for correlated subqueries - select, from, where.

git-svn-id: http://xe-core.googlecode.com/svn/branches/1.5.0-DB@8556 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
ucorina 2011-06-30 15:36:03 +00:00
parent 5d1eb1c21e
commit 1353ade0c2
41 changed files with 661 additions and 256 deletions

View file

@ -1,28 +1,10 @@
<?php
require(_XE_PATH_ . 'test-phpUnit/config.inc.php');
require(_XE_PATH_ . 'test-phpUnit/db/xml_query/cubrid/config.cubrid.inc.php');
require(_XE_PATH_ . 'test-phpUnit/config/config.inc.php');
class CubridDeleteTest extends PHPUnit_Framework_TestCase {
class CubridDeleteTest extends CubridTest {
function _test($xml_file, $argsString, $expected){
$tester = new QueryTester();
$outputString = $tester->getNewParserOutputString($xml_file, '"', $argsString);
$output = eval($outputString);
if(!is_a($output, 'Query')){
if(!$output->toBool()) $querySql = "Date incorecte! Query-ul nu a putut fi executat.";
}else {
$db = &DB::getInstance();
var_dump($db);
$querySql = $db->getDeleteSql($output);
// Remove whitespaces, tabs and all
$querySql = Helper::cleanQuery($querySql);
$expected = Helper::cleanQuery($expected);
}
// Test
$this->assertEquals($expected, $querySql);
$this->_testQuery($xml_file, $argsString, $expected, 'getDeleteSql');
}
function test_module_deleteActionForward(){

View file

@ -1,28 +1,12 @@
<?php
require(_XE_PATH_ . 'test-phpUnit/config.inc.php');
require(_XE_PATH_ . 'test-phpUnit/db/xml_query/cubrid/config.cubrid.inc.php');
require(_XE_PATH_ . 'test-phpUnit/config/config.inc.php');
class CubridInsertTest extends PHPUnit_Framework_TestCase {
class CubridInsertTest extends CubridTest {
function _test($xml_file, $argsString, $expected){
$tester = new QueryTester();
$outputString = $tester->getNewParserOutputString($xml_file, '"', $argsString);
$output = eval($outputString);
if(!is_a($output, 'Query')){
if(!$output->toBool()) $querySql = "Date incorecte! Query-ul nu a putut fi executat.";
}else {
$db = &DB::getInstance();
$querySql = $db->getInsertSql($output);
// Remove whitespaces, tabs and all
$querySql = Helper::cleanQuery($querySql);
$expected = Helper::cleanQuery($expected);
}
// Test
$this->assertEquals($expected, $querySql);
$this->_testQuery($xml_file, $argsString, $expected, 'getInsertSql');
}
/**
* Note: this test can fail when comaparing regdate from the $args with

View file

@ -1,30 +1,10 @@
<?php
require(_XE_PATH_ . 'test-phpUnit/config.inc.php');
require(_XE_PATH_ . 'test-phpUnit/db/xml_query/cubrid/config.cubrid.inc.php');
require(_XE_PATH_ . 'test-phpUnit/config/config.inc.php');
class CubridSelectTest extends PHPUnit_Framework_TestCase {
class CubridSelectTest extends CubridTest {
function _test($xml_file, $argsString, $expected){
$tester = new QueryTester();
$outputString = $tester->getNewParserOutputString($xml_file, '"', $argsString);
//echo $outputString;
$output = eval($outputString);
if(!is_a($output, 'Query')){
if(!$output->toBool()) $querySql = "Date incorecte! Query-ul nu a putut fi executat.";
}else {
//$db = new DBCubrid();
$db = &DB::getInstance();
$querySql = $db->getSelectSql($output);
// Remove whitespaces, tabs and all
$querySql = Helper::cleanQuery($querySql);
$expected = Helper::cleanQuery($expected);
}
// Test
$this->assertEquals($expected, $querySql);
function _test($xml_file, $argsString, $expected){
$this->_testQuery($xml_file, $argsString, $expected, 'getSelectSql');
}
function testSelectStar(){

View file

@ -0,0 +1,77 @@
<?php
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
class CubridSubqueryTest extends CubridTest {
var $xmlPath = 'data/';
function CubridSubqueryTest(){
$this->xmlPath = str_replace('CubridSubqueryTest.php', '', str_replace('\\', '/', __FILE__)) . $this->xmlPath;
}
function _test($xml_file, $argsString, $expected){
$this->_testQuery($xml_file, $argsString, $expected, 'getSelectSql');
}
function testSelectUncorrelated1(){
$xml_file = $this->xmlPath . "select_uncorrelated1.xml";
echo $xml_file;
$argsString = '$args->user_id = 4;
';
$expected = 'select "column_a" as "value_a"
, (select max("column_b") as "count"
from "xe_table_b" as "table_b"
) as "value_b"
from "xe_table_a" as "table_a"
where "column_a" = 4';
$this->_test($xml_file, $argsString, $expected);
}
function testSelectUncorrelated2(){
$xml_file = $this->xmlPath . "select_uncorrelated2.xml";
echo $xml_file;
$argsString = '$args->user_id = 4;
$args->user_name = 7;
';
$expected = 'SELECT "column_a" as "value_a"
, "column_b" as "value_b"
, "column_c" as "value_c"
, (SELECT max("column_b") as "count"
FROM "xe_table_b" as "table_b"
WHERE "column_ab" = 7) as "value_b"
FROM "xe_table_a" as "table_a"
WHERE "column_a" = 4';
$this->_test($xml_file, $argsString, $expected);
}
function testFromUncorrelated(){
$xml_file = $this->xmlPath . "from_uncorrelated1.xml";
echo $xml_file;
$argsString = '$args->user_id = 4;
$args->user_name = 7;
';
$expected = 'select max("documentcountbymember"."count") as "maxcount"
from (
select "member_srl" as "member_srl"
, count(*) as "count"
from "xe_documents" as "documents"
group by "member_srl"
) as "documentcountbymember"';
$this->_test($xml_file, $argsString, $expected);
}
function testWhereUncorrelated(){
$xml_file = $this->xmlPath . "where_uncorrelated1.xml";
echo $xml_file;
$argsString = '';
$expected = 'select * from
"xe_member" as "member"
where "regdate" = (select max("regdate") as "maxregdate"
from "xe_documents" as "documents")';
$this->_test($xml_file, $argsString, $expected);
}
}
?>

View file

@ -1,26 +1,10 @@
<?php
require(_XE_PATH_ . 'test-phpUnit/config.inc.php');
require(_XE_PATH_ . 'test-phpUnit/db/xml_query/cubrid/config.cubrid.inc.php');
require(_XE_PATH_ . 'test-phpUnit/config/config.inc.php');
class CubridUpdateTest extends PHPUnit_Framework_TestCase {
class CubridUpdateTest extends CubridTest {
function _test($xml_file, $argsString, $expected){
$tester = new QueryTester();
$outputString = $tester->getNewParserOutputString($xml_file, '"', $argsString);
$output = eval($outputString);
if(!is_a($output, 'Query')){
if(!$output->toBool()) $querySql = "Date incorecte! Query-ul nu a putut fi executat.";
}else {
$db = &DB::getInstance();
$querySql = $db->getUpdateSql($output);
// Remove whitespaces, tabs and all
$querySql = Helper::cleanQuery($querySql);
$expected = Helper::cleanQuery($expected);
}
// Test
$this->assertEquals($expected, $querySql);
function _test($xml_file, $argsString, $expected){
$this->_testQuery($xml_file, $argsString, $expected, 'getUpdateSql');
}
function test_module_updateModule(){

View file

@ -1,8 +0,0 @@
<?php
$oContext = &Context::getInstance();
$db_info->db_type = 'cubrid';
$db_info->db_table_prefix = 'xe';
$oContext->setDbInfo($db_info);
?>

View file

@ -0,0 +1,19 @@
<query id="getMemberInfo" action="select">
<tables>
<query alias="documentCountByMember">
<tables>
<table name="documents" alias="documents" />
</tables>
<columns>
<column name="member_srl" alias="member_srl" />
<column name="count(*)" alias="count" />
</columns>
<groups>
<group column="member_srl" />
</groups>
</query>
</tables>
<columns>
<column name="MAX(documentCountByMember.count)" alias="maxCount" />
</columns>
</query>

View file

@ -0,0 +1,19 @@
<query id="select_uncorrelated" action="select">
<tables>
<table name="table_a" />
</tables>
<columns>
<column name="column_a" alias="value_a" />
<query alias="value_b">
<tables>
<table name="table_b" />
</tables>
<columns>
<column name="max(column_b)" alias="count" />
</columns>
</query>
</columns>
<conditions>
<condition operation="equal" column="column_a" var="user_id" notnull="notnull" />
</conditions>
</query>

View file

@ -0,0 +1,24 @@
<query id="select_uncorrelated" action="select">
<tables>
<table name="table_a" />
</tables>
<columns>
<column name="column_a" alias="value_a" />
<column name="column_b" alias="value_b" />
<query alias="value_b">
<tables>
<table name="table_b" />
</tables>
<columns>
<column name="max(column_b)" alias="count" />
</columns>
<conditions>
<condition operation="equal" column="column_ab" var="user_name" notnull="notnull" />
</conditions>
</query>
<column name="column_c" alias="value_c" />
</columns>
<conditions>
<condition operation="equal" column="column_a" var="user_id" notnull="notnull" />
</conditions>
</query>

View file

@ -0,0 +1,18 @@
<query id="getMemberInfo" action="select">
<tables>
<table name="member" />
</tables>
<columns>
<column name="*" />
</columns>
<conditions>
<query operation="equal" column="regdate" alias="documentMaxRegdate">
<tables>
<table name="documents" />
</tables>
<columns>
<column name="max(regdate)" alias="maxregdate" />
</columns>
</query>
</conditions>
</query>