[ Index ] |
|
Code source de PHPonTrax 2.6.6-svn |
1 <?php 2 /** 3 * File for the RouterTest class 4 * 5 * (PHP 5) 6 * 7 * @package PHPonTraxTest 8 * @license http://opensource.org/licenses/gpl-license.php GNU Public License 9 * @copyright (c) Walter O. Haas 2006 10 * @version $Id: RouterTest.php 192 2006-03-27 22:02:53Z haas $ 11 * @author Walt Haas <haas@xmission.com> 12 */ 13 14 echo "testing Router\n"; 15 require_once 'testenv.php'; 16 17 // Call RouterTest::main() if this source file is executed directly. 18 if (!defined("PHPUnit2_MAIN_METHOD")) { 19 define("PHPUnit2_MAIN_METHOD", "RouterTest::main"); 20 } 21 22 require_once "PHPUnit2/Framework/TestCase.php"; 23 require_once "PHPUnit2/Framework/TestSuite.php"; 24 25 // You may remove the following line when all tests have been implemented. 26 require_once "PHPUnit2/Framework/IncompleteTestError.php"; 27 28 require_once "router.php"; 29 30 /** 31 * Test class for Router. 32 * Generated by PHPUnit2_Util_Skeleton on 2006-03-01 at 15:31:34. 33 */ 34 class RouterTest extends PHPUnit2_Framework_TestCase { 35 /** 36 * Runs the test methods of this class. 37 * 38 * @access public 39 * @static 40 */ 41 public static function main() { 42 require_once "PHPUnit2/TextUI/TestRunner.php"; 43 44 $suite = new PHPUnit2_Framework_TestSuite("RouterTest"); 45 $result = PHPUnit2_TextUI_TestRunner::run($suite); 46 } 47 48 /** 49 * Sets up the fixture, for example, open a network connection. 50 * This method is called before a test is executed. 51 * 52 * @access protected 53 */ 54 protected function setUp() { 55 } 56 57 /** 58 * Tears down the fixture, for example, close a network connection. 59 * This method is called after a test is executed. 60 * 61 * @access protected 62 */ 63 protected function tearDown() { 64 } 65 66 /** 67 * Test build_route_regexp(). 68 */ 69 public function testBuild_route_regexp() { 70 $r = new Router; 71 // Two abstract route components 72 $regexp = $r->build_route_regexp(':foo/:bar'); 73 $this->assertEquals($regexp, 74 '^[a-z0-9_\-]+\/[a-z0-9_\-]+$'); 75 // Three abstract route components 76 $regexp = $r->build_route_regexp(':foo/:bar/:mumble'); 77 $this->assertEquals($regexp, 78 '^[a-z0-9_\-]+\/[a-z0-9_\-]+\/[a-z0-9_\-]+$'); 79 // Abstract, concrete, abstract route components 80 $regexp = $r->build_route_regexp(':foo/bar/:mumble'); 81 $this->assertEquals($regexp, 82 '^[a-z0-9_\-]+\/bar\/[a-z0-9_\-]+$'); 83 // Two concrete route components 84 $regexp = $r->build_route_regexp('foo/bar'); 85 $this->assertEquals($regexp, 86 '^foo\/bar$'); 87 } 88 89 /** 90 * Test default route table 91 */ 92 public function testDefault_route() { 93 $r = new Router; 94 // Should find default route 95 $route = $r->find_route('a/b/mumble'); 96 $this->assertEquals(':controller/:action/:id', $route['path']); 97 $this->assertNull($route['params']); 98 } 99 100 /** 101 * Test route table with one simple entry besides default 102 */ 103 public function testSimple_route() { 104 $r = new Router; 105 // Build route table 106 $r->connect(':foo/:bar/mumble', array('mumble route')); 107 // Params not an array ignored, null is stored 108 $r->connect(':controller/:action/:id', 'not-an-array'); 109 110 // Match first route 111 $route = $r->find_route('a/b/mumble'); 112 $this->assertEquals(':foo/:bar/mumble', $route['path']); 113 $this->assertEquals(array('mumble route'), $route['params']); 114 $selected = $r->get_selected_route(); 115 $this->assertEquals(':foo/:bar/mumble', $selected['path']); 116 $this->assertEquals(array('mumble route'), $selected['params']); 117 118 // Match second route 119 $route = $r->find_route('a/b/c'); 120 $this->assertEquals(':controller/:action/:id', $route['path']); 121 $this->assertNull($route['params']); 122 $selected = $r->get_selected_route(); 123 $this->assertEquals(':controller/:action/:id', $selected['path']); 124 $this->assertNull($selected['params']); 125 } 126 127 /** 128 * Test route table with one regexp entry besides default 129 */ 130 public function testRegexp_route() { 131 $r = new Router; 132 // Build route table 133 $r->connect(':foo/:bar/\?(catalog|part)number=.*', 134 array('number route')); 135 $r->connect(':controller/:action/:id', array('default route')); 136 137 // Match first route 138 $route = $r->find_route('a/b/?catalognumber=17'); 139 $this->assertEquals(':foo/:bar/\?(catalog|part)number=.*', 140 $route['path']); 141 $this->assertEquals(array('number route'), $route['params']); 142 $route = $r->find_route('a/b/?partnumber=123-456'); 143 $this->assertEquals(':foo/:bar/\?(catalog|part)number=.*', 144 $route['path']); 145 $this->assertEquals(array('number route'), $route['params']); 146 $route = $r->find_route('a/b/?personnumber=156'); 147 $this->assertEquals(':controller/:action/:id', $route['path']); 148 $this->assertEquals(array('default route'), $route['params']); 149 } 150 151 /** 152 * Test route table with route with empty path 153 */ 154 public function testEmpty_route() { 155 $r = new Router; 156 // Build route table with only an empty path 157 $r->connect('', array('empty route')); 158 $route = $r->find_route(''); 159 $this->assertEquals('', $route['path']); 160 $this->assertEquals(array('empty route'), $route['params']); 161 // This route shouldn't match anything 162 $route = $r->find_route('mumble/foo'); 163 $this->assertNull($route); 164 } 165 } 166 167 // Call RouterTest::main() if this source file is executed directly. 168 if (PHPUnit2_MAIN_METHOD == "RouterTest::main") { 169 RouterTest::main(); 170 } 171 172 // -- set Emacs parameters -- 173 // Local variables: 174 // tab-width: 4 175 // c-basic-offset: 4 176 // c-hanging-comment-ender-p: nil 177 // indent-tabs-mode: nil 178 // End: 179 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Sun Feb 25 20:04:38 2007 | par Balluche grâce à PHPXref 0.7 |