penguin/golifehk

@golifehk bot in Telegram

query/query_test.go

raw ยท 1454 bytes

package query

import (
	"testing"
)

type TestItem struct {
	Words
	NoGeoLocation
}

func TestQuery(t *testing.T) {
	testItems := []ISearchable{}

	s1234 := "1234"
	sApple := "Apple"
	s0000 := "0000"

	sDat0 := "Dat0"
	data0 := []*string{}
	data0 = append(data0, &s1234)
	data0 = append(data0, &sApple)
	t0 := TestItem{}
	t0.Key = &sDat0
	t0.SearchData = &data0
	testItems = append(testItems, &t0)

	sDat1 := "Dat1"
	data1 := []*string{}
	data1 = append(data1, &s0000)
	data1 = append(data1, &sApple)
	t1 := TestItem{}
	t1.Key = &sDat1
	t1.SearchData = &data1
	testItems = append(testItems, &t1)

	sDat2 := "Dat2"
	data2 := []*string{}
	data2 = append(data2, &sDat0)
	t2 := TestItem{}
	t2.Key = &sDat2
	t2.SearchData = &data2
	testItems = append(testItems, &t2)

	qo, err := MatchKeys("Apple", &testItems)
	if err != nil {
		t.Error(err)
	}

	if len(*qo.Results) != 2 {
		t.Error("Expected 2 results when searching for \"Apple\"")
	}

	qo, err = MatchKeys("0000", &testItems)
	if err != nil {
		t.Error(err)
	}

	if len(*qo.Results) != 1 {
		t.Error("Expected 1 results when searching for \"0000\"")
	}

	qo, err = MatchKeys("Dat0", &testItems)
	if err != nil {
		t.Error(err)
	}

	if len(*qo.Results) != 1 {
		t.Error("Expected 1 results when searching for \"Dat0\"")
	}

	qo, err = MatchKeys("Dat2 Dat0", &testItems)
	if err != nil {
		t.Error(err)
	}

	if len(*qo.Results) != 1 {
		t.Error("Expected 1 results when searching for \"Dat2 Dat0\"")
	}
}