2 Star 0 Fork 70

golang-package/carbon

forked from dromara/carbon 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
language_unit_test.go 7.26 KB
一键复制 编辑 原始数据 按行查看 历史
package carbon
import (
"testing"
"github.com/stretchr/testify/suite"
)
type LanguageSuite struct {
suite.Suite
}
func TestLanguageSuite(t *testing.T) {
suite.Run(t, new(LanguageSuite))
}
func (s *LanguageSuite) TestLanguage_Copy() {
s.Run("copy nil language", func() {
oldLang := NewLanguage()
oldLang = nil
newCarbon := oldLang.Copy()
s.Nil(oldLang)
s.Nil(newCarbon)
})
s.Run("copy nil resources", func() {
oldLang := NewLanguage()
oldLang.resources = nil
newCarbon := oldLang.Copy()
s.Nil(oldLang.resources)
s.Nil(newCarbon.resources)
})
s.Run("copy dir", func() {
oldLang := NewLanguage()
oldLang.dir = "lang"
newCarbon := oldLang.Copy()
s.Equal(oldLang.dir, newCarbon.dir)
})
s.Run("copy locale", func() {
oldLang := NewLanguage()
oldLang.locale = "en"
newCarbon := oldLang.Copy()
s.Equal(oldLang.locale, newCarbon.locale)
})
s.Run("copy resources", func() {
oldLang := NewLanguage()
oldLang.SetLocale("en").SetResources(map[string]string{
"months": "Ⅰ月|Ⅱ月|Ⅲ月|Ⅳ月|Ⅴ月|Ⅵ月|Ⅶ月|Ⅷ月|Ⅸ月|Ⅹ月|Ⅺ月|Ⅻ月",
"short_months": "Ⅰ|Ⅱ|Ⅲ|Ⅳ|Ⅴ|Ⅵ|Ⅶ|Ⅷ|Ⅸ|Ⅹ|Ⅺ|Ⅻ",
})
newCarbon := oldLang.Copy()
s.Equal(oldLang.resources, newCarbon.resources)
})
}
func (s *LanguageSuite) TestLanguage_SetLocale() {
s.Run("nil language", func() {
lang := NewLanguage()
lang = nil
lang.SetLocale("en")
s.Empty(Parse("2020-08-05 13:14:15").SetLanguage(lang).ToMonthString())
})
s.Run("error locale", func() {
lang := NewLanguage()
lang.SetLocale("xxx")
s.Error(lang.Error)
s.Empty(Parse("2020-08-05 13:14:15").SetLanguage(lang).ToMonthString())
})
s.Run("empty locale", func() {
lang := NewLanguage()
lang.SetLocale("")
s.Error(lang.Error)
s.Empty(Parse("2020-08-05 13:14:15").SetLanguage(lang).ToMonthString())
})
s.Run("valid carbon", func() {
lang := NewLanguage()
lang.SetLocale("en")
s.Nil(lang.Error)
s.Equal("Leo", Parse("2020-08-05").SetLanguage(lang).Constellation())
s.Equal("Summer", Parse("2020-08-05").SetLanguage(lang).Season())
s.Equal("4 years before", Parse("2020-08-05").SetLanguage(lang).DiffForHumans(Parse("2024-08-05")))
s.Equal("August", Parse("2020-08-05").SetLanguage(lang).ToMonthString())
s.Equal("Aug", Parse("2020-08-05").SetLanguage(lang).ToShortMonthString())
s.Equal("Wednesday", Parse("2020-08-05").SetLanguage(lang).ToWeekString())
s.Equal("Wed", Parse("2020-08-05").SetLanguage(lang).ToShortWeekString())
lang.SetLocale("zh-CN")
s.Nil(lang.Error)
s.Equal("狮子座", Parse("2020-08-05").SetLanguage(lang).Constellation())
s.Equal("夏季", Parse("2020-08-05").SetLanguage(lang).Season())
s.Equal("4 年前", Parse("2020-08-05").SetLanguage(lang).DiffForHumans(Parse("2024-08-05")))
s.Equal("八月", Parse("2020-08-05").SetLanguage(lang).ToMonthString())
s.Equal("8月", Parse("2020-08-05").SetLanguage(lang).ToShortMonthString())
s.Equal("星期三", Parse("2020-08-05").SetLanguage(lang).ToWeekString())
s.Equal("周三", Parse("2020-08-05").SetLanguage(lang).ToShortWeekString())
})
}
func (s *LanguageSuite) TestLanguage_SetResources() {
s.Run("nil language", func() {
lang := NewLanguage()
lang = nil
lang.SetResources(map[string]string{
"months": "Ⅰ月|Ⅱ月|Ⅲ月|Ⅳ月|Ⅴ月|Ⅵ月|Ⅶ月|Ⅷ月|Ⅸ月|Ⅹ月|Ⅺ月|Ⅻ月",
"short_months": "Ⅰ|Ⅱ|Ⅲ|Ⅳ|Ⅴ|Ⅵ|Ⅶ|Ⅷ|Ⅸ|Ⅹ|Ⅺ|Ⅻ",
})
s.Empty(Parse("2020-08-05 13:14:15").SetLanguage(lang).ToMonthString())
})
s.Run("nil resources", func() {
lang := NewLanguage()
lang.SetResources(nil)
s.Error(lang.Error)
s.Empty(Parse("2020-08-05 13:14:15").SetLanguage(lang).ToMonthString())
})
s.Run("empty resources", func() {
lang := NewLanguage()
lang.SetResources(map[string]string{})
s.Error(lang.Error)
s.Empty(Parse("2020-08-05 13:14:15").SetLanguage(lang).ToMonthString())
})
s.Run("error resources", func() {
lang := NewLanguage()
lang.SetResources(map[string]string{
"xxx": "xxx",
})
s.Error(lang.Error)
s.Empty(Parse("2020-08-05 13:14:15").SetLanguage(lang).ToMonthString())
})
s.Run("set some resources", func() {
lang := NewLanguage()
lang.SetLocale("en").SetResources(map[string]string{
"months": "Ⅰ月|Ⅱ月|Ⅲ月|Ⅳ月|Ⅴ月|Ⅵ月|Ⅶ月|Ⅷ月|Ⅸ月|Ⅹ月|Ⅺ月|Ⅻ月",
"short_months": "Ⅰ|Ⅱ|Ⅲ|Ⅳ|Ⅴ|Ⅵ|Ⅶ|Ⅷ|Ⅸ|Ⅹ|Ⅺ|Ⅻ",
})
s.Nil(lang.Error)
s.Equal("Leo", Parse("2020-08-05").SetLanguage(lang).Constellation())
s.Equal("Summer", Parse("2020-08-05").SetLanguage(lang).Season())
s.Equal("4 years before", Parse("2020-08-05").SetLanguage(lang).DiffForHumans(Parse("2024-08-05")))
s.Equal("Ⅷ月", Parse("2020-08-05").SetLanguage(lang).ToMonthString())
s.Equal("Ⅷ", Parse("2020-08-05").SetLanguage(lang).ToShortMonthString())
s.Equal("Wednesday", Parse("2020-08-05").SetLanguage(lang).ToWeekString())
s.Equal("Wed", Parse("2020-08-05").SetLanguage(lang).ToShortWeekString())
})
s.Run("set all resources", func() {
resources := map[string]string{
"constellations": "Aries|Taurus|Gemini|Cancer|Leo|Virgo|Libra|Scorpio|Sagittarius|Capricorn|Aquarius|Pisces",
"seasons": "spring|summer|autumn|winter",
"months": "January|February|March|April|May|June|July|August|September|October|November|December",
"short_months": "Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec",
"weeks": "Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday",
"short_weeks": "Sun|Mon|Tue|Wed|Thu|Fri|Sat",
"year": "1 yr|%d yrs",
"month": "1 mo|%d mos",
"week": "%dw",
"day": "%dd",
"hour": "%dh",
"minute": "%dm",
"second": "%ds",
"now": "just now",
"ago": "%s ago",
"from_now": "in %s",
"before": "%s before",
"after": "%s after",
}
lang := NewLanguage()
lang.SetResources(resources)
s.Nil(lang.Error)
s.Equal("Leo", Parse("2020-08-05").SetLanguage(lang).Constellation())
s.Equal("summer", Parse("2020-08-05").SetLanguage(lang).Season())
s.Equal("4 yrs before", Parse("2020-08-05").SetLanguage(lang).DiffForHumans(Parse("2024-08-05")))
s.Equal("August", Parse("2020-08-05").SetLanguage(lang).ToMonthString())
s.Equal("Aug", Parse("2020-08-05").SetLanguage(lang).ToShortMonthString())
s.Equal("Wednesday", Parse("2020-08-05").SetLanguage(lang).ToWeekString())
s.Equal("Wed", Parse("2020-08-05").SetLanguage(lang).ToShortWeekString())
})
}
func (s *LanguageSuite) TestLanguage_translate() {
s.Run("nil language", func() {
lang := NewLanguage()
lang = nil
s.Empty(lang.translate("month", 1))
})
s.Run("nil resources", func() {
lang := NewLanguage()
lang.SetResources(nil)
s.Error(lang.Error)
s.Empty(lang.translate("month", 1))
})
s.Run("empty resources", func() {
lang := NewLanguage()
lang.SetResources(map[string]string{})
s.Error(lang.Error)
s.Empty(lang.translate("month", 1))
})
s.Run("error resources", func() {
lang := NewLanguage()
lang.SetResources(map[string]string{
"xxx": "xxx",
})
s.Error(lang.Error)
s.Empty(lang.translate("month", 1))
})
s.Run("valid resources", func() {
lang := NewLanguage()
lang.SetLocale("en")
s.Nil(lang.Error)
s.Equal("1 month", lang.translate("month", 1))
s.Equal("-1 month", lang.translate("month", -1))
})
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/golang-package/carbon.git
git@gitee.com:golang-package/carbon.git
golang-package
carbon
carbon
master

搜索帮助