summaryrefslogtreecommitdiff
path: root/vendor/golang.org/x/text/internal/tag/tag_test.go
blob: da174a24c42edc444963902488290aba796b4152 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
// 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])
		}
	}
}