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