blob: 8e5d9ee70c2b86b8c7c9239be081779eea6fc1af [file] [log] [blame]
// Copyright 2017 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package db
import "testing"
func TestParseWord(t *testing.T) {
tests := []struct {
word string
want part
wantErr bool
}{
{"key:value", part{"key", equals, "value", ""}, false},
{"key>value", part{"key", gt, "value", ""}, false},
{"key<value", part{"key", lt, "value", ""}, false},
{"bogus query", part{}, true},
}
for _, test := range tests {
t.Run(test.word, func(t *testing.T) {
p, err := parseWord(test.word)
if test.wantErr {
if err == nil {
t.Fatalf("have %#v, want error", p)
}
return
}
if err != nil {
t.Fatalf("have error %v", err)
}
if p != test.want {
t.Fatalf("parseWord = %#v, want %#v", p, test.want)
}
p, err = p.merge(part{p.key, gt, "", ""})
if err != nil {
t.Fatalf("failed to merge with noop: %v", err)
}
if p != test.want {
t.Fatalf("merge with noop = %#v, want %#v", p, test.want)
}
})
}
}