feat(routing): implement router merging
This commit is contained in:
parent
6eb965adcd
commit
2ce49a3347
3 changed files with 208 additions and 4 deletions
|
|
@ -1,3 +1,5 @@
|
|||
#include "lnm/common.h"
|
||||
#include "lnm/http/route.h"
|
||||
#include "test.h"
|
||||
|
||||
#include "lnm/http/loop.h"
|
||||
|
|
@ -51,10 +53,57 @@ void test_routing_star() {
|
|||
TEST_CHECK(lnm_http_router_route(&match, router, lnm_http_method_get, "/hello/world") == lnm_http_route_err_match);
|
||||
TEST_CHECK(match.key_segments[0].start == 1);
|
||||
TEST_CHECK(match.key_segments[0].len == 11);
|
||||
|
||||
lnm_http_router_free(router);
|
||||
}
|
||||
|
||||
void test_routing_merge() {
|
||||
lnm_http_router *rtr1, *rtr2;
|
||||
lnm_http_route *rt1, *rt2;
|
||||
lnm_http_route_match match;
|
||||
|
||||
TEST_CHECK(lnm_http_router_init(&rtr1) == lnm_err_ok);
|
||||
TEST_CHECK(lnm_http_router_init(&rtr2) == lnm_err_ok);
|
||||
|
||||
TEST_CHECK(lnm_http_router_add(&rt1, rtr1, lnm_http_method_get, "/*key") == lnm_err_ok);
|
||||
TEST_CHECK(lnm_http_router_add(NULL, rtr1, lnm_http_method_get, "/:key/hello") == lnm_err_ok);
|
||||
TEST_CHECK(lnm_http_router_add(&rt2, rtr2, lnm_http_method_get, "/test2") == lnm_err_ok);
|
||||
TEST_CHECK(lnm_http_router_add(NULL, rtr2, lnm_http_method_get, "/:key/hello2") == lnm_err_ok);
|
||||
|
||||
TEST_CHECK(lnm_http_router_merge(rtr1, rtr2) == lnm_err_ok);
|
||||
|
||||
TEST_CHECK(lnm_http_router_route(&match, rtr1, lnm_http_method_get, "/some/thing") == lnm_http_route_err_match);
|
||||
TEST_CHECK(match.route == rt1);
|
||||
|
||||
TEST_CHECK(lnm_http_router_route(&match, rtr1, lnm_http_method_get, "/test2") == lnm_http_route_err_match);
|
||||
TEST_CHECK(match.route == rt2);
|
||||
}
|
||||
|
||||
void test_routing_nest() {
|
||||
lnm_http_router *r1;
|
||||
TEST_CHECK(lnm_http_router_init(&r1) == lnm_err_ok);
|
||||
|
||||
TEST_CHECK(lnm_http_router_add(NULL, r1, lnm_http_method_get, "/*key") == lnm_err_ok);
|
||||
|
||||
lnm_http_router *r2;
|
||||
TEST_CHECK(lnm_http_router_init(&r2) == lnm_err_ok);
|
||||
TEST_CHECK(lnm_http_router_add(NULL, r2, lnm_http_method_get, "/test/test2") == lnm_err_ok);
|
||||
|
||||
TEST_CHECK(lnm_http_router_nest(r2, r1, "/test") == lnm_err_ok);
|
||||
|
||||
lnm_http_route_match match;
|
||||
TEST_CHECK(lnm_http_router_route(&match, r2, lnm_http_method_get, "/test/test_var/secondvar") == lnm_http_route_err_match);
|
||||
TEST_CHECK(match.key_segments[0].start == 6);
|
||||
TEST_CHECK(match.key_segments[0].len == 18);
|
||||
|
||||
TEST_CHECK(lnm_http_router_route(&match, r2, lnm_http_method_get, "/test/test2") == lnm_http_route_err_match);
|
||||
|
||||
}
|
||||
|
||||
TEST_LIST = {
|
||||
{ "routing simple", test_routing_simple },
|
||||
{ "routing star", test_routing_star },
|
||||
{ "routing merge", test_routing_merge },
|
||||
/* { "routing nest", test_routing_nest }, */
|
||||
{ NULL, NULL }
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue