@@ -24,7 +24,6 @@ import (
24
24
25
25
func TestCodecKeyRange (t * testing.T ) {
26
26
re := require .New (t )
27
-
28
27
testCases := []struct {
29
28
ks KeyRange
30
29
}{
@@ -46,6 +45,7 @@ func TestCodecKeyRange(t *testing.T) {
46
45
}
47
46
48
47
func TestOverLap (t * testing.T ) {
48
+ re := require .New (t )
49
49
for _ , tc := range []struct {
50
50
name string
51
51
a , b KeyRange
@@ -70,17 +70,13 @@ func TestOverLap(t *testing.T) {
70
70
expect : true ,
71
71
},
72
72
} {
73
- t .Run (tc .name , func (t * testing.T ) {
74
- re := require .New (t )
75
- re .Equal (tc .expect , tc .a .OverLapped (& tc .b ))
76
- re .Equal (tc .expect , tc .b .OverLapped (& tc .a ))
77
- })
73
+ re .Equal (tc .expect , tc .a .OverLapped (& tc .b ))
74
+ re .Equal (tc .expect , tc .b .OverLapped (& tc .a ))
78
75
}
79
76
}
80
77
81
78
func TestMergeKeyRanges (t * testing.T ) {
82
79
re := require .New (t )
83
-
84
80
testCases := []struct {
85
81
name string
86
82
input []* KeyRange
@@ -151,11 +147,6 @@ func TestMergeKeyRanges(t *testing.T) {
151
147
}
152
148
153
149
func TestSortAndDeduce (t * testing.T ) {
154
- re := require .New (t )
155
- fn := func (a , b string ) * KeyRange {
156
- ks := NewKeyRange (a , b )
157
- return & ks
158
- }
159
150
testCases := []struct {
160
151
name string
161
152
input []* KeyRange
@@ -168,46 +159,39 @@ func TestSortAndDeduce(t *testing.T) {
168
159
},
169
160
{
170
161
name : "single" ,
171
- input : []* KeyRange {fn ("a" , "b" )},
172
- expect : []* KeyRange {fn ("a" , "b" )},
162
+ input : []* KeyRange {newKeyRange ("a" , "b" )},
163
+ expect : []* KeyRange {newKeyRange ("a" , "b" )},
173
164
},
174
165
{
175
166
name : "non-overlapping" ,
176
- input : []* KeyRange {fn ("a" , "b" ), fn ("c" , "d" )},
177
- expect : []* KeyRange {fn ("a" , "b" ), fn ("c" , "d" )},
167
+ input : []* KeyRange {newKeyRange ("a" , "b" ), newKeyRange ("c" , "d" )},
168
+ expect : []* KeyRange {newKeyRange ("a" , "b" ), newKeyRange ("c" , "d" )},
178
169
},
179
170
{
180
171
name : "overlapping" ,
181
- input : []* KeyRange {fn ("a" , "c" ), fn ("b" , "d" )},
182
- expect : []* KeyRange {fn ("a" , "d" )},
172
+ input : []* KeyRange {newKeyRange ("a" , "c" ), newKeyRange ("b" , "d" )},
173
+ expect : []* KeyRange {newKeyRange ("a" , "d" )},
183
174
},
184
175
{
185
176
name : "empty keys" ,
186
- input : []* KeyRange {fn ("" , "" ), fn ("a" , "b" )},
187
- expect : []* KeyRange {fn ("" , "" )},
177
+ input : []* KeyRange {newKeyRange ("" , "" ), newKeyRange ("a" , "b" )},
178
+ expect : []* KeyRange {newKeyRange ("" , "" )},
188
179
},
189
180
{
190
181
name : "one empty key" ,
191
- input : []* KeyRange {fn ("d" , "" ), fn ("" , "b" ), fn ("b" , "c" )},
192
- expect : []* KeyRange {fn ("" , "c" ), fn ("d" , "" )},
182
+ input : []* KeyRange {newKeyRange ("d" , "" ), newKeyRange ("" , "b" ), newKeyRange ("b" , "c" )},
183
+ expect : []* KeyRange {newKeyRange ("" , "c" ), newKeyRange ("d" , "" )},
193
184
},
194
185
}
195
-
186
+ re := require . New ( t )
196
187
for _ , tc := range testCases {
197
- t .Run (tc .name , func (t * testing.T ) {
198
- rs := & KeyRanges {krs : tc .input }
199
- rs .SortAndDeduce ()
200
- re .Equal (tc .expect , rs .Ranges (), tc .name )
201
- })
188
+ rs := & KeyRanges {krs : tc .input }
189
+ rs .SortAndDeduce ()
190
+ re .Equal (tc .expect , rs .Ranges (), tc .name )
202
191
}
203
192
}
204
193
205
194
func TestSubtractKeyRanges (t * testing.T ) {
206
- re := require .New (t )
207
- fn := func (a , b string ) * KeyRange {
208
- ks := NewKeyRange (a , b )
209
- return & ks
210
- }
211
195
testCases := []struct {
212
196
name string
213
197
ks []* KeyRange
@@ -222,31 +206,82 @@ func TestSubtractKeyRanges(t *testing.T) {
222
206
},
223
207
{
224
208
name : "single" ,
225
- ks : []* KeyRange {fn ("a" , "d" ), fn ("e" , "f" )},
209
+ ks : []* KeyRange {newKeyRange ("a" , "d" ), newKeyRange ("e" , "f" )},
226
210
base : & KeyRange {},
227
- expect : []* KeyRange {fn ("" , "a" ), fn ("d" , "e" ), fn ("f" , "" )},
211
+ expect : []* KeyRange {newKeyRange ("" , "a" ), newKeyRange ("d" , "e" ), newKeyRange ("f" , "" )},
228
212
},
229
213
{
230
214
name : "non-overlapping" ,
231
- ks : []* KeyRange {fn ("a" , "d" ), fn ("e" , "f" )},
232
- base : fn ("g" , "h" ),
233
- expect : []* KeyRange {fn ("g" , "h" )},
215
+ ks : []* KeyRange {newKeyRange ("a" , "d" ), newKeyRange ("e" , "f" )},
216
+ base : newKeyRange ("g" , "h" ),
217
+ expect : []* KeyRange {newKeyRange ("g" , "h" )},
234
218
},
235
219
{
236
220
name : "overlapping" ,
237
- ks : []* KeyRange {fn ("a" , "d" ), fn ("e" , "f" )},
238
- base : fn ("c" , "g" ),
239
- expect : []* KeyRange {fn ("d" , "e" ), fn ("f" , "g" )},
221
+ ks : []* KeyRange {newKeyRange ("a" , "d" ), newKeyRange ("e" , "f" )},
222
+ base : newKeyRange ("c" , "g" ),
223
+ expect : []* KeyRange {newKeyRange ("d" , "e" ), newKeyRange ("f" , "g" )},
240
224
},
241
225
}
242
-
226
+ re := require . New ( t )
243
227
for _ , tc := range testCases {
244
- t .Run (tc .name , func (t * testing.T ) {
245
- rs := & KeyRanges {krs : tc .ks }
246
- res := rs .SubtractKeyRanges (tc .base )
247
- expectData , _ := json .Marshal (tc .expect )
248
- actualData , _ := json .Marshal (res )
249
- re .EqualValues (expectData , actualData , tc .name )
250
- })
228
+ rs := & KeyRanges {krs : tc .ks }
229
+ res := rs .SubtractKeyRanges (tc .base )
230
+ expectData , _ := json .Marshal (tc .expect )
231
+ actualData , _ := json .Marshal (res )
232
+ re .EqualValues (expectData , actualData , tc .name )
251
233
}
252
234
}
235
+
236
+ func TestDeleteKeyRanges (t * testing.T ) {
237
+ testData := []struct {
238
+ name string
239
+ input []* KeyRange
240
+ base * KeyRange
241
+ expect []* KeyRange
242
+ }{
243
+ {
244
+ name : "empty" ,
245
+ input : []* KeyRange {},
246
+ base : & KeyRange {},
247
+ expect : []* KeyRange {},
248
+ },
249
+ {
250
+ name : "no-overlapping" ,
251
+ input : []* KeyRange {newKeyRange ("a" , "b" ), newKeyRange ("c" , "d" )},
252
+ base : & KeyRange {StartKey : []byte ("f" ), EndKey : []byte ("g" )},
253
+ expect : []* KeyRange {newKeyRange ("a" , "b" ), newKeyRange ("c" , "d" )},
254
+ },
255
+ {
256
+ name : "overlapping" ,
257
+ input : []* KeyRange {newKeyRange ("" , "c" ), newKeyRange ("e" , "" )},
258
+ base : & KeyRange {StartKey : []byte ("b" ), EndKey : []byte ("d" )},
259
+ expect : []* KeyRange {newKeyRange ("" , "b" ), newKeyRange ("e" , "" )},
260
+ },
261
+ {
262
+ name : "between" ,
263
+ input : []* KeyRange {newKeyRange ("" , "" )},
264
+ base : & KeyRange {StartKey : []byte ("b" ), EndKey : []byte ("d" )},
265
+ expect : []* KeyRange {newKeyRange ("" , "b" ), newKeyRange ("d" , "" )},
266
+ },
267
+ {
268
+ name : "equal" ,
269
+ input : []* KeyRange {newKeyRange ("" , "a" ), newKeyRange ("b" , "d" )},
270
+ base : & KeyRange {StartKey : []byte ("b" ), EndKey : []byte ("d" )},
271
+ expect : []* KeyRange {newKeyRange ("" , "a" )},
272
+ },
273
+ }
274
+ re := require .New (t )
275
+ for _ , tc := range testData {
276
+ rs := & KeyRanges {krs : tc .input }
277
+ rs .Delete (tc .base )
278
+ expectData , _ := json .Marshal (tc .expect )
279
+ actualData , _ := json .Marshal (rs .krs )
280
+ re .EqualValues (expectData , actualData , tc .name )
281
+ }
282
+ }
283
+
284
+ func newKeyRange (a , b string ) * KeyRange {
285
+ ks := NewKeyRange (a , b )
286
+ return & ks
287
+ }
0 commit comments