pager_wrapper_test.php

来自「视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.」· PHP 代码 · 共 134 行

PHP
134
字号
<?php// $Id: pager_wrapper_test.php,v 1.1 2005/07/04 08:08:46 quipo Exp $require_once 'simple_include.php';require_once 'pager_wrapper_include.php';class TestOfPagerWrapper extends UnitTestCase{    function TestOfPagerWrapper($name='Test of Pager_Wrapper') {        $this->UnitTestCase($name);    }        function setUp() { }    function tearDown() { }        function testRewriteCountQuery() {        //test LIMIT        $query = 'SELECT a, b, c, d FROM mytable WHERE a=1 AND c="g" LIMIT 2';        $expected = 'SELECT COUNT(*) FROM mytable WHERE a=1 AND c="g"';        $this->assertEqual($expected, rewriteCountQuery($query));                //test ORDER BY and quotes        $query = 'SELECT a, b, c, d FROM mytable WHERE a=1 AND c="g" ORDER BY (a, b)';        $expected = 'SELECT COUNT(*) FROM mytable WHERE a=1 AND c="g"';        $this->assertEqual($expected, rewriteCountQuery($query));                //test CR/LF        $query = 'SELECT a, b, c, d FROM mytable                   WHERE a=1                     AND c="g"                ORDER BY (a, b)';        $expected = 'SELECT COUNT(*) FROM mytable                   WHERE a=1                     AND c="g"';        $this->assertEqual($expected, rewriteCountQuery($query));                //test GROUP BY        $query = 'SELECT a, b, c, d FROM mytable WHERE a=1 GROUP  BY c';        $this->assertFalse(rewriteCountQuery($query));                //test DISTINCT        $query = 'SELECT DISTINCT a, b, c, d FROM  mytable WHERE a=1 GROUP BY c';        $this->assertFalse(rewriteCountQuery($query));                //test MiXeD Keyword CaSe        $query = 'SELECT a, b, c, d from mytable WHERE a=1 AND c="g"';        $expected = 'SELECT COUNT(*) FROM mytable WHERE a=1 AND c="g"';        $this->assertEqual($expected, rewriteCountQuery($query));        //test keywords embedded in other words        $query = 'SELECT afieldFROM, b, c, d FROM mytable WHERE a=1 AND c="g"';        $expected = 'SELECT COUNT(*) FROM mytable WHERE a=1 AND c="g"';        $this->assertEqual($expected, rewriteCountQuery($query));        $query = 'SELECT FROMafield, b, c, d FROM mytable WHERE a=1 AND c="g"';        $expected = 'SELECT COUNT(*) FROM mytable WHERE a=1 AND c="g"';        $this->assertEqual($expected, rewriteCountQuery($query));        $query = 'SELECT afieldFROMaaa, b, c, d FROM mytable WHERE a=1 AND c="gLIMIT"';        $expected = 'SELECT COUNT(*) FROM mytable WHERE a=1 AND c="gLIMIT"';        $this->assertEqual($expected, rewriteCountQuery($query));                $query = 'SELECT DISTINCTaaa, b, c, d FROM mytable WHERE a=1 AND c="g"';        $expected = 'SELECT COUNT(*) FROM mytable WHERE a=1 AND c="g"';        $this->assertEqual($expected, rewriteCountQuery($query));        //this one fails... the regexp should NOT match keywords within quotes...        //anyway, it's just a missed optimization chance, nothing wrong will happen.        $query = 'SELECT afieldFROMaaa, b, c, d FROM mytable WHERE a=1 AND c="g LIMIT a"';        $expected = 'SELECT COUNT(*) FROM mytable WHERE a=1 AND c="g LIMIT a"';        $this->assertEqual($expected, rewriteCountQuery($query));echo '<hr />';        //test subqueries        $query = 'SELECT a, b, c, d FROM (SELECT a, b, c, d FROM mytable WHERE a=1) AS tbl_alias WHERE a=1';        $expected = 'SELECT COUNT(*) FROM (SELECT a, b, c, d FROM mytable WHERE a=1) AS tbl_alias WHERE a=1';        $this->assertEqual($expected, rewriteCountQuery($query));                //this one fails... subqueries with ORDER BY clauses are truncated        $query = 'SELECT Version.VersionId, Version.Identifier,News.* FROM VersionBroker JOINObjectType ON ObjectType.ObjectTypeId = VersionBroker.ObjectTypeId JOINVersion ON VersionBroker.Identifier = Version.Identifier JOIN News ONVersion.ObjectId = News.NewsId WHERE Version.Status = \'Approved\' ANDObjectType.Name = \'News\' AND Version.ApprovedTS = ( SELECT SubV.ApprovedTSFROM Version SubV WHERE SubV.Identifier = VersionBroker.Identifier ORDER BYApprovedTS DESC LIMIT 1) ORDER BY ApprovedTS DESC';        $expected = 'SELECT COUNT(*) FROM VersionBroker JOINObjectType ON ObjectType.ObjectTypeId = VersionBroker.ObjectTypeId JOINVersion ON VersionBroker.Identifier = Version.Identifier JOIN News ONVersion.ObjectId = News.NewsId WHERE Version.Status = \'Approved\' ANDObjectType.Name = \'News\' AND Version.ApprovedTS = ( SELECT SubV.ApprovedTSFROM Version SubV WHERE SubV.Identifier = VersionBroker.Identifier ORDER BYApprovedTS DESC LIMIT 1) ORDER BY ApprovedTS DESC';        $this->assertEqual($expected, rewriteCountQuery($query));echo '<hr />';        $query = "SELECT  i.item_id,                ia.addition,                u.username,                i.date_created,                i.start_date,                i.expiry_date        FROM    item i, item_addition ia, item_type it, item_type_mapping itm, usr u, category c        WHERE   ia.item_type_mapping_id = itm.item_type_mapping_id        AND     i.updated_by_id = u.usr_id        AND     it.item_type_id  = itm.item_type_id        AND     i.item_id = ia.item_id        AND     i.item_type_id = it.item_type_id        AND     itm.field_name = 'title' AND it.item_type_id = 2 AND i.category_id = 1 AND i.status  = 4        AND     i.category_id = c.category_id        AND     0 NOT IN (COALESCE(c.perms, '-1'))        ORDER BY i.last_updated DESC";        $expected = "SELECT COUNT(*) FROM    item i, item_addition ia, item_type it, item_type_mapping itm, usr u, category c        WHERE   ia.item_type_mapping_id = itm.item_type_mapping_id        AND     i.updated_by_id = u.usr_id        AND     it.item_type_id  = itm.item_type_id        AND     i.item_id = ia.item_id        AND     i.item_type_id = it.item_type_id        AND     itm.field_name = 'title' AND it.item_type_id = 2 AND i.category_id = 1 AND i.status  = 4        AND     i.category_id = c.category_id        AND     0 NOT IN (COALESCE(c.perms, '-1'))";        $this->assertEqual($expected, rewriteCountQuery($query));    }}if (!defined('TEST_RUNNING')) {    define('TEST_RUNNING', true);    $test = &new TestOfPagerWrapper();    $test->run(new HtmlReporter());}?>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?