package main import ( "strings" "testing" ) // 验证语言检测:中文→zh-CN,英文→en func TestDetectLang(t *testing.T) { cases := []struct { text string want string }{ {"你好世界", "zh-CN"}, {"Hello World", "en"}, {"今天天气很好", "zh-CN"}, {"The quick brown fox", "en"}, {"混合Hello世界", "zh-CN"}, // 含中文即视为中文 } for _, c := range cases { if got := detectLang(c.text); got != c.want { t.Errorf("detectLang(%q) = %q, want %q", c.text, got, c.want) } } } // 验证 429 限流提示 func TestTranslateQuota(t *testing.T) { _, err := translateMyMemory("Hello World") if err == nil { t.Skip("MyMemory 未限流,跳过(可能已恢复配额)") } if !strings.Contains(err.Error(), "额度") { t.Errorf("限流错误应含「额度」提示,得到: %v", err) } } // 验证限流恢复时间解析 func TestQuotaError(t *testing.T) { // 带恢复时间 raw := "MYMEMORY WARNING: YOU USED ALL AVAILABLE FREE TRANSLATIONS FOR TODAY. NEXT AVAILABLE IN 00 HOURS 20 MINUTES 16 SECONDS VISIT HTTPS://MYMEMORY.TRANSLATED.NET" err := quotaError(raw) if !strings.Contains(err.Error(), "额度") || !strings.Contains(err.Error(), "恢复") { t.Errorf("应提示恢复时间,得到: %v", err) } t.Logf("解析结果: %v", err) // 不带恢复时间 err2 := quotaError("MYMEMORY WARNING") if !strings.Contains(err2.Error(), "额度") { t.Errorf("无恢复时间也应提示额度,得到: %v", err2) } }