Ejemplo n.º 1
0
 /**
  * 测试对 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.");
             }
         }
     }
 }