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