1
// Copyright (c) 2015 Couchbase, Inc.
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
7
// http://www.apache.org/licenses/LICENSE-2.0
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
// See the License for the specific language governing permissions and
13
// limitations under the License.
21
"github.com/blevesearch/bleve/search"
24
func TestTermLocationOverlaps(t *testing.T) {
64
// with array positions
67
ArrayPositions: search.ArrayPositions{0},
72
ArrayPositions: search.ArrayPositions{1},
80
ArrayPositions: search.ArrayPositions{0},
85
ArrayPositions: search.ArrayPositions{1},
93
ArrayPositions: search.ArrayPositions{0},
98
ArrayPositions: search.ArrayPositions{0},
106
ArrayPositions: search.ArrayPositions{0},
110
right: &TermLocation{
111
ArrayPositions: search.ArrayPositions{0},
119
for _, test := range tests {
120
actual := test.left.Overlaps(test.right)
121
if actual != test.expected {
122
t.Errorf("expected %t got %t for %#v", test.expected, actual, test)
127
func TestTermLocationsMergeOverlapping(t *testing.T) {
134
input: TermLocations{},
135
output: TermLocations{},
138
input: TermLocations{
148
output: TermLocations{
160
input: TermLocations{
170
output: TermLocations{
179
input: TermLocations{
193
output: TermLocations{
203
input: TermLocations{
221
output: TermLocations{
234
// with array positions
236
input: TermLocations{
238
ArrayPositions: search.ArrayPositions{0},
243
ArrayPositions: search.ArrayPositions{1},
248
output: TermLocations{
250
ArrayPositions: search.ArrayPositions{0},
255
ArrayPositions: search.ArrayPositions{1},
262
input: TermLocations{
264
ArrayPositions: search.ArrayPositions{0},
269
ArrayPositions: search.ArrayPositions{0},
274
output: TermLocations{
276
ArrayPositions: search.ArrayPositions{0},
281
ArrayPositions: search.ArrayPositions{0},
288
input: TermLocations{
290
ArrayPositions: search.ArrayPositions{0},
295
ArrayPositions: search.ArrayPositions{0},
300
output: TermLocations{
302
ArrayPositions: search.ArrayPositions{0},
310
input: TermLocations{
312
ArrayPositions: search.ArrayPositions{0},
317
ArrayPositions: search.ArrayPositions{1},
322
output: TermLocations{
324
ArrayPositions: search.ArrayPositions{0},
329
ArrayPositions: search.ArrayPositions{1},
337
for _, test := range tests {
338
test.input.MergeOverlapping()
339
if !reflect.DeepEqual(test.input, test.output) {
340
t.Errorf("expected: %#v got %#v", test.output, test.input)
345
func TestTermLocationsOrder(t *testing.T) {
348
input search.TermLocationMap
352
input: search.TermLocationMap{},
353
output: TermLocations{},
356
input: search.TermLocationMap{
357
"term": []*search.Location{
366
output: TermLocations{
378
input: search.TermLocationMap{
379
"term": []*search.Location{
388
output: TermLocations{
399
// with array positions
401
input: search.TermLocationMap{
402
"term": []*search.Location{
404
ArrayPositions: search.ArrayPositions{0},
408
ArrayPositions: search.ArrayPositions{0},
413
output: TermLocations{
415
ArrayPositions: search.ArrayPositions{0},
420
ArrayPositions: search.ArrayPositions{0},
427
input: search.TermLocationMap{
428
"term": []*search.Location{
430
ArrayPositions: search.ArrayPositions{0},
434
ArrayPositions: search.ArrayPositions{0},
439
output: TermLocations{
441
ArrayPositions: search.ArrayPositions{0},
446
ArrayPositions: search.ArrayPositions{0},
453
input: search.TermLocationMap{
454
"term": []*search.Location{
456
ArrayPositions: search.ArrayPositions{0},
460
ArrayPositions: search.ArrayPositions{1},
465
output: TermLocations{
467
ArrayPositions: search.ArrayPositions{0},
472
ArrayPositions: search.ArrayPositions{1},
479
input: search.TermLocationMap{
480
"term": []*search.Location{
482
ArrayPositions: search.ArrayPositions{0},
486
ArrayPositions: search.ArrayPositions{0, 1},
491
output: TermLocations{
493
ArrayPositions: search.ArrayPositions{0},
498
ArrayPositions: search.ArrayPositions{0, 1},
506
for _, test := range tests {
507
actual := OrderTermLocations(test.input)
508
if !reflect.DeepEqual(actual, test.output) {
509
t.Errorf("expected: %#v got %#v", test.output, actual)