whatcanGOwrong
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
// +build !windows
|
||||
// +build !js
|
||||
// +build !appengine
|
||||
|
||||
package runewidth
|
||||
|
||||
import (
|
||||
"os"
|
||||
"testing"
|
||||
)
|
||||
|
||||
type envVars struct {
|
||||
lang string
|
||||
lc_all string
|
||||
lc_ctype string
|
||||
}
|
||||
|
||||
func saveEnv() envVars {
|
||||
return envVars{
|
||||
lang: os.Getenv("LANG"),
|
||||
lc_all: os.Getenv("LC_ALL"),
|
||||
lc_ctype: os.Getenv("LC_CTYPE"),
|
||||
}
|
||||
}
|
||||
func restoreEnv(env *envVars) {
|
||||
os.Setenv("LANG", env.lang)
|
||||
os.Setenv("LC_ALL", env.lc_all)
|
||||
os.Setenv("LC_CTYPE", env.lc_ctype)
|
||||
}
|
||||
|
||||
func TestIsEastAsian(t *testing.T) {
|
||||
testcases := []struct {
|
||||
locale string
|
||||
want bool
|
||||
}{
|
||||
{"foo@cjk_narrow", false},
|
||||
{"foo@cjk", false},
|
||||
{"utf-8@cjk", false},
|
||||
{"ja_JP.CP932", true},
|
||||
}
|
||||
|
||||
for _, tt := range testcases {
|
||||
got := isEastAsian(tt.locale)
|
||||
if got != tt.want {
|
||||
t.Fatalf("isEastAsian(%q) should be %v", tt.locale, tt.want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestIsEastAsianLCCTYPE(t *testing.T) {
|
||||
env := saveEnv()
|
||||
defer restoreEnv(&env)
|
||||
os.Setenv("LC_ALL", "")
|
||||
|
||||
testcases := []struct {
|
||||
lcctype string
|
||||
want bool
|
||||
}{
|
||||
{"ja_JP.UTF-8", true},
|
||||
{"C", false},
|
||||
{"POSIX", false},
|
||||
{"en_US.UTF-8", false},
|
||||
}
|
||||
|
||||
for _, tt := range testcases {
|
||||
os.Setenv("LC_CTYPE", tt.lcctype)
|
||||
got := IsEastAsian()
|
||||
if got != tt.want {
|
||||
t.Fatalf("IsEastAsian() for LC_CTYPE=%v should be %v", tt.lcctype, tt.want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestIsEastAsianLANG(t *testing.T) {
|
||||
env := saveEnv()
|
||||
defer restoreEnv(&env)
|
||||
os.Setenv("LC_ALL", "")
|
||||
os.Setenv("LC_CTYPE", "")
|
||||
|
||||
testcases := []struct {
|
||||
lcctype string
|
||||
want bool
|
||||
}{
|
||||
{"ja_JP.UTF-8", true},
|
||||
{"C", false},
|
||||
{"POSIX", false},
|
||||
{"en_US.UTF-8", false},
|
||||
{"C.UTF-8", false},
|
||||
}
|
||||
|
||||
for _, tt := range testcases {
|
||||
os.Setenv("LANG", tt.lcctype)
|
||||
got := IsEastAsian()
|
||||
if got != tt.want {
|
||||
t.Fatalf("IsEastAsian() for LANG=%v should be %v", tt.lcctype, tt.want)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user