@ParameterizedTest
    @MethodSource("generateRouteMatchData")
    void testFindAllMatchedRouters(String path, int expectForFind, List<Integer> expectForFindAll) {
        final List<Route> routes = Lists.newArrayList(
                Route.builder().path("prefix:/a").build(),
                Route.builder().path("/a/{var}").build(),
                Route.builder().path("prefix:/c").build(),
                Route.builder().path("regex:/d/([^/]+)").build(),
                Route.builder().path("glob:/d/**").build(),
                Route.builder().path("exact:/e").build(),
                Route.builder().path("glob:/h/**/z").build(),
                Route.builder().path("prefix:/h").build()
        );
        final List<Router<Route>> routers =
                Routers.routers(routes, null, null, Function.identity(), REJECT, false);
        final CompositeRouter<Route, Route> router = new CompositeRouter<>(routers, Function.identity());
        final RoutingContext routingCtx = routingCtx(path);
        assertThat(router.find(routingCtx).route()).isEqualTo(routes.get(expectForFind));

        final List<Route> matched = router.findAll(routingCtx)
                                          .stream().map(Routed::route).collect(toImmutableList());
        final List<Route> expected = expectForFindAll.stream().map(routes::get).collect(toImmutableList());
        assertThat(matched).containsAll(expected);
    }
/z").build(),
                Route.builder().path("exact:/f").build(),         // router 3
                Route.builder().path("/g/{var}").build(),
                Route.builder().path("glob:/h/*
core/src/test/java/com/linecorp/armeria/server/RouterTest.java