diff options
Diffstat (limited to 'src/shrpx_router_test.cc')
-rw-r--r-- | src/shrpx_router_test.cc | 111 |
1 files changed, 42 insertions, 69 deletions
diff --git a/src/shrpx_router_test.cc b/src/shrpx_router_test.cc index a9625a0..0fc4a3a 100644 --- a/src/shrpx_router_test.cc +++ b/src/shrpx_router_test.cc @@ -51,16 +51,16 @@ struct Pattern { void test_shrpx_router_match(void) { auto patterns = std::vector<Pattern>{ - {StringRef::from_lit("nghttp2.org/"), 0}, - {StringRef::from_lit("nghttp2.org/alpha"), 1}, - {StringRef::from_lit("nghttp2.org/alpha/"), 2}, - {StringRef::from_lit("nghttp2.org/alpha/bravo/"), 3}, - {StringRef::from_lit("www.nghttp2.org/alpha/"), 4}, - {StringRef::from_lit("/alpha"), 5}, - {StringRef::from_lit("example.com/alpha/"), 6}, - {StringRef::from_lit("nghttp2.org/alpha/bravo2/"), 7}, - {StringRef::from_lit("www2.nghttp2.org/alpha/"), 8}, - {StringRef::from_lit("www2.nghttp2.org/alpha2/"), 9}, + {"nghttp2.org/"_sr, 0}, + {"nghttp2.org/alpha"_sr, 1}, + {"nghttp2.org/alpha/"_sr, 2}, + {"nghttp2.org/alpha/bravo/"_sr, 3}, + {"www.nghttp2.org/alpha/"_sr, 4}, + {"/alpha"_sr, 5}, + {"example.com/alpha/"_sr, 6}, + {"nghttp2.org/alpha/bravo2/"_sr, 7}, + {"www2.nghttp2.org/alpha/"_sr, 8}, + {"www2.nghttp2.org/alpha2/"_sr, 9}, }; Router router; @@ -71,56 +71,49 @@ void test_shrpx_router_match(void) { ssize_t idx; - idx = router.match(StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/")); + idx = router.match("nghttp2.org"_sr, "/"_sr); assert_ssize(0, ==, idx); - idx = router.match(StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/alpha")); + idx = router.match("nghttp2.org"_sr, "/alpha"_sr); assert_ssize(1, ==, idx); - idx = router.match(StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/alpha/")); + idx = router.match("nghttp2.org"_sr, "/alpha/"_sr); assert_ssize(2, ==, idx); - idx = router.match(StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/alpha/charlie")); + idx = router.match("nghttp2.org"_sr, "/alpha/charlie"_sr); assert_ssize(2, ==, idx); - idx = router.match(StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/alpha/bravo/")); + idx = router.match("nghttp2.org"_sr, "/alpha/bravo/"_sr); assert_ssize(3, ==, idx); // matches pattern when last '/' is missing in path - idx = router.match(StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/alpha/bravo")); + idx = router.match("nghttp2.org"_sr, "/alpha/bravo"_sr); assert_ssize(3, ==, idx); - idx = router.match(StringRef::from_lit("www2.nghttp2.org"), - StringRef::from_lit("/alpha")); + idx = router.match("www2.nghttp2.org"_sr, "/alpha"_sr); assert_ssize(8, ==, idx); - idx = router.match(StringRef{}, StringRef::from_lit("/alpha")); + idx = router.match(StringRef{}, "/alpha"_sr); assert_ssize(5, ==, idx); } void test_shrpx_router_match_wildcard(void) { - constexpr auto patterns = std::array<Pattern, 6>{{ - {StringRef::from_lit("nghttp2.org/"), 0}, - {StringRef::from_lit("nghttp2.org/"), 1, true}, - {StringRef::from_lit("nghttp2.org/alpha/"), 2}, - {StringRef::from_lit("nghttp2.org/alpha/"), 3, true}, - {StringRef::from_lit("nghttp2.org/bravo"), 4}, - {StringRef::from_lit("nghttp2.org/bravo"), 5, true}, - }}; + constexpr auto patterns = std::to_array<Pattern>({ + {"nghttp2.org/"_sr, 0}, + {"nghttp2.org/"_sr, 1, true}, + {"nghttp2.org/alpha/"_sr, 2}, + {"nghttp2.org/alpha/"_sr, 3, true}, + {"nghttp2.org/bravo"_sr, 4}, + {"nghttp2.org/bravo"_sr, 5, true}, + }); Router router; @@ -128,49 +121,31 @@ void test_shrpx_router_match_wildcard(void) { router.add_route(p.pattern, p.idx, p.wildcard); } - assert_ssize(0, ==, - router.match(StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/"))); + assert_ssize(0, ==, router.match("nghttp2.org"_sr, "/"_sr)); - assert_ssize(1, ==, - router.match(StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/a"))); + assert_ssize(1, ==, router.match("nghttp2.org"_sr, "/a"_sr)); - assert_ssize(1, ==, - router.match(StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/charlie"))); + assert_ssize(1, ==, router.match("nghttp2.org"_sr, "/charlie"_sr)); - assert_ssize(2, ==, - router.match(StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/alpha"))); + assert_ssize(2, ==, router.match("nghttp2.org"_sr, "/alpha"_sr)); - assert_ssize(2, ==, - router.match(StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/alpha/"))); + assert_ssize(2, ==, router.match("nghttp2.org"_sr, "/alpha/"_sr)); - assert_ssize(3, ==, - router.match(StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/alpha/b"))); + assert_ssize(3, ==, router.match("nghttp2.org"_sr, "/alpha/b"_sr)); - assert_ssize(4, ==, - router.match(StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/bravo"))); + assert_ssize(4, ==, router.match("nghttp2.org"_sr, "/bravo"_sr)); - assert_ssize(5, ==, - router.match(StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/bravocharlie"))); + assert_ssize(5, ==, router.match("nghttp2.org"_sr, "/bravocharlie"_sr)); - assert_ssize(5, ==, - router.match(StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/bravo/"))); + assert_ssize(5, ==, router.match("nghttp2.org"_sr, "/bravo/"_sr)); } void test_shrpx_router_match_prefix(void) { auto patterns = std::vector<Pattern>{ - {StringRef::from_lit("gro.2ptthgn."), 0}, - {StringRef::from_lit("gro.2ptthgn.www."), 1}, - {StringRef::from_lit("gro.2ptthgn.gmi."), 2}, - {StringRef::from_lit("gro.2ptthgn.gmi.ahpla."), 3}, + {"gro.2ptthgn."_sr, 0}, + {"gro.2ptthgn.www."_sr, 1}, + {"gro.2ptthgn.gmi."_sr, 2}, + {"gro.2ptthgn.gmi.ahpla."_sr, 3}, }; Router router; @@ -185,19 +160,17 @@ void test_shrpx_router_match_prefix(void) { node = nullptr; - idx = router.match_prefix(&nread, &node, - StringRef::from_lit("gro.2ptthgn.gmi.ahpla.ovarb")); + idx = router.match_prefix(&nread, &node, "gro.2ptthgn.gmi.ahpla.ovarb"_sr); assert_ssize(0, ==, idx); assert_size(12, ==, nread); - idx = router.match_prefix(&nread, &node, - StringRef::from_lit("gmi.ahpla.ovarb")); + idx = router.match_prefix(&nread, &node, "gmi.ahpla.ovarb"_sr); assert_ssize(2, ==, idx); assert_size(4, ==, nread); - idx = router.match_prefix(&nread, &node, StringRef::from_lit("ahpla.ovarb")); + idx = router.match_prefix(&nread, &node, "ahpla.ovarb"_sr); assert_ssize(3, ==, idx); assert_ssize(6, ==, nread); |