chore: baseline snapshot before moderation-strictness feature
Repo .git was damaged (refs/ missing, index truncated, object store near-empty). Repaired via git init (rebuilt refs), stale index preserved as .git/index.corrupt-20260910.bak, then full worktree committed as a rollback baseline.
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
package shared
|
||||
|
||||
import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/tamakyi/TamaBox/internal/i18n"
|
||||
)
|
||||
|
||||
func TestAppState_Default(t *testing.T) {
|
||||
s := NewAppState()
|
||||
if got := s.Lang(); got != i18n.Default {
|
||||
t.Errorf("默认语言 = %q, 期望 %q", got, i18n.Default)
|
||||
}
|
||||
}
|
||||
|
||||
func TestAppState_SetLang_Normalize(t *testing.T) {
|
||||
cases := []struct {
|
||||
in string
|
||||
want string
|
||||
}{
|
||||
{"zh-CN", i18n.LangZhCN},
|
||||
{"zh_CN", i18n.LangZhCN}, // 下划线变体
|
||||
{"zh", i18n.LangZhCN},
|
||||
{"zh-TW", i18n.LangZhTW},
|
||||
{"zh_hk", i18n.LangZhTW}, // 港繁统一映射到繁体中文
|
||||
{"zh-hant", i18n.LangZhTW},
|
||||
{"en", i18n.LangEn},
|
||||
{"en-US", i18n.LangEn},
|
||||
{"ja", i18n.LangJa},
|
||||
{"ja_JP", i18n.LangJa},
|
||||
{" En ", i18n.LangEn}, // 自动去空白
|
||||
{"fr", i18n.Default}, // 未知回退
|
||||
{"", i18n.Default}, // 空值回退
|
||||
}
|
||||
|
||||
for _, tc := range cases {
|
||||
s := NewAppState()
|
||||
s.SetLang(tc.in)
|
||||
if got := s.Lang(); got != tc.want {
|
||||
t.Errorf("SetLang(%q) 后 Lang() = %q, 期望 %q", tc.in, got, tc.want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestAppState_Concurrent(t *testing.T) {
|
||||
s := NewAppState()
|
||||
const n = 100
|
||||
|
||||
// 并发读写,覆盖 RWMutex 的多读单写路径。
|
||||
// 用 channel 计数替代 WaitGroup(部分受限环境对 WaitGroup 信号量支持异常)。
|
||||
done := make(chan struct{}, n)
|
||||
for i := 0; i < n; i++ {
|
||||
go func(i int) {
|
||||
defer func() { done <- struct{}{} }()
|
||||
if i%2 == 0 {
|
||||
s.SetLang("en")
|
||||
} else {
|
||||
_ = s.Lang()
|
||||
}
|
||||
}(i)
|
||||
}
|
||||
for i := 0; i < n; i++ {
|
||||
select {
|
||||
case <-done:
|
||||
case <-time.After(10 * time.Second):
|
||||
t.Fatalf("并发测试超时:仅 %d/%d 完成", i, n)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestApp_Singleton(t *testing.T) {
|
||||
// 单例默认语言为 zh-CN
|
||||
if App.Lang() != i18n.Default {
|
||||
t.Errorf("App.Lang() = %q, 期望默认 %q", App.Lang(), i18n.Default)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user