@@ -79,14 +79,14 @@ func TestNameTupleMatchesPattern(t *testing.T) {
79
79
pattern string
80
80
match bool
81
81
}{
82
- {"table1" , false }, // effectively: <defaultSchema>.table1 i.e. public.table1
82
+ {"table1" , true }, // effectively: <defaultSchema>.table1 i.e. public.table1
83
83
{"table2" , false },
84
84
{"table" , false },
85
85
{"TABLE1" , true },
86
86
{"TABLE2" , false },
87
87
{"TABLE" , false },
88
88
{"TABLE*" , true },
89
- {"table*" , false },
89
+ {"table*" , true },
90
90
{"SAKILA.TABLE1" , true },
91
91
{"SAKILA.TABLE2" , false },
92
92
{"SAKILA.TABLE" , false },
@@ -105,6 +105,58 @@ func TestNameTupleMatchesPattern(t *testing.T) {
105
105
}
106
106
}
107
107
108
+ func TestNameMatchesPattern (t * testing.T ) {
109
+ assert := assert .New (t )
110
+ require := require .New (t )
111
+
112
+ reg := & NameRegistry {
113
+ SourceDBType : ORACLE ,
114
+ role : SOURCE_DB_EXPORTER_ROLE ,
115
+ SourceDBSchemaNames : []string {"TEST_SCHEMA" },
116
+ DefaultSourceDBSchemaName : "TEST_SCHEMA" ,
117
+ SourceDBTableNames : map [string ][]string {
118
+ "TEST_SCHEMA" : {
119
+ "C" , "C1" , "C2" , "Case_Sensitive_Columns" , "EMPLOYEES" , "FOO" , "Mixed_Case_Table_Name_Test" ,
120
+ "RESERVED_COLUMN" , "SESSION_LOG" , "SESSION_LOG1" , "SESSION_LOG2" , "SESSION_LOG3" , "SESSION_LOG4" ,
121
+ "TEST_TIMEZONE" , "TRUNC_TEST" , "check" , "group" ,
122
+ },
123
+ },
124
+ }
125
+ // Prepare a list of all NamedTuples.
126
+ ntups := make ([]* sqlname.NameTuple , 0 )
127
+ for _ , tableName := range reg .SourceDBTableNames ["TEST_SCHEMA" ] {
128
+ ntup , err := reg .LookupTableName (tableName )
129
+ require .Nil (err )
130
+ ntups = append (ntups , ntup )
131
+ }
132
+ // Write a table-driven test to test the MatchesPattern() method using following patterns:
133
+ // session_log,session_log?,"group","check",test*,"*Case*",c*
134
+ var testCases = []struct {
135
+ pattern string
136
+ expected []string
137
+ }{
138
+ {"session_log" , []string {"TEST_SCHEMA.SESSION_LOG" }},
139
+ {"session_log?" , []string {"TEST_SCHEMA.SESSION_LOG1" , "TEST_SCHEMA.SESSION_LOG2" , "TEST_SCHEMA.SESSION_LOG3" , "TEST_SCHEMA.SESSION_LOG4" }},
140
+ {"group" , []string {"TEST_SCHEMA.group" }},
141
+ {"check" , []string {"TEST_SCHEMA.check" }},
142
+ {"test*" , []string {"TEST_SCHEMA.TEST_TIMEZONE" }},
143
+ {"*Case*" , []string {"TEST_SCHEMA.Case_Sensitive_Columns" , "TEST_SCHEMA.Mixed_Case_Table_Name_Test" }},
144
+ {"c*" , []string {"TEST_SCHEMA.C" , "TEST_SCHEMA.C1" , "TEST_SCHEMA.C2" , "TEST_SCHEMA.Case_Sensitive_Columns" , "TEST_SCHEMA.check" }},
145
+ }
146
+ for _ , tc := range testCases {
147
+ for _ , ntup := range ntups {
148
+ match , err := ntup .MatchesPattern (tc .pattern )
149
+ require .Nil (err )
150
+ tableName := ntup .CurrentName .Qualified .Unquoted
151
+ if match {
152
+ assert .Contains (tc .expected , tableName , "pattern: %s, tableName: %s" , tc .pattern , tableName )
153
+ } else {
154
+ assert .NotContains (tc .expected , tableName , "pattern: %s, tableName: %s" , tc .pattern , tableName )
155
+ }
156
+ }
157
+ }
158
+ }
159
+
108
160
func TestNameRegistrySuccessfulLookup (t * testing.T ) {
109
161
assert := assert .New (t )
110
162
require := require .New (t )
0 commit comments