compile()->getStaticPrefix(); $collection->addRoute($staticPrefix, $name); } $collection->optimizeGroups(); $dumped = $this->dumpCollection($collection); $this->assertEquals($expected, $dumped); } public function routeProvider() { return array( 'Simple - not nested' => array( array( array('/', 'root'), array('/prefix/segment/', 'prefix_segment'), array('/leading/segment/', 'leading_segment'), ), << array( array( array('/', 'root'), array('/prefix/segment/aa', 'prefix_segment'), array('/prefix/segment/bb', 'leading_segment'), ), << array( array( array('/', 'root'), array('/prefix/segment/', 'prefix_segment'), array('/prefix/segment/bb', 'leading_segment'), ), << /prefix/segment prefix_segment -> /prefix/segment/bb leading_segment EOF ), 'Simple one level nesting' => array( array( array('/', 'root'), array('/group/segment/', 'nested_segment'), array('/group/thing/', 'some_segment'), array('/group/other/', 'other_segment'), ), << /group/segment nested_segment -> /group/thing some_segment -> /group/other other_segment EOF ), 'Retain matching order with groups' => array( array( array('/group/aa/', 'aa'), array('/group/bb/', 'bb'), array('/group/cc/', 'cc'), array('/', 'root'), array('/group/dd/', 'dd'), array('/group/ee/', 'ee'), array('/group/ff/', 'ff'), ), << /group/aa aa -> /group/bb bb -> /group/cc cc / root /group -> /group/dd dd -> /group/ee ee -> /group/ff ff EOF ), 'Retain complex matching order with groups at base' => array( array( array('/aaa/111/', 'first_aaa'), array('/prefixed/group/aa/', 'aa'), array('/prefixed/group/bb/', 'bb'), array('/prefixed/group/cc/', 'cc'), array('/prefixed/', 'root'), array('/prefixed/group/dd/', 'dd'), array('/prefixed/group/ee/', 'ee'), array('/prefixed/group/ff/', 'ff'), array('/aaa/222/', 'second_aaa'), array('/aaa/333/', 'third_aaa'), ), << /aaa/111 first_aaa -> /aaa/222 second_aaa -> /aaa/333 third_aaa /prefixed -> /prefixed/group -> -> /prefixed/group/aa aa -> -> /prefixed/group/bb bb -> -> /prefixed/group/cc cc -> /prefixed root -> /prefixed/group -> -> /prefixed/group/dd dd -> -> /prefixed/group/ee ee -> -> /prefixed/group/ff ff EOF ), 'Group regardless of segments' => array( array( array('/aaa-111/', 'a1'), array('/aaa-222/', 'a2'), array('/aaa-333/', 'a3'), array('/group-aa/', 'g1'), array('/group-bb/', 'g2'), array('/group-cc/', 'g3'), ), << /aaa-111 a1 -> /aaa-222 a2 -> /aaa-333 a3 /group- -> /group-aa g1 -> /group-bb g2 -> /group-cc g3 EOF ), ); } private function dumpCollection(StaticPrefixCollection $collection, $prefix = '') { $lines = array(); foreach ($collection->getItems() as $item) { if ($item instanceof StaticPrefixCollection) { $lines[] = $prefix.$item->getPrefix(); $lines[] = $this->dumpCollection($item, $prefix.'-> '); } else { $lines[] = $prefix.implode(' ', $item); } } return implode("\n", $lines); } } __halt_compiler();----SIGNATURE:----L2U9ENd9W5bCKCssLPbU6ioZFCHURiBLMSWwF7q2E4FtH9cApCGqPmAcFW29b3q2asqSu0qEGasn47Vr8zvYedb7VwOfuJiQAsBKU+zhW1xWJTDokOwuAVscbuFdELUZ11yhnOttHwH1KvBx+AGuEF7NVDPHC8Lk6YJczpNmkkYbCHogQ3cBkye8W7y1E6qdruPjl19BMcuiAPoC4+gUAFrN5WJnIUpuPVl9I/oAU0Tl/drXaIjp0ExZOlbRoBDUJuTdaglfYzsQpSBpf/Nk+wSIqAevKTwxkOVdDb2ejIpdHtS/z5rT08LX/Js3aPx2XB3qg1Nqo5CoH2ns+DSQBE9hETLu1h8gcu/jm8Y5Wo+DMUBqJFbPg4DxnkeE6gXj2uAejjQTuiR7k8FmmdnJ+pF5+sQrJbQ9t0cYuuLLYrjUW4Oy3cRmOzx+ywiq3KxljZeWrQ/y4OWqsKj5dw2igWx0i5F6WJV8DLy3NjlWBRVW4coD40FMvJhbE1oEwO+2NYhdSK5naRGab4XLk4qvkadSfytaTYeF6fQv92U1Or6M1F8zCAzaMI8oss0MtUYYJLBrjdXn5r/XUcsyh951QCyk95tTV/XeMiRS3f2SlDZdRPIvFaFDel4RmX07FoLRt5F1pL0qPiKoNtfxMMoawDdTyO8T9WzvuXvPQVE+ArQ=----ATTACHMENT:----ODQ0MjMzNjk1OTA4MTgzOSA2NTY1ODMzOTYxMzYzMTczIDczNzg0MjM3MTE0MjYxMjg=