github.com/tickoalcantara12/micro/v3@v3.0.0-20221007104245-9d75b9bcbab9/util/router/types_test.go (about)

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