D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
opt
/
lampp
/
lib
/
php
/
test
/
Pager
/
tests
/
Filename :
pager_test.php
back
Copy
<?php // $Id: pager_test.php,v 1.35 2008/05/31 12:45:25 quipo Exp $ require_once 'simple_include.php'; require_once 'pager_include.php'; class TestOfPager extends UnitTestCase { var $pager; var $baseurl; function TestOfPager($name='Test of Pager') { $this->UnitTestCase($name); } function setUp() { $options = array( 'itemData' => range(1, 10), 'perPage' => 5, ); $this->pager = Pager::factory($options); $this->baseurl = substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/')); } function tearDown() { unset($this->pager); } function testCurrentPageID() { $this->assertEqual(1, $this->pager->getCurrentPageID()); } function testNextPageID() { $this->assertEqual(2, $this->pager->getNextPageID()); } function testPrevPageID() { $this->assertEqual(false, $this->pager->getPreviousPageID()); } function testNumItems() { $this->assertEqual(10, $this->pager->numItems()); } function testNumPages() { $this->assertEqual(2, $this->pager->numPages()); } function testFirstPage() { $this->assertEqual(true, $this->pager->isFirstPage()); } function testLastPage() { $this->assertEqual(false, $this->pager->isLastPage()); } function testLastPageComplete() { $this->assertEqual(true, $this->pager->isLastPageComplete()); } function testOffsetByPageId() { $this->assertEqual(array(1, 5), $this->pager->getOffsetByPageId(1)); $this->assertEqual(array(6, 10), $this->pager->getOffsetByPageId(2)); } function testOffsetByPageId_outOfRange() { $this->assertEqual(array(0, 0), $this->pager->getOffsetByPageId(20)); } function testGetPageData() { $this->assertEqual(array(0=>1, 1=>2, 2=>3, 3=>4, 4=>5), $this->pager->getPageData()); $this->assertEqual(array(5=>6, 6=>7, 7=>8, 8=>9, 9=>10), $this->pager->getPageData(2)); } function testGetPageData_OutOfRange() { $this->assertEqual(array(), $this->pager->getPageData(3)); } function testSelectBox() { $selectBox = '<select name="'.$this->pager->_sessionVar.'">'; $selectBox .= '<option value="5" selected="selected">5</option>'; $selectBox .= '<option value="10">10</option>'; $selectBox .= '<option value="15">15</option>'; $selectBox .= '</select>'; $this->assertEqual($selectBox, $this->pager->getPerPageSelectBox(5, 15, 5)); } function testSelectBoxWithString() { $selectBox = '<select name="'.$this->pager->_sessionVar.'">'; $selectBox .= '<option value="5" selected="selected">5 bugs</option>'; $selectBox .= '<option value="10">10 bugs</option>'; $selectBox .= '<option value="15">15 bugs</option>'; $selectBox .= '</select>'; $this->assertEqual($selectBox, $this->pager->getPerPageSelectBox(5, 15, 5, false, '%d bugs')); } function testSelectBoxWithShowAll() { $selectBox = '<select name="'.$this->pager->_sessionVar.'">'; $selectBox .= '<option value="3">3</option>'; $selectBox .= '<option value="4">4</option>'; $selectBox .= '<option value="5" selected="selected">5</option>'; $selectBox .= '<option value="6">6</option>'; $selectBox .= '<option value="10">10</option>'; $selectBox .= '</select>'; $this->assertEqual($selectBox, $this->pager->getPerPageSelectBox(3, 6, 1, true)); } function testSelectBoxWithShowAllAndText() { $this->pager->_showAllText = 'Show All'; $selectBox = '<select name="'.$this->pager->_sessionVar.'">'; $selectBox .= '<option value="3">3 bugs</option>'; $selectBox .= '<option value="4">4 bugs</option>'; $selectBox .= '<option value="5" selected="selected">5 bugs</option>'; $selectBox .= '<option value="6">6 bugs</option>'; $selectBox .= '<option value="'.max($this->pager->_itemData).'">Show All</option>'; $selectBox .= '</select>'; $this->assertEqual($selectBox, $this->pager->getPerPageSelectBox(3, 6, 1, true, '%d bugs')); } function testSelectBoxWithShowAllWithExtraAttribs() { $options = array( 'itemData' => range(1, 14), 'perPage' => 5, ); $this->pager = Pager::factory($options); $this->pager->_showAllText = 'Show All'; $selectBox = '<select name="'.$this->pager->_sessionVar.'" onmouseover="doSth">'; $selectBox .= '<option value="5" selected="selected">5 bugs</option>'; $selectBox .= '<option value="10">10 bugs</option>'; $selectBox .= '<option value="'.max($this->pager->_itemData).'">Show All</option>'; $selectBox .= '</select>'; $params = array( 'optionText' => '%d bugs', 'attributes' => 'onmouseover="doSth"', 'checkMaxLimit' => true, ); $this->assertEqual($selectBox, $this->pager->getPerPageSelectBox(5, 15, 5, true, $params)); } function testSelectBoxWithShowAllAndFewValues() { //test getPerPagerSelectBox() with $showAllData = true and $start > $totalItems $options = array( 'itemData' => range(1, 5), 'perPage' => 5, 'showAllText' => 'Show All', ); $this->pager = Pager::factory($options); $selectBox = '<select name="'.$this->pager->_sessionVar.'">'; $selectBox .= '<option value="'.max($this->pager->_itemData).'" selected="selected">Show All</option>'; $selectBox .= '</select>'; $this->assertEqual($selectBox, $this->pager->getPerPageSelectBox(25, 30, 1, true, array('checkMaxLimit' => true))); } function testSelectBoxInvalid() { $err = $this->pager->getPerPageSelectBox(5, 15, 5, false, '%s bugs'); $this->assertEqual(ERROR_PAGER_INVALID_PLACEHOLDER, $err->getCode()); } function testSelectBoxEmpty() { $options = array( 'itemData' => array(), 'totalItems' => 0, ); $this->pager = Pager::factory($options); $selectBox = '<select name="'.$this->pager->_sessionVar.'">'; $selectBox .= '<option />'; $selectBox .= '</select>'; $this->assertEqual($selectBox, $this->pager->getPerPageSelectBox(5, 15, 5, false, array('checkMaxLimit' => true))); } function testAppendInvalid() { $options = array( 'totalItems' => 10, 'append' => false, 'fileName' => 'invalidFileName' ); $err =& Pager::factory($options); //ERROR_PAGER_INVALID_USAGE $this->assertError(); } function testAppendValid() { $options = array( 'totalItems' => 10, 'append' => false, 'fileName' => 'valid_%d_FileName' ); $err =& Pager::factory($options); $this->assertNoErrors(); } function testEscapeEntities() { //encode special chars $options = array( 'extraVars' => array( 'request' => array('aRequest'), 'escape' => 'äö%<>+', ), 'perPage' => 5, ); $this->pager =& Pager::factory($options); //$expected = '?request[]=aRequest&escape=äö%<>+&pageID='; //$this->assertEqual($expected, $this->pager->_getLinksUrl()); $expected = 'request%5B0%5D=aRequest&escape=%E4%F6%25%3C%3E%2B'; if (1 == version_compare(PHP_VERSION, '5.2.99')) { $expected = 'request%5B0%5D=aRequest&escape=%C3%A4%C3%B6%25%3C%3E%2B'; } $rendered = $this->pager->_renderLink('', ''); preg_match('/href="(.*)"/U', $rendered, $matches); $actual = str_replace($_SERVER['PHP_SELF'].'?', '', $matches[1]); $this->assertEqual($expected, $actual); //don't encode slashes $options = array( 'extraVars' => array( 'request' => 'cat/subcat', ), 'perPage' => 5, ); $this->pager =& Pager::factory($options); //$expected = '?request=cat/subcat&pageID='; //$this->assertEqual($expected, $this->pager->_getLinksUrl()); $expected = '<a href="'.$_SERVER['PHP_SELF'].'?request=cat/subcat" title=""></a>'; $actual = $this->pager->_renderLink('', ''); $this->assertEqual($expected, $actual); } function testMultibyteStrings() { $options = array( 'extraVars' => array( 'test' => '测试', ), 'perPage' => 5, ); $this->pager =& Pager::factory($options); //$expected = '<a href="'.$_SERVER['PHP_SELF'].'?test=测试" title=""></a>'; $rendered = $this->pager->_renderLink('', ''); preg_match('/href="(.*)"/U', $rendered, $matches); $actual = str_replace($_SERVER['PHP_SELF'].'?test=', '', $matches[1]); $this->assertEqual(urlencode($options['extraVars']['test']), $actual); } function testMultibyteJapaneseStrings() { $options = array( 'extraVars' => array( 'test' => '漢字', ), 'perPage' => 5, ); $this->pager =& Pager::factory($options); //$expected = '<a href="'.$_SERVER['PHP_SELF'].'?test=测试" title=""></a>'; $rendered = $this->pager->_renderLink('', ''); preg_match('/href="(.*)"/U', $rendered, $matches); $actual = str_replace($_SERVER['PHP_SELF'].'?test=', '', $matches[1]); $this->assertEqual(urlencode($options['extraVars']['test']), $actual); } function testCurrentPage() { $options = array( 'itemData' => array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 'perPage' => 2, 'currentPage' => 2, ); $this->pager =& Pager::factory($options); $this->assertEqual(3, $this->pager->getNextPageID()); $this->assertEqual(1, $this->pager->getPreviousPageID()); $this->assertEqual(2, $this->pager->_currentPage); } function testArrayExtraVars() { $arr = array( 'apple', 'orange', ); $options = array( 'itemData' => array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 'perPage' => 5, 'extraVars' => array('arr' => $arr, 'no' => 'test'), ); $this->pager =& Pager::factory($options); /* //old $expected = '?arr[0]=apple&arr[1]=orange&pageID='; $this->assertEqual($expected, $this->pager->_getLinksUrl()); */ $expected = $options['extraVars']; $this->assertEqual($expected, $this->pager->_getLinksData()); $separator = ini_get('arg_separator.output'); if ($separator == '&') { $separator = '&'; } $expected = '<a href="'.$_SERVER['PHP_SELF'].'?arr%5B0%5D=apple'.$separator.'arr%5B1%5D=orange'.$separator.'no=test'.$separator.'pageID=2" title=""></a>'; $actual = $this->pager->_renderLink('', ''); $this->assertEqual($expected, $actual); } function testExcludeVars() { $_GET['excludeMe'] = 'foo'; $extraVars = array( 'arr' => array( 'apple', 'orange', ), 'no' => 'test', // do not remove this one, because it has been explicitely added ); $excludeVars = array( 'no', // do not remove, @see above 'excludeMe', //remove ); $options = array( 'itemData' => array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 'perPage' => 5, 'extraVars' => $extraVars, 'excludeVars' => $excludeVars, ); $this->pager =& Pager::factory($options); $expected = array( 'arr' => array( 0 => 'apple', 1 => 'orange' ), 'no' => 'test', ); $actual = $this->pager->_getLinksData(); $this->assertEqual($expected, $actual); $separator = ini_get('arg_separator.output'); if ($separator == '&') { $separator = '&'; } $expected = '<a href="'.$_SERVER['PHP_SELF'].'?arr%5B0%5D=apple'.$separator.'arr%5B1%5D=orange'.$separator.'no=test'.$separator.'pageID=2" title=""></a>'; $actual = $this->pager->_renderLink('', ''); $this->assertEqual($expected, $actual); unset($_GET['excludeMe']); //cleanup //exclude with regexp $_GET['reMoveAAA'] = 'aaa'; $_GET['RemoveBBB'] = 'bbb'; $_GET['leaveCCC'] = 'ccc'; $excludeVars = array( '/remove.*/i', //regexp ); $options = array( 'itemData' => array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 'perPage' => 5, 'extraVars' => $extraVars, 'excludeVars' => $excludeVars, ); $this->pager =& Pager::factory($options); $expected = array( 'arr' => array( 0 => 'apple', 1 => 'orange' ), 'no' => 'test', 'leaveCCC' => 'ccc', ); $this->assertEqual($expected, $this->pager->_getLinksData()); //cleanup foreach (array_keys($_GET) as $k) { unset($_GET[$k]); } } function testArgSeparator() { $bkp_arg_separator = ini_get('arg_separator.output'); ini_set('arg_separator.output', '&'); $options = array( 'itemData' => array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 'perPage' => 5, 'extraVars' => array('apple' => 1), ); $this->pager =& Pager::factory($options); $expected = '<a href="'.$_SERVER['PHP_SELF'].'?apple=1&pageID=2" title=""></a>'; $actual = $this->pager->_renderLink('', ''); $this->assertEqual($expected, $actual); ini_set('arg_separator.output', $bkp_arg_separator); } function testAttributes() { $options = array( 'itemData' => array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 'perPage' => 5, 'linkClass' => 'testclass', 'attributes' => 'target="_blank"', ); $this->pager =& Pager::factory($options); $expected = '<a href="'.$_SERVER['PHP_SELF'].'?pageID=2" class="testclass" target="_blank" title=""></a>'; $actual = $this->pager->_renderLink('', ''); $this->assertEqual($expected, $actual); } function testOnClick() { $options = array( 'itemData' => array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 'perPage' => 5, 'linkClass' => 'testclass', 'onclick' => 'doSomething(%d)', ); $this->pager =& Pager::factory($options); $expected = '<a href="'.$_SERVER['PHP_SELF'].'?pageID=2" class="testclass" onclick="doSomething(2)" title=""></a>'; $actual = $this->pager->_renderLink('', ''); $this->assertEqual($expected, $actual); } function testImportQuery() { //add some fake url vars $_GET['arr'] = array( 'apple', 'orange', ); $options = array( 'itemData' => array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 'perPage' => 5, 'importQuery' => false, ); $this->pager =& Pager::factory($options); $expected = array(); $actual = $this->pager->_getLinksData(); $this->assertEqual($expected, $this->pager->_getLinksData()); $expected = '<a href="'.$_SERVER['PHP_SELF'].'?pageID=2" title=""></a>'; $actual = $this->pager->_renderLink('', ''); $this->assertEqual($expected, $actual); //remove fake url vars unset($_GET['arr']); } function testGetNextLinkTag() { //append = true $expected = '<link rel="next" href="'.$_SERVER['PHP_SELF'].'?pageID=2" title="next page" />'."\n"; $this->assertEqual($expected, $this->pager->_getNextLinkTag()); //append = false $options = array( 'itemData' => array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 'perPage' => 5, 'currentPage' => 1, 'append' => false, 'fileName' => 'myfile.%d.php', ); $this->pager = Pager::factory($options); $expected = '<link rel="next" href="'.$this->baseurl.'/myfile.2.php" title="next page" />'."\n"; $this->assertEqual($expected, $this->pager->_getNextLinkTag()); //test empty tag $options['currentPage'] = 2; $this->pager = Pager::factory($options); $this->assertEqual('', $this->pager->_getNextLinkTag()); } function testGetLastLinkTag() { //append = true $expected = '<link rel="last" href="'.$_SERVER['PHP_SELF'].'?pageID=2" title="last page" />'."\n"; $this->assertEqual($expected, $this->pager->_getLastLinkTag()); //append = false $options = array( 'itemData' => array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 'perPage' => 5, 'currentPage' => 1, 'append' => false, 'fileName' => 'myfile.%d.php', ); $this->pager = Pager::factory($options); $expected = '<link rel="last" href="'.$this->baseurl.'/myfile.2.php" title="last page" />'."\n"; $this->assertEqual($expected, $this->pager->_getLastLinkTag()); //test empty tag $options['currentPage'] = 2; $this->pager = Pager::factory($options); $this->assertEqual('', $this->pager->_getLastLinkTag()); } function testGetFirstLinkTag() { //append = true $options = array( 'itemData' => array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 'perPage' => 5, 'currentPage' => 2, ); $this->pager = Pager::factory($options); $expected = '<link rel="first" href="'.$_SERVER['PHP_SELF'].'?pageID=1" title="first page" />'."\n"; $this->assertEqual($expected, $this->pager->_getFirstLinkTag()); //append = false $options = array( 'itemData' => array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 'perPage' => 5, 'currentPage' => 2, 'append' => false, 'fileName' => 'myfile.%d.php', ); $this->pager = Pager::factory($options); $expected = '<link rel="first" href="'.$this->baseurl.'/myfile.1.php" title="first page" />'."\n"; $this->assertEqual($expected, $this->pager->_getFirstLinkTag()); //test empty tag $options['currentPage'] = 1; $this->pager = Pager::factory($options); $this->assertEqual('', $this->pager->_getFirstLinkTag()); } function testGetPrevLinkTag() { //append = true $options = array( 'itemData' => array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 'perPage' => 5, 'currentPage' => 2, ); $this->pager = Pager::factory($options); $expected = '<link rel="previous" href="'.$_SERVER['PHP_SELF'].'?pageID=1" title="previous page" />'."\n"; $this->assertEqual($expected, $this->pager->_getPrevLinkTag()); //append = false $options = array( 'itemData' => array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 'perPage' => 5, 'currentPage' => 2, 'append' => false, 'fileName' => 'myfile.%d.php', ); $this->pager = Pager::factory($options); $expected = '<link rel="previous" href="'.$this->baseurl.'/myfile.1.php" title="previous page" />'."\n"; $this->assertEqual($expected, $this->pager->_getPrevLinkTag()); //test empty tag $options['currentPage'] = 1; $this->pager = Pager::factory($options); $this->assertEqual('', $this->pager->_getPrevLinkTag()); } function testPrintFirstPage() { $options = array( 'itemData' => array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 'perPage' => 5, 'currentPage' => 2, ); $this->pager = Pager::factory($options); $expected = '<a href="' . $_SERVER['PHP_SELF'] . '?pageID=1" title="first page">[1]</a> '; $this->assertEqual($expected, $this->pager->_printFirstPage()); $this->pager->_firstPageText = 'FIRST'; $expected = '<a href="' . $_SERVER['PHP_SELF'] . '?pageID=1" title="first page">[FIRST]</a> '; $this->assertEqual($expected, $this->pager->_printFirstPage()); $options = array( 'itemData' => array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 'perPage' => 5, 'currentPage' => 2, 'altFirst' => 'page %d', ); $this->pager = Pager::factory($options); $expected = '<a href="' . $_SERVER['PHP_SELF'] . '?pageID=1" title="page 1">[1]</a> '; $this->assertEqual($expected, $this->pager->_printFirstPage()); } function testPrintLastPage() { $expected = '<a href="' . $_SERVER['PHP_SELF'] . '?pageID=2" title="last page">[2]</a>'; $this->assertEqual($expected, $this->pager->_printLastPage()); $this->pager->_lastPageText = 'LAST'; $expected = '<a href="' . $_SERVER['PHP_SELF'] . '?pageID=2" title="last page">[LAST]</a>'; $this->assertEqual($expected, $this->pager->_printLastPage()); $this->pager->_altLast = 'page %d'; $expected = '<a href="' . $_SERVER['PHP_SELF'] . '?pageID=2" title="page 2">[LAST]</a>'; $this->assertEqual($expected, $this->pager->_printLastPage()); } function testGetPageLinks() { $links = $this->pager->_getPageLinks(); $this->assertTrue(false !== strpos($links, 'title="page 2"')); $this->pager->setOptions(array('altPage' => '%d page')); $this->pager->build(); $links = $this->pager->_getPageLinks(); $this->assertTrue(false !== strpos($links, 'title="2 page"')); } function testGetBackLink() { $img = '«'; $options = array( 'itemData' => array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 'perPage' => 5, 'currentPage' => 2, 'prevImg' => $img, ); $this->pager = Pager::factory($options); $expected = '<a href="' . $_SERVER['PHP_SELF'] . '?pageID=1" title="previous page">'.$img.'</a> '; $this->assertEqual($expected, $this->pager->_getBackLink()); } function testGetBackLinkEmpty() { $img = '[FIRST]'; $options = array( 'itemData' => array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 'perPage' => 5, ); $this->pager = Pager::factory($options); $expected = ''; $this->assertEqual($expected, $this->pager->_getBackLink()); $options['prevImgEmpty'] = $img; $this->pager = Pager::factory($options); $expected = $img.' '; $this->assertEqual($expected, $this->pager->_getBackLink()); } function testGetNexLink() { $img = '»'; $options = array( 'itemData' => array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 'perPage' => 5, 'currentPage' => 1, 'nextImg' => $img, ); $this->pager = Pager::factory($options); $expected = ' <a href="' . $_SERVER['PHP_SELF'] . '?pageID=2" title="next page">'.$img.'</a> '; $this->assertEqual($expected, $this->pager->_getNextLink()); } function testGetNexLinkEmpty() { $img = '[LAST]'; $options = array( 'itemData' => array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 'perPage' => 5, 'currentPage' => 2, ); $this->pager = Pager::factory($options); $expected = ''; $this->assertEqual($expected, $this->pager->_getNextLink()); $options['nextImgEmpty'] = $img; $this->pager = Pager::factory($options); $expected = ' '.$img.' '; $this->assertEqual($expected, $this->pager->_getNextLink()); } function testHttpMethodAutoDetect() { $_POST['pageID'] = 3; $options = array( 'itemData' => array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 'perPage' => 5, ); $this->pager = Pager::factory($options); $this->assertEqual('POST', $this->pager->_httpMethod); $options = array( 'itemData' => array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 'perPage' => 5, 'httpMethod' => 'GET', ); $this->pager = Pager::factory($options); $this->assertEqual('GET', $this->pager->_httpMethod); unset($_POST['pageID']); $options = array( 'itemData' => array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 'perPage' => 5, 'httpMethod' => 'POST', ); $this->pager = Pager::factory($options); $this->assertEqual('POST', $this->pager->_httpMethod); $options = array( 'itemData' => array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 'perPage' => 5, ); $this->pager = Pager::factory($options); $this->assertEqual('GET', $this->pager->_httpMethod); } function testAccesskey() { $options = array( 'itemData' => array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 'perPage' => 5, 'accesskey' => true, ); $this->pager = Pager::factory($options); $this->assertPattern('/accesskey="\d"/i', $this->pager->links); //var_dump($this->pager->links); } function testIsEncoded() { //var_dump(urlencode('안녕')); $test_strings_encoded = array( 'encoded0' => '试', 'encoded1' => '测试', 'encoded2' => '안녕', 'encoded3' => '안 녕', 'encoded4' => '안 녕', ); $test_strings_plain = array( 'plain1' => '안녕', 'plain2' => '더보기', // 'plain3' => '이젠 전화도 //로 걸면 무료', 'plain4' => 'abcde', //not multibyte 'plain5' => '&#abcfg;', //invalid hex-encoded char 'plain5' => '안 nasty 녕', //mixed plain/encoded text ); foreach ($test_strings_encoded as $string) { //echo '<hr />'.str_replace('&', '&', $string); $this->assertTrue($this->pager->_isEncoded($string)); } foreach ($test_strings_plain as $string) { $this->assertFalse($this->pager->_isEncoded($string)); } } function testGetOption() { $this->assertEqual(5, $this->pager->getOption('perPage')); $err = $this->pager->getOption('non_existent_option'); $this->assertEqual(ERROR_PAGER_INVALID, $err->getCode()); } function testGetOptions() { $options = $this->pager->getOptions(); $this->assertTrue(is_array($options)); $this->assertEqual(5, $options['perPage']); } function testSetOptionsAndBuild() { $options = array( 'perPage' => 2, ); $this->pager->setOptions($options); $this->pager->build(); $this->assertEqual(2, $this->pager->getOption('perPage')); $this->assertEqual(array(0=>1, 1=>2), $this->pager->getPageData()); $this->assertEqual(array(2=>3, 3=>4), $this->pager->getPageData(2)); $options = array( 'currentPage' => 2, 'append' => false, 'fileName' => 'myfile.%d.php', ); $this->pager->setOptions($options); $this->pager->build(); $expected = '<link rel="previous" href="'.$this->baseurl.'/myfile.1.php" title="previous page" />'."\n"; $this->assertEqual($expected, $this->pager->_getPrevLinkTag()); } function testRelativeLinks() { $fileName = array_pop(explode('/', $_SERVER['PHP_SELF'])); $options = array( 'mode' => 'Sliding', 'path' => '', 'fileName' => $fileName, 'itemData' => range('a', 'z'), 'spacesBeforeSeparator' => 0, 'spacesAfterSeparator' => 0, ); $this->pager = Pager::factory($options); $expected = '<a href="' . $fileName . '?pageID=2" title="next page">»</a>'; $this->assertEqual($expected, $this->pager->_getNextLink()); $options = array( 'mode' => 'Sliding', 'itemData' => range('a', 'z'), 'spacesBeforeSeparator' => 0, 'spacesAfterSeparator' => 0, ); $this->pager = Pager::factory($options); $this->pager->build(); $expected = '<a href="' . $_SERVER['PHP_SELF'] . '?pageID=2" title="next page">»</a>'; $this->assertEqual($expected, $this->pager->_getNextLink()); } //http://pear.php.net/bugs/bug.php?id=12306 function testAbsoluteLinks() { // Reproduces bug #13881 $options = array ( 'mode' => 'Sliding', 'delta' => 5, 'totalItems' => 50, 'perPage' => 10, 'urlVar' => 'page', 'currentPage' => 1, 'append' => false, 'path' => '', 'fileName' => '/report/alpha/page/%d/orderBy/foo/direction/asc', 'spacesBeforeSeparator' => 0, 'spacesAfterSeparator' => 0, ); $this->pager = Pager::factory($options); $this->pager->build(); $expected = '<a href="/report/alpha/page/2/orderBy/foo/direction/asc" title="next page">»</a>'; $this->assertEqual($expected, $this->pager->_getNextLink()); $options['path'] = '/'; $options['fileName'] = '/report/alpha/page/%d/orderBy/foo/direction/asc'; $this->pager = Pager::factory($options); $this->pager->build(); $expected = '<a href="/report/alpha/page/2/orderBy/foo/direction/asc" title="next page">»</a>'; $this->assertEqual($expected, $this->pager->_getNextLink()); } //http://pear.php.net/bugs/bug.php?id=13913 function testEmptyPagerWithImgEmpty() { $options = array( 'itemData' => range(1, 2), 'perPage' => 5, 'prevImgEmpty' => 'YYY', 'nextImgEmpty' => 'XXX', ); $this->pager = Pager::factory($options); $expected = ''; $this->assertEqual($expected, $this->pager->links); } } if (!defined('TEST_RUNNING')) { define('TEST_RUNNING', true); $test = new TestOfPager(); $test->run(new HtmlReporter()); } ?>