MCPcopy
hub / github.com/gofiber/fiber / Test_Path_parseRoute

Function Test_Path_parseRoute

path_test.go:20–140  ·  view source on GitHub ↗

go test -race -run Test_Path_parseRoute

(t *testing.T)

Source from the content-addressed store, hash-verified

18
19// go test -race -run Test_Path_parseRoute
20func Test_Path_parseRoute(t *testing.T) {
21 t.Parallel()
22 var rp routeParser
23
24 rp = parseRoute("/shop/product/::filter/color::color/size::size", regexp.MustCompile)
25 require.Equal(t, routeParser{
26 segs: []*routeSegment{
27 {Const: "/shop/product/:", Length: 15},
28 {IsParam: true, ParamName: "filter", ComparePart: "/color:", PartCount: 1},
29 {Const: "/color:", Length: 7},
30 {IsParam: true, ParamName: "color", ComparePart: "/size:", PartCount: 1},
31 {Const: "/size:", Length: 6},
32 {IsParam: true, ParamName: "size", IsLast: true},
33 },
34 params: []string{"filter", "color", "size"},
35 }, rp)
36
37 rp = parseRoute("/api/v1/:param/abc/*", regexp.MustCompile)
38 require.Equal(t, routeParser{
39 segs: []*routeSegment{
40 {Const: "/api/v1/", Length: 8},
41 {IsParam: true, ParamName: "param", ComparePart: "/abc", PartCount: 1},
42 {Const: "/abc/", Length: 5, HasOptionalSlash: true},
43 {IsParam: true, ParamName: "*1", IsGreedy: true, IsOptional: true, IsLast: true},
44 },
45 params: []string{"param", "*1"},
46 wildCardCount: 1,
47 }, rp)
48
49 rp = parseRoute("/v1/some/resource/name\\:customVerb", regexp.MustCompile)
50 require.Equal(t, routeParser{
51 segs: []*routeSegment{
52 {Const: "/v1/some/resource/name:customVerb", Length: 33, IsLast: true},
53 },
54 params: nil,
55 }, rp)
56
57 rp = parseRoute("/v1/some/resource/:name\\:customVerb", regexp.MustCompile)
58 require.Equal(t, routeParser{
59 segs: []*routeSegment{
60 {Const: "/v1/some/resource/", Length: 18},
61 {IsParam: true, ParamName: "name", ComparePart: ":customVerb", PartCount: 1},
62 {Const: ":customVerb", Length: 11, IsLast: true},
63 },
64 params: []string{"name"},
65 }, rp)
66
67 // heavy test with escaped characters
68 rp = parseRoute("/v1/some/resource/name\\\\:customVerb?\\?/:param/*", regexp.MustCompile)
69 require.Equal(t, routeParser{
70 segs: []*routeSegment{
71 {Const: "/v1/some/resource/name:customVerb??/", Length: 36},
72 {IsParam: true, ParamName: "param", ComparePart: "/", PartCount: 1},
73 {Const: "/", Length: 1, HasOptionalSlash: true},
74 {IsParam: true, ParamName: "*1", IsGreedy: true, IsOptional: true, IsLast: true},
75 },
76 params: []string{"param", "*1"},
77 wildCardCount: 1,

Callers

nothing calls this directly

Calls 1

parseRouteFunction · 0.85

Tested by

no test coverage detected