| // 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) |
| } |
| }) |
| } |
| } |