exports.anythingMatchesAnyPathAndAddsRemainingPathToParameters = function(test) {
    var yearParameter = paths.parameters.regex(/[0-9]+/);
    
    var controller = function(year, remainingPath, callback) {
        callback(null, {year: year, remainingPath: remainingPath});
    };
    
    var navigator = paths.navigator(
        paths.then(yearParameter,
            paths.anything(paths.useController(controller, yearParameter, paths.parameters.remainingPath))
        )
    );
    navigator.navigate("/2011/06/first-post", function(err, result) {
        test.ok(result.matched);
        result.value(function(err, value) {
            test.equal("2011", value.year);
            test.equal("06/first-post", value.remainingPath);
            test.done();
        });
    });
};
exports.usingControllerGivesValueThatCallsControllerWithSpecifiedParameterValues = function(test) {
    var yearParameter = paths.parameters.regex(/[0-9]+/);
    var monthParameter = paths.parameters.regex(/[0-9]+/);
    
    var controller = function(year, month, callback) {
        callback(null, {year: year, month: month});
    };
    
    var navigator = paths.navigator(
        paths.then(yearParameter,
            paths.then(monthParameter,
                paths.end(paths.useController(controller, yearParameter, monthParameter))
            )
        )
    );
    navigator.navigate("/2011/06", function(err, result) {
        test.ok(result.matched);
        result.value(function(err, value) {
            test.equal("2011", value.year);
            test.equal("06", value.month);
            test.done();
        });
    });
};