| // Copyright 2015 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 tag |
| |
| import ( |
| "strings" |
| "testing" |
| ) |
| |
| var strdata = []string{ |
| "aa ", |
| "aaa ", |
| "aaaa", |
| "aaab", |
| "aab ", |
| "ab ", |
| "ba ", |
| "xxxx", |
| "\xff\xff\xff\xff", |
| } |
| |
| var testCases = map[string]int{ |
| "a": 0, |
| "aa": 0, |
| "aaa": 1, |
| "aa ": 0, |
| "aaaa": 2, |
| "aaab": 3, |
| "b": 6, |
| "ba": 6, |
| " ": -1, |
| "aaax": -1, |
| "bbbb": -1, |
| "zzzz": -1, |
| } |
| |
| func TestIndex(t *testing.T) { |
| index := Index(strings.Join(strdata, "")) |
| for k, v := range testCases { |
| if i := index.Index([]byte(k)); i != v { |
| t.Errorf("%s: got %d; want %d", k, i, v) |
| } |
| } |
| } |
| |
| func TestFixCase(t *testing.T) { |
| tests := []string{ |
| "aaaa", "AbCD", "abcd", |
| "Zzzz", "AbCD", "Abcd", |
| "Zzzz", "AbC", "", |
| "XXX", "ab ", "", |
| "XXX", "usd", "USD", |
| "cmn", "AB ", "", |
| "gsw", "CMN", "cmn", |
| } |
| for tc := tests; len(tc) > 0; tc = tc[3:] { |
| b := []byte(tc[1]) |
| if !FixCase(tc[0], b) { |
| b = nil |
| } |
| if string(b) != tc[2] { |
| t.Errorf("FixCase(%q, %q) = %q; want %q", tc[0], tc[1], b, tc[2]) |
| } |
| } |
| } |