File: pattern_test.go

package info (click to toggle)
golang-github-twin-gocache 2.2.2-2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 196 kB
  • sloc: makefile: 2
file content (121 lines) | stat: -rw-r--r-- 2,616 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
package gocache

import "testing"

func TestMatchPattern(t *testing.T) {
	scenarios := []struct {
		pattern         string
		key             string
		expectedToMatch bool
	}{
		{
			pattern:         "*",
			key:             "livingroom_123",
			expectedToMatch: true,
		},
		{
			pattern:         "*",
			key:             "livingroom_123",
			expectedToMatch: true,
		},
		{
			pattern:         "**",
			key:             "livingroom_123",
			expectedToMatch: true,
		},
		{
			pattern:         "living*",
			key:             "livingroom_123",
			expectedToMatch: true,
		},
		{
			pattern:         "*living*",
			key:             "livingroom_123",
			expectedToMatch: true,
		},
		{
			pattern:         "*123",
			key:             "livingroom_123",
			expectedToMatch: true,
		},
		{
			pattern:         "*_*",
			key:             "livingroom_123",
			expectedToMatch: true,
		},
		{
			pattern:         "living*_*3",
			key:             "livingroom_123",
			expectedToMatch: true,
		},
		{
			pattern:         "living*room_*3",
			key:             "livingroom_123",
			expectedToMatch: true,
		},
		{
			pattern:         "living*room_*3",
			key:             "livingroom_123",
			expectedToMatch: true,
		},
		{
			pattern:         "*vin*om*2*",
			key:             "livingroom_123",
			expectedToMatch: true,
		},
		{
			pattern:         "livingroom_123",
			key:             "livingroom_123",
			expectedToMatch: true,
		},
		{
			pattern:         "*livingroom_123*",
			key:             "livingroom_123",
			expectedToMatch: true,
		},
		{
			pattern:         "livingroom",
			key:             "livingroom_123",
			expectedToMatch: false,
		},
		{
			pattern:         "livingroom123",
			key:             "livingroom_123",
			expectedToMatch: false,
		},
		{
			pattern:         "what",
			key:             "livingroom_123",
			expectedToMatch: false,
		},
		{
			pattern:         "*what*",
			key:             "livingroom_123",
			expectedToMatch: false,
		},
		{
			pattern:         "*.*",
			key:             "livingroom_123",
			expectedToMatch: false,
		},
		{
			pattern:         "room*123",
			key:             "livingroom_123",
			expectedToMatch: false,
		},
	}
	for _, scenario := range scenarios {
		t.Run(scenario.pattern+"---"+scenario.key, func(t *testing.T) {
			matched := MatchPattern(scenario.pattern, scenario.key)
			if scenario.expectedToMatch {
				if !matched {
					t.Errorf("%s should've matched pattern '%s'", scenario.key, scenario.pattern)
				}
			} else {
				if matched {
					t.Errorf("%s shouldn't have matched pattern '%s'", scenario.key, scenario.pattern)
				}
			}
		})
	}
}