/**
 * Sets up Pux tests
 */
function setupPux(Benchmark $benchmark, $routes, $args)
{
    $name = extension_loaded('pux') ? 'Pux ext' : 'Pux PHP';
    $argString = implode('/', array_map(function ($i) {
        return ':arg' . $i;
    }, range(1, $args)));
    $str = $firstStr = $lastStr = '';
    $router = new \Pux\Mux();
    for ($i = 0; $i < $routes; $i++) {
        list($pre, $post) = getRandomParts();
        $str = '/' . $pre . '/' . $argString . '/' . $post;
        if (0 === $i) {
            $firstStr = str_replace(':', '', $str);
        }
        $lastStr = str_replace(':', '', $str);
        $router->add($str, 'handler' . $i);
    }
    $benchmark->register(sprintf('%s - last route (%s routes)', $name, $routes), function () use($router, $lastStr) {
        $route = $router->match($lastStr);
    });
    $benchmark->register(sprintf('%s - unknown route (%s routes)', $name, $routes), function () use($router) {
        $route = $router->match('/not-even-real');
    });
}