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