Exemplo n.º 1
0
 public function testLeafRouteTreeNode()
 {
     $matcher = $this->mock(AbstractMatcher::class);
     $contents = new MatchedRouteDataMap();
     $node = new RouteTreeNode([$matcher], $contents);
     $this->assertSame([$matcher], $node->getMatchers());
     $this->assertSame($matcher, $node->getFirstMatcher());
     $this->assertSame($contents, $node->getContents());
     $this->assertTrue($node->isLeafNode());
     $this->assertFalse($node->isParentNode());
 }
Exemplo n.º 2
0
 /**
  * [optimizeNode description]
  *
  * @param RouteTreeNode $node
  *
  * @return RouteTreeNode
  */
 protected function optimizeNode(RouteTreeNode $node) : RouteTreeNode
 {
     $matchers = $node->getMatchers();
     $contents = $node->getContents();
     if ($node->isParentNode()) {
         $contents = $this->optimizeNodes($node->getContents());
         $children = $contents->getChildren();
         if (count($children) === 1) {
             $childNode = reset($children);
             $matchers = MatcherOptimizer::mergeMatchers($node->getMatchers(), $childNode->getMatchers());
             $contents = $childNode->getContents();
         }
     }
     $matchers = MatcherOptimizer::optimizeMatchers($matchers);
     return $node->update($matchers, $contents);
 }