-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathi18n_test.go
118 lines (92 loc) · 2.55 KB
/
i18n_test.go
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
package pgo2
import (
"testing"
"github.com/golang/mock/gomock"
mock_config "github.com/pinguo/pgo2/test/mock/config"
)
func TestNewI18n(t *testing.T) {
var obj interface{}
obj = NewI18n(nil)
if _, ok := obj.(*I18n); ok == false {
t.FailNow()
}
}
func TestI18n_SetSourceLang(t *testing.T) {
i18n := NewI18n(nil)
i18n.SetSourceLang("zh-CN")
if i18n.sourceLang != "zh-CN" {
t.FailNow()
}
}
func TestI18n_SetTargetLang(t *testing.T) {
i18n := NewI18n(nil)
targetLang := []interface{}{"en", "zh-CN", "zh-TW"}
i18n.SetTargetLang(targetLang)
if len(i18n.targetLang) != len(targetLang) {
t.FailNow()
}
}
func TestI18n_loadMessage(t *testing.T) {
t.Run("notExitsLang", func(t *testing.T) {
i18n := NewI18n(nil)
if i18n.loadMessage("test", "zh-CN") != "test" {
t.Fatal(`i18n.loadMessage("test","zh-CN") !="test"`)
}
})
t.Run("normal", func(t *testing.T) {
mockTest := "mockTest"
ctrl := gomock.NewController(t)
defer ctrl.Finish()
mockConfig := mock_config.NewMockIConfig(ctrl)
mockConfig.EXPECT().GetString(gomock.Any(), gomock.Any()).Return(mockTest)
App().SetConfig(mockConfig)
i18n := NewI18n(nil)
targetLang := []interface{}{"en", "zh-CN"}
i18n.SetTargetLang(targetLang)
if i18n.loadMessage("test", "zh-CN") != mockTest {
t.Fatal(`i18n.loadMessage("test","zh-CN")!=`, mockTest)
}
})
}
func TestI18n_detectLang(t *testing.T) {
t.Run("inTargetLang", func(t *testing.T) {
i18n := NewI18n(nil)
targetLang := []interface{}{"en", "zh-CN"}
i18n.SetTargetLang(targetLang)
lang := "zh-CN;q=0.9,en;q=0.8,zh-TW;q=0.7"
if i18n.detectLang(lang) != "zh-CN" {
t.FailNow()
}
})
t.Run("notInTargetLang", func(t *testing.T) {
i18n := NewI18n(nil)
targetLang := []interface{}{"en", "zh"}
i18n.SetTargetLang(targetLang)
lang := "zh-CN;q=0.9,en;q=0.8,zh-TW;q=0.7"
if i18n.detectLang(lang) != "zh" {
t.FailNow()
}
})
t.Run("sourceLang", func(t *testing.T) {
i18n := NewI18n(nil)
lang := "zh-CN;q=0.9,en;q=0.8,zh-TW;q=0.7"
if i18n.detectLang(lang) != "en" {
t.FailNow()
}
})
}
func TestI18n_Translate(t *testing.T) {
mockTest := "mockTest%d"
mockTestRet := "mockTest2019"
ctrl := gomock.NewController(t)
defer ctrl.Finish()
mockConfig := mock_config.NewMockIConfig(ctrl)
mockConfig.EXPECT().GetString(gomock.Any(), gomock.Any()).Return(mockTest)
App().SetConfig(mockConfig)
i18n := NewI18n(nil)
targetLang := []interface{}{"en", "zh-CN"}
i18n.SetTargetLang(targetLang)
if i18n.Translate("test", "zh-CN", 2019) != mockTestRet {
t.Fatal(`i18n.Translate("test","zh-CN", 2019)!=`, mockTestRet)
}
}