...

Source file src/go.einride.tech/aip/resourcename/matches_test.go

Documentation: go.einride.tech/aip/resourcename

     1  package resourcename
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"gotest.tools/v3/assert"
     8  )
     9  
    10  func TestMatches(t *testing.T) {
    11  	t.Parallel()
    12  	for _, tt := range []struct {
    13  		test     string
    14  		name     string
    15  		pattern  string
    16  		expected bool
    17  	}{
    18  		{
    19  			test:     "valid pattern",
    20  			name:     "shippers/1/sites/1",
    21  			pattern:  "shippers/{shipper}/sites/{site}",
    22  			expected: true,
    23  		},
    24  
    25  		{
    26  			test:     "name longer than pattern",
    27  			name:     "shippers/1/sites/1/settings",
    28  			pattern:  "shippers/{shipper}/sites/{site}",
    29  			expected: false,
    30  		},
    31  
    32  		{
    33  			test:     "empty pattern",
    34  			pattern:  "",
    35  			name:     "shippers/1/sites/1",
    36  			expected: false,
    37  		},
    38  
    39  		{
    40  			test:     "empty pattern and empty name",
    41  			pattern:  "",
    42  			name:     "",
    43  			expected: false,
    44  		},
    45  
    46  		{
    47  			test:     "singleton",
    48  			name:     "shippers/1/sites/1/settings",
    49  			pattern:  "shippers/{shipper}/sites/{site}/settings",
    50  			expected: true,
    51  		},
    52  
    53  		{
    54  			test:     "wildcard pattern",
    55  			name:     "shippers/1/sites/1",
    56  			pattern:  "shippers/-/sites/-",
    57  			expected: false,
    58  		},
    59  
    60  		{
    61  			test:     "full parent",
    62  			name:     "//freight-example.einride.tech/shippers/1/sites/1",
    63  			pattern:  "shippers/{shipper}/sites/{site}",
    64  			expected: true,
    65  		},
    66  
    67  		{
    68  			test:     "full pattern",
    69  			name:     "shippers/1",
    70  			pattern:  "//freight-example.einride.tech/shippers/{shipper}",
    71  			expected: false,
    72  		},
    73  
    74  		{
    75  			test:     "slash prefix in the name",
    76  			name:     "/shippers/1",
    77  			pattern:  "shippers/{shipper}",
    78  			expected: true,
    79  		},
    80  
    81  		{
    82  			test:     "slash prefix in the pattern",
    83  			name:     "shippers/1",
    84  			pattern:  "/shippers/{shipper}",
    85  			expected: true,
    86  		},
    87  	} {
    88  		tt := tt
    89  		t.Run(tt.test, func(t *testing.T) {
    90  			t.Parallel()
    91  			assert.Check(
    92  				t,
    93  				Match(tt.pattern, tt.name) == tt.expected,
    94  				fmt.Sprintf("expected Match(%q, %q)=%t", tt.pattern, tt.name, tt.expected),
    95  			)
    96  		})
    97  	}
    98  }
    99  

View as plain text