github.com/grpc-ecosystem/grpc-gateway/v2@v2.19.1/internal/httprule/types_test.go (about) 1 package httprule 2 3 import ( 4 "fmt" 5 "testing" 6 ) 7 8 func TestTemplateStringer(t *testing.T) { 9 for _, spec := range []struct { 10 segs []segment 11 want string 12 }{ 13 { 14 segs: []segment{ 15 literal("v1"), 16 }, 17 want: "/v1", 18 }, 19 { 20 segs: []segment{ 21 wildcard{}, 22 }, 23 want: "/*", 24 }, 25 { 26 segs: []segment{ 27 deepWildcard{}, 28 }, 29 want: "/**", 30 }, 31 { 32 segs: []segment{ 33 variable{ 34 path: "name", 35 segments: []segment{ 36 literal("a"), 37 }, 38 }, 39 }, 40 want: "/{name=a}", 41 }, 42 { 43 segs: []segment{ 44 variable{ 45 path: "name", 46 segments: []segment{ 47 literal("a"), 48 wildcard{}, 49 literal("b"), 50 }, 51 }, 52 }, 53 want: "/{name=a/*/b}", 54 }, 55 { 56 segs: []segment{ 57 literal("v1"), 58 variable{ 59 path: "name", 60 segments: []segment{ 61 literal("a"), 62 wildcard{}, 63 literal("b"), 64 }, 65 }, 66 literal("c"), 67 variable{ 68 path: "field.nested", 69 segments: []segment{ 70 wildcard{}, 71 literal("d"), 72 }, 73 }, 74 wildcard{}, 75 literal("e"), 76 deepWildcard{}, 77 }, 78 want: "/v1/{name=a/*/b}/c/{field.nested=*/d}/*/e/**", 79 }, 80 } { 81 tmpl := template{segments: spec.segs} 82 if got, want := tmpl.String(), spec.want; got != want { 83 t.Errorf("%#v.String() = %q; want %q", tmpl, got, want) 84 } 85 86 tmpl.verb = "LOCK" 87 if got, want := tmpl.String(), fmt.Sprintf("%s:LOCK", spec.want); got != want { 88 t.Errorf("%#v.String() = %q; want %q", tmpl, got, want) 89 } 90 } 91 }