-
Notifications
You must be signed in to change notification settings - Fork 40
Expand file tree
/
Copy paththeme_test.go
More file actions
131 lines (127 loc) · 2.72 KB
/
theme_test.go
File metadata and controls
131 lines (127 loc) · 2.72 KB
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
package fang
import (
"testing"
"github.com/stretchr/testify/require"
)
// TestTitleFirstWord verifies that the first word of a string is capitalized
// while preserving all whitespace, including newlines and tabs. This is used
// to style error messages and flag descriptions in help output.
func TestTitleFirstWord(t *testing.T) {
tests := []struct {
name string
input string
expected string
}{
{
name: "simple string",
input: "hello world",
expected: "Hello world",
},
{
name: "leading whitespace preserved",
input: " hello world",
expected: " Hello world",
},
{
name: "newline preserved",
input: "hello\nworld",
expected: "Hello\nworld",
},
{
name: "tab preserved",
input: "hello\tworld",
expected: "Hello\tworld",
},
{
name: "empty string",
input: "",
expected: "",
},
{
name: "only whitespace",
input: " ",
expected: " ",
},
{
name: "single word",
input: "hello",
expected: "Hello",
},
{
name: "already capitalized",
input: "Hello world",
expected: "Hello world",
},
{
name: "error prefix gets capitalized",
input: "error: something happened",
expected: "Error: something happened",
},
{
name: "Error prefix preserved",
input: "Error: something happened",
expected: "Error: something happened",
},
{
name: "multiline error message with error prefix",
input: "error:\ndetails here\nmore info",
expected: "Error:\ndetails here\nmore info",
},
{
name: "multiline error message with Error prefix",
input: "Error:\ndetails here\nmore info",
expected: "Error:\ndetails here\nmore info",
},
{
name: "mixed whitespace",
input: "\t\n hello\tworld",
expected: "\t\n Hello\tworld",
},
{
name: "number first word",
input: "1234 world",
expected: "1234 world",
},
{
name: "single letter",
input: "a cat",
expected: "A cat",
},
{
name: "accented character",
input: "été chaud",
expected: "Été chaud",
},
{
name: "punctuation first word",
input: "- item",
expected: "- item",
},
{
name: "all caps",
input: "ABC",
expected: "Abc",
},
{
name: "all caps with second word",
input: "ABC def",
expected: "Abc def",
},
{
name: "CJK characters",
input: "你好 世界",
expected: "你好 世界",
},
{
name: "CJK characters with newline",
input: "你好\n世界",
expected: "你好\n世界",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
result := titleFirstWord(tt.input)
require.Equal(t, tt.expected, result)
})
}
}