blob: 2aa47cb46859c50f6ddd0646525ca067a52fc6db [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 app
import (
"reflect"
"testing"
)
func TestParseQueryString(t *testing.T) {
tests := []struct {
q string
wantPrefix string
wantParts []string
}{
{"prefix | one vs two", "prefix", []string{"one", "two"}},
{"prefix one vs two", "", []string{"prefix one", "two"}},
{"anything else", "", []string{"anything else"}},
{`one vs "two vs three"`, "", []string{"one", `"two vs three"`}},
{"mixed\ttabs \"and\tspaces\"", "", []string{"mixed tabs \"and\tspaces\""}},
}
for _, test := range tests {
t.Run(test.q, func(t *testing.T) {
havePrefix, haveParts := parseQueryString(test.q)
if havePrefix != test.wantPrefix {
t.Errorf("parseQueryString returned prefix %q, want %q", havePrefix, test.wantPrefix)
}
if !reflect.DeepEqual(haveParts, test.wantParts) {
t.Errorf("parseQueryString returned parts %#v, want %#v", haveParts, test.wantParts)
}
})
}
}