| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- 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)
- }
- }
|