/**
  * 测试对 URL 的分析
  */
 function testParse()
 {
     $router = new QRouter();
     $router->import(Q::ini('routes'));
     foreach ($this->_tests_url as $route_name => $test) {
         list($route_name) = explode('-', $route_name);
         $path = $test['_path'];
         unset($test['_path']);
         $result = $router->match($path);
         $this->assertType('array', $result);
         foreach ($test as $varname => $value) {
             if (!array_key_exists($varname, $result) || $value != $result[$varname]) {
                 $r = $router->lastMatchedRouteName();
                 dump($test, "path: {$path}");
                 dump($router->get($r), "matched route: {$r}");
                 dump($result, 'parse result');
                 dump($router->get($route_name), "expected route: {$route_name}");
             }
             $this->assertArrayHasKey($varname, $result, "\$result has't key: {$varname}.");
             $this->assertEquals($value, $result[$varname], sprintf('expected varname "%s" value is "%s".', $varname, $value));
             unset($result[$varname]);
         }
         foreach ($result as $key => $value) {
             switch ($key) {
                 case QContext::UDI_CONTROLLER:
                 case QContext::UDI_NAMESPACE:
                 case QContext::UDI_MODULE:
                     $this->assertEquals('default', $value);
                     break;
                 case QContext::UDI_ACTION:
                     $this->assertEquals('index', $value);
                     break;
                 default:
                     $this->assertEmpty($value, "\$result[{$key}] not empty.");
             }
         }
     }
 }
Beispiel #2
0
 /**
  * 测试对 URL 的分析
  */
 function testParse()
 {
     $router = new QRouter(QContext::instance());
     foreach ($this->_tests_url as $route_name => $test) {
         list($route_name) = explode('-', $route_name);
         $path = $test['_path'];
         unset($test['_path']);
         $result = $router->match($path);
         foreach ($test as $varname => $value) {
             if (!array_key_exists($varname, $result) || $value != $result[$varname]) {
                 QDebug::dump($router->get($route_name), "route: {$route_name}");
                 QDebug::dump($result, 'parse result');
             }
             $this->assertArrayHasKey($varname, $result);
             $this->assertEquals($value, $result[$varname], sprintf('expected varname "%s" value is "%s".', $varname, $value));
             unset($result[$varname]);
         }
         $this->assertEmpty($result);
     }
 }
Beispiel #3
0
 /**
  * 测试反向解析
  */
 function testReverseParse()
 {
     $context = QContext::instance();
     $router = new QRouter();
     $router->import(Q::ini('routes'));
     foreach ($this->_tests_args as $offset => $test) {
         $copy = $test;
         $path = $test['_path'];
         unset($test['_path']);
         $result = $router->url($test);
         list($route_name) = explode(':', $offset);
         if ($route_name != $router->lastReverseMatchedRouteName()) {
             dump('-----------------------------------');
             dump($path, 'test path');
             dump($test, $result);
             dump($router->lastReverseMatchedRouteName(), 'used route');
             dump($route_name, 'expected route');
             dump($router->get($route_name));
         }
         $this->assertEquals($route_name, $router->lastReverseMatchedRouteName(), "Expected route name is [{$route_name}].");
         $this->assertEquals($path, $result, "{$path} == {$result}\n" . print_r($copy, true) . "\n" . print_r($test, true));
     }
 }