Skip to content

Commit d8857a6

Browse files
committed
Added tests.
1 parent d43c6cb commit d8857a6

File tree

3 files changed

+216
-0
lines changed

3 files changed

+216
-0
lines changed

init_test.go

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package iso6391
2+
3+
import "testing"
4+
5+
func TestCodes(t *testing.T) {
6+
if len(Codes) != 184 {
7+
t.Fatalf("Codes must have 184 entries, but was: %v", len(Codes))
8+
}
9+
}
10+
11+
func TestNames(t *testing.T) {
12+
if len(Names) != 184 {
13+
t.Fatalf("Names must have 184 entries, but was: %v", len(Codes))
14+
}
15+
}
16+
17+
func TestNativeNames(t *testing.T) {
18+
if len(NativeNames) != 184 {
19+
t.Fatalf("NativeNames must have 184 entries, but was: %v", len(Codes))
20+
}
21+
}

iso6391.go

+22
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,28 @@ func NativeName(code string) string {
3737
return FromCode(code).NativeName
3838
}
3939

40+
// CodeForName returns the language code for given name.
41+
func CodeForName(name string) string {
42+
for code, lang := range Languages {
43+
if lang.Name == name {
44+
return code
45+
}
46+
}
47+
48+
return ""
49+
}
50+
51+
// CodeForNativeName returns the language code for given native name.
52+
func CodeForNativeName(name string) string {
53+
for code, lang := range Languages {
54+
if lang.NativeName == name {
55+
return code
56+
}
57+
}
58+
59+
return ""
60+
}
61+
4062
// ValidCode returns true if the given code is a valid ISO 639-1 language code.
4163
// The code must be passed in lowercase.
4264
func ValidCode(code string) bool {

iso6391_test.go

+173
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,173 @@
1+
package iso6391
2+
3+
import "testing"
4+
5+
func TestFromCode(t *testing.T) {
6+
lang := FromCode("en")
7+
8+
if lang.Name != "English" || lang.NativeName != "English" {
9+
t.Fatalf("Expected English, but was: %v", lang)
10+
}
11+
12+
lang = FromCode("zh")
13+
14+
if lang.Name != "Chinese" || lang.NativeName != "中文" {
15+
t.Fatalf("Expected Chinese, but was: %v", lang)
16+
}
17+
18+
lang = FromCode("xx")
19+
20+
if lang.Name != "" || lang.NativeName != "" {
21+
t.Fatalf("Expected no valid language, but was: %v", lang)
22+
}
23+
}
24+
25+
func TestFromName(t *testing.T) {
26+
lang := FromName("English")
27+
28+
if lang.Code != "en" || lang.NativeName != "English" {
29+
t.Fatalf("Expected English, but was: %v", lang)
30+
}
31+
32+
lang = FromName("Chinese")
33+
34+
if lang.Code != "zh" || lang.NativeName != "中文" {
35+
t.Fatalf("Expected Chinese, but was: %v", lang)
36+
}
37+
38+
lang = FromName("Neverheardof")
39+
40+
if lang.Code != "" || lang.NativeName != "" {
41+
t.Fatalf("Expected no valid language, but was: %v", lang)
42+
}
43+
}
44+
45+
func TestFromNativeName(t *testing.T) {
46+
lang := FromNativeName("English")
47+
48+
if lang.Code != "en" || lang.Name != "English" {
49+
t.Fatalf("Expected English, but was: %v", lang)
50+
}
51+
52+
lang = FromNativeName("中文")
53+
54+
if lang.Code != "zh" || lang.Name != "Chinese" {
55+
t.Fatalf("Expected Chinese, but was: %v", lang)
56+
}
57+
58+
lang = FromNativeName("Neverheardof")
59+
60+
if lang.Code != "" || lang.Name != "" {
61+
t.Fatalf("Expected no valid language, but was: %v", lang)
62+
}
63+
}
64+
65+
func TestName(t *testing.T) {
66+
name := Name("en")
67+
68+
if name != "English" {
69+
t.Fatalf("Expected English, but was: %v", name)
70+
}
71+
72+
name = Name("xx")
73+
74+
if name != "" {
75+
t.Fatalf("Expected no valid name, but was: %v", name)
76+
}
77+
}
78+
79+
func TestNativeName(t *testing.T) {
80+
name := NativeName("zh")
81+
82+
if name != "中文" {
83+
t.Fatalf("Expected Chinese, but was: %v", name)
84+
}
85+
86+
name = NativeName("xx")
87+
88+
if name != "" {
89+
t.Fatalf("Expected no valid native name, but was: %v", name)
90+
}
91+
}
92+
93+
func TestCodeForName(t *testing.T) {
94+
code := CodeForName("English")
95+
96+
if code != "en" {
97+
t.Fatalf("Expected English, but was: %v", code)
98+
}
99+
100+
code = CodeForName("Chinese")
101+
102+
if code != "zh" {
103+
t.Fatalf("Expected Chinese, but was: %v", code)
104+
}
105+
106+
code = CodeForName("Neverheardof")
107+
108+
if code != "" {
109+
t.Fatalf("Expected no valid code, but was: %v", code)
110+
}
111+
}
112+
113+
func TestCodeForNativeName(t *testing.T) {
114+
code := CodeForNativeName("English")
115+
116+
if code != "en" {
117+
t.Fatalf("Expected English, but was: %v", code)
118+
}
119+
120+
code = CodeForNativeName("中文")
121+
122+
if code != "zh" {
123+
t.Fatalf("Expected Chinese, but was: %v", code)
124+
}
125+
126+
code = CodeForNativeName("Neverheardof")
127+
128+
if code != "" {
129+
t.Fatalf("Expected no valid code, but was: %v", code)
130+
}
131+
}
132+
133+
func TestValidCode(t *testing.T) {
134+
if !ValidCode("en") {
135+
t.Fatal("Code must be valid")
136+
}
137+
138+
if !ValidCode("zh") {
139+
t.Fatal("Code must be valid")
140+
}
141+
142+
if ValidCode("xx") {
143+
t.Fatal("Code must be invalid")
144+
}
145+
}
146+
147+
func TestValidName(t *testing.T) {
148+
if !ValidName("English") {
149+
t.Fatal("Name must be valid")
150+
}
151+
152+
if !ValidName("Chinese") {
153+
t.Fatal("Name must be valid")
154+
}
155+
156+
if ValidName("Neverheardof") {
157+
t.Fatal("Name must be invalid")
158+
}
159+
}
160+
161+
func TestValidNativeName(t *testing.T) {
162+
if !ValidNativeName("English") {
163+
t.Fatal("Native name must be valid")
164+
}
165+
166+
if !ValidNativeName("中文") {
167+
t.Fatal("Native name must be valid")
168+
}
169+
170+
if ValidNativeName("Neverheardof") {
171+
t.Fatal("Native name must be invalid")
172+
}
173+
}

0 commit comments

Comments
 (0)