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()); }
/** * [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); }