2014-07-30 18:30:38 +02:00
// Copyright (c) 2014 Couchbase, Inc.
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
// except in compliance with the License. You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
// Unless required by applicable law or agreed to in writing, software distributed under the
// License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
// either express or implied. See the License for the specific language governing permissions
// and limitations under the License.
2014-09-01 17:15:38 +02:00
package simple
2014-06-26 17:43:13 +02:00
import (
"reflect"
"testing"
2014-09-01 17:15:38 +02:00
"github.com/blevesearch/bleve/search/highlight"
2014-06-26 17:43:13 +02:00
)
func TestSimpleFragmenter ( t * testing . T ) {
tests := [ ] struct {
orig [ ] byte
2014-09-01 17:15:38 +02:00
fragments [ ] * highlight . Fragment
ot highlight . TermLocations
2015-02-06 18:35:01 +01:00
size int
2014-06-26 17:43:13 +02:00
} {
{
orig : [ ] byte ( "this is a test" ) ,
2014-09-01 17:15:38 +02:00
fragments : [ ] * highlight . Fragment {
2016-04-03 03:54:33 +02:00
{
2014-09-01 17:15:38 +02:00
Orig : [ ] byte ( "this is a test" ) ,
Start : 0 ,
End : 14 ,
2014-06-26 17:43:13 +02:00
} ,
} ,
2014-09-01 17:15:38 +02:00
ot : highlight . TermLocations {
& highlight . TermLocation {
2014-06-26 17:43:13 +02:00
Term : "test" ,
Pos : 4 ,
Start : 10 ,
End : 14 ,
} ,
} ,
2015-02-06 18:35:01 +01:00
size : 100 ,
2014-06-26 17:43:13 +02:00
} ,
{
orig : [ ] byte ( "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" ) ,
2014-09-01 17:15:38 +02:00
fragments : [ ] * highlight . Fragment {
2016-04-03 03:54:33 +02:00
{
2014-09-01 17:15:38 +02:00
Orig : [ ] byte ( "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" ) ,
Start : 0 ,
End : 100 ,
2014-06-26 17:43:13 +02:00
} ,
} ,
2014-09-01 17:15:38 +02:00
ot : highlight . TermLocations {
& highlight . TermLocation {
2014-06-26 17:43:13 +02:00
Term : "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" ,
Pos : 1 ,
Start : 0 ,
End : 100 ,
} ,
} ,
2015-02-06 18:35:01 +01:00
size : 100 ,
2014-06-26 17:43:13 +02:00
} ,
{
orig : [ ] byte ( "01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" ) ,
2014-09-01 17:15:38 +02:00
fragments : [ ] * highlight . Fragment {
2016-04-03 03:54:33 +02:00
{
2014-09-01 17:15:38 +02:00
Orig : [ ] byte ( "01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" ) ,
Start : 0 ,
End : 100 ,
} ,
2016-04-03 03:54:33 +02:00
{
2014-09-01 17:15:38 +02:00
Orig : [ ] byte ( "01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" ) ,
Start : 10 ,
End : 101 ,
} ,
2016-04-03 03:54:33 +02:00
{
2014-09-01 17:15:38 +02:00
Orig : [ ] byte ( "01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" ) ,
Start : 20 ,
End : 101 ,
} ,
2016-04-03 03:54:33 +02:00
{
2014-09-01 17:15:38 +02:00
Orig : [ ] byte ( "01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" ) ,
Start : 30 ,
End : 101 ,
} ,
2016-04-03 03:54:33 +02:00
{
2014-09-01 17:15:38 +02:00
Orig : [ ] byte ( "01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" ) ,
Start : 40 ,
End : 101 ,
} ,
2016-04-03 03:54:33 +02:00
{
2014-09-01 17:15:38 +02:00
Orig : [ ] byte ( "01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" ) ,
Start : 50 ,
End : 101 ,
} ,
2016-04-03 03:54:33 +02:00
{
2014-09-01 17:15:38 +02:00
Orig : [ ] byte ( "01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" ) ,
Start : 60 ,
End : 101 ,
} ,
2016-04-03 03:54:33 +02:00
{
2014-09-01 17:15:38 +02:00
Orig : [ ] byte ( "01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" ) ,
Start : 70 ,
End : 101 ,
} ,
2016-04-03 03:54:33 +02:00
{
2014-09-01 17:15:38 +02:00
Orig : [ ] byte ( "01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" ) ,
Start : 80 ,
End : 101 ,
} ,
2016-04-03 03:54:33 +02:00
{
2014-09-01 17:15:38 +02:00
Orig : [ ] byte ( "01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" ) ,
Start : 90 ,
End : 101 ,
2014-06-26 17:43:13 +02:00
} ,
} ,
2014-09-01 17:15:38 +02:00
ot : highlight . TermLocations {
& highlight . TermLocation {
2014-06-26 17:43:13 +02:00
Term : "0123456789" ,
Pos : 1 ,
Start : 0 ,
End : 10 ,
} ,
2014-09-01 17:15:38 +02:00
& highlight . TermLocation {
2014-06-26 17:43:13 +02:00
Term : "0123456789" ,
Pos : 2 ,
Start : 10 ,
End : 20 ,
} ,
2014-09-01 17:15:38 +02:00
& highlight . TermLocation {
2014-06-26 17:43:13 +02:00
Term : "0123456789" ,
Pos : 3 ,
Start : 20 ,
End : 30 ,
} ,
2014-09-01 17:15:38 +02:00
& highlight . TermLocation {
2014-06-26 17:43:13 +02:00
Term : "0123456789" ,
Pos : 4 ,
Start : 30 ,
End : 40 ,
} ,
2014-09-01 17:15:38 +02:00
& highlight . TermLocation {
2014-06-26 17:43:13 +02:00
Term : "0123456789" ,
Pos : 5 ,
Start : 40 ,
End : 50 ,
} ,
2014-09-01 17:15:38 +02:00
& highlight . TermLocation {
2014-06-26 17:43:13 +02:00
Term : "0123456789" ,
Pos : 6 ,
Start : 50 ,
End : 60 ,
} ,
2014-09-01 17:15:38 +02:00
& highlight . TermLocation {
2014-06-26 17:43:13 +02:00
Term : "0123456789" ,
Pos : 7 ,
Start : 60 ,
End : 70 ,
} ,
2014-09-01 17:15:38 +02:00
& highlight . TermLocation {
2014-06-26 17:43:13 +02:00
Term : "0123456789" ,
Pos : 8 ,
Start : 70 ,
End : 80 ,
} ,
2014-09-01 17:15:38 +02:00
& highlight . TermLocation {
2014-06-26 17:43:13 +02:00
Term : "0123456789" ,
Pos : 9 ,
Start : 80 ,
End : 90 ,
} ,
2014-09-01 17:15:38 +02:00
& highlight . TermLocation {
2014-06-26 17:43:13 +02:00
Term : "0123456789" ,
Pos : 10 ,
Start : 90 ,
End : 100 ,
} ,
} ,
2015-02-06 18:35:01 +01:00
size : 100 ,
} ,
{
orig : [ ] byte ( "[[पानी का स्वाद]] [[नीलेश रघुवंशी]] का कविता संग्रह हैं। इस कृति के लिए उन्हें २००४ में [[केदार सम्मान]] से सम्मानित किया गया है।{{केदार सम्मान से सम्मानित कृतियाँ}}" ) ,
fragments : [ ] * highlight . Fragment {
2016-04-03 03:54:33 +02:00
{
2015-02-06 18:35:01 +01:00
Orig : [ ] byte ( "[[पानी का स्वाद]] [[नीलेश रघुवंशी]] का कविता संग्रह हैं। इस कृति के लिए उन्हें २००४ में [[केदार सम्मान]] से सम्मानित किया गया है।{{केदार सम्मान से सम्मानित कृतियाँ}}" ) ,
Start : 0 ,
End : 411 ,
} ,
} ,
ot : highlight . TermLocations {
& highlight . TermLocation {
Term : "पानी" ,
Pos : 1 ,
Start : 2 ,
End : 14 ,
} ,
} ,
size : 200 ,
2014-06-26 17:43:13 +02:00
} ,
2015-03-18 19:34:47 +01:00
{
orig : [ ] byte ( "交换机" ) ,
fragments : [ ] * highlight . Fragment {
2016-04-03 03:54:33 +02:00
{
2015-03-18 19:34:47 +01:00
Orig : [ ] byte ( "交换机" ) ,
Start : 0 ,
End : 9 ,
} ,
2016-04-03 03:54:33 +02:00
{
2015-03-18 19:34:47 +01:00
Orig : [ ] byte ( "交换机" ) ,
Start : 3 ,
End : 9 ,
} ,
} ,
ot : highlight . TermLocations {
& highlight . TermLocation {
Term : "交换" ,
Pos : 1 ,
Start : 0 ,
End : 6 ,
} ,
& highlight . TermLocation {
Term : "换机" ,
Pos : 2 ,
Start : 3 ,
End : 9 ,
} ,
} ,
size : 200 ,
} ,
2014-06-26 17:43:13 +02:00
}
for _ , test := range tests {
2015-02-06 18:35:01 +01:00
fragmenter := NewFragmenter ( test . size )
2014-06-26 17:43:13 +02:00
fragments := fragmenter . Fragment ( test . orig , test . ot )
if ! reflect . DeepEqual ( fragments , test . fragments ) {
t . Errorf ( "expected %#v, got %#v" , test . fragments , fragments )
for _ , fragment := range fragments {
2015-02-06 18:35:01 +01:00
t . Logf ( "frag: %s" , fragment . Orig [ fragment . Start : fragment . End ] )
t . Logf ( "frag: %d - %d" , fragment . Start , fragment . End )
2014-06-26 17:43:13 +02:00
}
}
}
}
func TestSimpleFragmenterWithSize ( t * testing . T ) {
tests := [ ] struct {
orig [ ] byte
2014-09-01 17:15:38 +02:00
fragments [ ] * highlight . Fragment
ot highlight . TermLocations
2014-06-26 17:43:13 +02:00
} {
{
orig : [ ] byte ( "this is a test" ) ,
2014-09-01 17:15:38 +02:00
fragments : [ ] * highlight . Fragment {
2016-04-03 03:54:33 +02:00
{
2014-09-01 17:15:38 +02:00
Orig : [ ] byte ( "this is a test" ) ,
Start : 0 ,
End : 5 ,
2014-06-26 17:43:13 +02:00
} ,
2016-04-03 03:54:33 +02:00
{
2014-09-01 17:15:38 +02:00
Orig : [ ] byte ( "this is a test" ) ,
Start : 9 ,
End : 14 ,
2014-06-26 17:43:13 +02:00
} ,
} ,
2014-09-01 17:15:38 +02:00
ot : highlight . TermLocations {
& highlight . TermLocation {
2014-06-26 17:43:13 +02:00
Term : "this" ,
Pos : 1 ,
Start : 0 ,
End : 5 ,
} ,
2014-09-01 17:15:38 +02:00
& highlight . TermLocation {
2014-06-26 17:43:13 +02:00
Term : "test" ,
Pos : 4 ,
Start : 10 ,
End : 14 ,
} ,
} ,
} ,
}
2014-09-04 01:16:46 +02:00
fragmenter := NewFragmenter ( 5 )
2014-06-26 17:43:13 +02:00
for _ , test := range tests {
fragments := fragmenter . Fragment ( test . orig , test . ot )
if ! reflect . DeepEqual ( fragments , test . fragments ) {
t . Errorf ( "expected %#v, got %#v" , test . fragments , fragments )
for _ , fragment := range fragments {
t . Logf ( "frag: %#v" , fragment )
}
}
}
}