⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 router.test.php

📁 Cake Framwork , Excellent
💻 PHP
📖 第 1 页 / 共 5 页
字号:
<?php/* SVN FILE: $Id: router.test.php 7118 2008-06-04 20:49:29Z gwoo $ *//** * Short description for file. * * Long description for file * * PHP versions 4 and 5 * * CakePHP(tm) Tests <https://trac.cakephp.org/wiki/Developement/TestSuite> * Copyright 2005-2008, Cake Software Foundation, Inc. *								1785 E. Sahara Avenue, Suite 490-204 *								Las Vegas, Nevada 89104 * *	Licensed under The Open Group Test Suite License *	Redistributions of files must retain the above copyright notice. * * @filesource * @copyright		Copyright 2005-2008, Cake Software Foundation, Inc. * @link				https://trac.cakephp.org/wiki/Developement/TestSuite CakePHP(tm) Tests * @package			cake.tests * @subpackage		cake.tests.cases.libs * @since			CakePHP(tm) v 1.2.0.4206 * @version			$Revision: 7118 $ * @modifiedby		$LastChangedBy: gwoo $ * @lastmodified	$Date: 2008-06-04 13:49:29 -0700 (Wed, 04 Jun 2008) $ * @license			http://www.opensource.org/licenses/opengroup.php The Open Group Test Suite License */App::import('Core', array('Router', 'Debugger'));if (!defined('FULL_BASE_URL')) {	define('FULL_BASE_URL', 'http://cakephp.org');}/** * Short description for class. * * @package		cake.tests * @subpackage	cake.tests.cases.libs */class RouterTest extends UnitTestCase {/** * setUp method *  * @access public * @return void */	function setUp() {		Router::reload();		$this->router =& Router::getInstance();	}/** * testReturnedInstanceReference method *  * @access public * @return void */	function testReturnedInstanceReference() {		$this->router->testVar = 'test';		$this->assertIdentical($this->router, Router::getInstance());		unset($this->router->testVar);	}/** * testFullBaseURL method *  * @access public * @return void */	function testFullBaseURL() {		$this->assertPattern('/^http(s)?:\/\//', Router::url('/', true));		$this->assertPattern('/^http(s)?:\/\//', Router::url(null, true));	}/** * testRouteWriting method *  * @access public * @return void */	function testRouteWriting() {		Router::connect('/');		$this->assertEqual($this->router->routes[0][0], '/');		$this->assertEqual($this->router->routes[0][1], '/^[\/]*$/');		$this->assertEqual($this->router->routes[0][2], array());		Router::reload();		Router::connect('/', array('controller' => 'testing'));		$this->assertTrue(is_array($this->router->routes[0][3]) && !empty($this->router->routes[0][3]));		$this->assertEqual($this->router->routes[0][3]['controller'], 'testing');		$this->assertEqual($this->router->routes[0][3]['action'], 'index');		$this->assertEqual(count($this->router->routes[0][3]), 3);		$this->router->routes = array();		Router::connect('/:controller', array('controller' => 'testing2'));		$this->assertTrue(is_array($this->router->routes[0][3]) && !empty($this->router->routes[0][3]), '/');		$this->assertEqual($this->router->routes[0][3]['controller'], 'testing2');		$this->assertEqual($this->router->routes[0][3]['action'], 'index');		$this->assertEqual(count($this->router->routes[0][3]), 3);		$this->router->routes = array();		Router::connect('/:controller/:action', array('controller' => 'testing3'));		$this->assertEqual($this->router->routes[0][0], '/:controller/:action');		$this->assertEqual($this->router->routes[0][1], '#^(?:/([^\/]+))?(?:/([^\/]+))?[\/]*$#');		$this->assertEqual($this->router->routes[0][2], array('controller', 'action'));		$this->assertEqual($this->router->routes[0][3], array('controller' => 'testing3', 'action' => 'index', 'plugin' => null));		$this->router->routes = array();		Router::connect('/:controller/:action/:id', array('controller' => 'testing4', 'id' => null), array('id' => $this->router->__named['ID']));		$this->assertEqual($this->router->routes[0][0], '/:controller/:action/:id');		$this->assertEqual($this->router->routes[0][1], '#^(?:/([^\/]+))?(?:/([^\/]+))?(?:/([0-9]+)?)?[\/]*$#');		$this->assertEqual($this->router->routes[0][2], array('controller', 'action', 'id'));		$this->router->routes = array();		Router::connect('/:controller/:action/:id', array('controller' => 'testing4'), array('id' => $this->router->__named['ID']));		$this->assertEqual($this->router->routes[0][1], '#^(?:/([^\/]+))?(?:/([^\/]+))?(?:/([0-9]+))[\/]*$#');		$this->router->routes = array();		Router::connect('/posts/foo:id');		$this->assertEqual($this->router->routes[0][2], array('id'));		$this->assertEqual($this->router->routes[0][1], '#^/posts(?:/foo([^\/]+))?[\/]*$#');		foreach (array(':', '@', ';', '$', '-') as $delim) {			$this->router->routes = array();			Router::connect('/posts/:id'.$delim.':title');			$this->assertEqual($this->router->routes[0][2], array('id', 'title'));			$this->assertEqual($this->router->routes[0][1], '#^/posts(?:/([^\/]+))?(?:'.preg_quote($delim, '#').'([^\/]+))?[\/]*$#');		}		$this->router->routes = array();		Router::connect('/posts/:id::title/:year');		$this->assertEqual($this->router->routes[0][2], array('id', 'title', 'year'));		$this->assertEqual($this->router->routes[0][1], '#^/posts(?:/([^\/]+))?(?:\\:([^\/]+))?(?:/([^\/]+))?[\/]*$#');	}/** * testRouteDefaultParams method *  * @access public * @return void */	function testRouteDefaultParams() {		Router::connect('/:controller', array('controller' => 'posts'));		$this->assertEqual(Router::url(array('action' => 'index')), '/');	}/** * testRouterIdentity method *  * @access public * @return void */	function testRouterIdentity() {		$router2 = new Router();		$this->assertEqual(get_object_vars($this->router), get_object_vars($router2));	}/** * testResourceRoutes method *  * @access public * @return void */	function testResourceRoutes() {		Router::mapResources('Posts');		$_SERVER['REQUEST_METHOD'] = 'GET';		$result = Router::parse('/posts');		$this->assertEqual($result, array('pass' => array(), 'named' => array(), 'plugin' => '', 'controller' => 'posts', 'action' => 'index', '[method]' => 'GET'));		$this->assertEqual($this->router->__resourceMapped, array('posts'));		$_SERVER['REQUEST_METHOD'] = 'GET';		$result = Router::parse('/posts/13');		$this->assertEqual($result, array('pass' => array('13'), 'named' => array(), 'plugin' => '', 'controller' => 'posts', 'action' => 'view', 'id' => '13', '[method]' => 'GET'));		$this->assertEqual($this->router->__resourceMapped, array('posts'));		$_SERVER['REQUEST_METHOD'] = 'POST';		$result = Router::parse('/posts');		$this->assertEqual($result, array('pass' => array(), 'named' => array(), 'plugin' => '', 'controller' => 'posts', 'action' => 'add', '[method]' => 'POST'));		$this->assertEqual($this->router->__resourceMapped, array('posts'));		$_SERVER['REQUEST_METHOD'] = 'PUT';		$result = Router::parse('/posts/13');		$this->assertEqual($result, array('pass' => array('13'), 'named' => array(), 'plugin' => '', 'controller' => 'posts', 'action' => 'edit', 'id' => '13', '[method]' => 'PUT'));		$this->assertEqual($this->router->__resourceMapped, array('posts'));		$result = Router::parse('/posts/475acc39-a328-44d3-95fb-015000000000');		$this->assertEqual($result, array('pass' => array('475acc39-a328-44d3-95fb-015000000000'), 'named' => array(), 'plugin' => '', 'controller' => 'posts', 'action' => 'edit', 'id' => '475acc39-a328-44d3-95fb-015000000000', '[method]' => 'PUT'));		$this->assertEqual($this->router->__resourceMapped, array('posts'));		$_SERVER['REQUEST_METHOD'] = 'DELETE';		$result = Router::parse('/posts/13');		$this->assertEqual($result, array('pass' => array('13'), 'named' => array(), 'plugin' => '', 'controller' => 'posts', 'action' => 'delete', 'id' => '13', '[method]' => 'DELETE'));		$this->assertEqual($this->router->__resourceMapped, array('posts'));		$_SERVER['REQUEST_METHOD'] = 'GET';		$result = Router::parse('/posts/add');		$this->assertEqual($result, array('pass' => array(), 'named' => array(), 'plugin' => '', 'controller' => 'posts', 'action' => 'add'));		$this->assertEqual($this->router->__resourceMapped, array('posts'));		Router::reload();		Router::mapResources('Posts', array('id' => '[a-z0-9_]+'));		$_SERVER['REQUEST_METHOD'] = 'GET';		$result = Router::parse('/posts/add');		$this->assertEqual($result, array('pass' => array('add'), 'named' => array(), 'plugin' => '', 'controller' => 'posts', 'action' => 'view', 'id' => 'add', '[method]' => 'GET'));		$this->assertEqual($this->router->__resourceMapped, array('posts'));		$_SERVER['REQUEST_METHOD'] = 'PUT';		$result = Router::parse('/posts/name');		$this->assertEqual($result, array('pass' => array('name'), 'named' => array(), 'plugin' => '', 'controller' => 'posts', 'action' => 'edit', 'id' => 'name', '[method]' => 'PUT'));		$this->assertEqual($this->router->__resourceMapped, array('posts'));	}/** * testMultipleResourceRoute method *  * @access public * @return void */	function testMultipleResourceRoute() {		Router::connect('/:controller', array('action' => 'index', '[method]' => array('GET', 'POST')));		$_SERVER['REQUEST_METHOD'] = 'GET';		$result = Router::parse('/posts');		$this->assertEqual($result, array('pass' => array(), 'named' => array(), 'plugin' => '', 'controller' => 'posts', 'action' => 'index', '[method]' => array('GET', 'POST')));		$_SERVER['REQUEST_METHOD'] = 'POST';		$result = Router::parse('/posts');		$this->assertEqual($result, array('pass' => array(), 'named' => array(), 'plugin' => '', 'controller' => 'posts', 'action' => 'index', '[method]' => array('GET', 'POST')));	}/** * testUrlNormalization method *  * @access public * @return void */	function testUrlNormalization() {		$expected = '/users/logout';		$result = Router::normalize('/users/logout/');		$this->assertEqual($result, $expected);		$result = Router::normalize('//users//logout//');		$this->assertEqual($result, $expected);		$result = Router::normalize('users/logout');		$this->assertEqual($result, $expected);		$result = Router::normalize(array('controller' => 'users', 'action' => 'logout'));		$this->assertEqual($result, $expected);		$result = Router::normalize('/');		$this->assertEqual($result, '/');	}/** * testUrlGeneration method *  * @access public * @return void */	function testUrlGeneration() {		extract(Router::getNamedExpressions());		Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));		$out = Router::url(array('controller' => 'pages', 'action' => 'display', 'home'));		$this->assertEqual($out, '/');		Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));		$result = Router::url(array('controller' => 'pages', 'action' => 'display', 'about'));		$expected = '/pages/about';		$this->assertEqual($result, $expected);		Router::reload();		Router::parse('/');		Router::connect('/:plugin/:id/*', array('controller' => 'posts', 'action' => 'view'), array('id' => $ID));		$result = Router::url(array('plugin' => 'cake_plugin', 'controller' => 'posts', 'action' => 'view', 'id' => '1'));		$expected = '/cake_plugin/1';		$this->assertEqual($result, $expected);		$result = Router::url(array('plugin' => 'cake_plugin', 'controller' => 'posts', 'action' => 'view', 'id' => '1', '0'));		$expected = '/cake_plugin/1/0';

⌨️ 快捷键说明

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