github.com/jgbaldwinbrown/perf@v0.1.1/storage/db/query_test.go (about)

     1  // Copyright 2017 The Go Authors.  All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package db
     6  
     7  import "testing"
     8  
     9  func TestParseWord(t *testing.T) {
    10  	tests := []struct {
    11  		word    string
    12  		want    part
    13  		wantErr bool
    14  	}{
    15  		{"key:value", part{"key", equals, "value", ""}, false},
    16  		{"key>value", part{"key", gt, "value", ""}, false},
    17  		{"key<value", part{"key", lt, "value", ""}, false},
    18  		{"bogus query", part{}, true},
    19  	}
    20  	for _, test := range tests {
    21  		t.Run(test.word, func(t *testing.T) {
    22  			p, err := parseWord(test.word)
    23  			if test.wantErr {
    24  				if err == nil {
    25  					t.Fatalf("have %#v, want error", p)
    26  				}
    27  				return
    28  			}
    29  			if err != nil {
    30  				t.Fatalf("have error %v", err)
    31  			}
    32  			if p != test.want {
    33  				t.Fatalf("parseWord = %#v, want %#v", p, test.want)
    34  			}
    35  			p, err = p.merge(part{p.key, gt, "", ""})
    36  			if err != nil {
    37  				t.Fatalf("failed to merge with noop: %v", err)
    38  			}
    39  			if p != test.want {
    40  				t.Fatalf("merge with noop = %#v, want %#v", p, test.want)
    41  			}
    42  		})
    43  	}
    44  }