package tts import "testing" // TestSniffAudio 锁定字节嗅探的判据表:认得的容器各自给出正确的格式名, // 「不是音频」一律 ("" , false) —— 这一条是"绝不把 JSON/HTML 当音频"的地基。 func TestSniffAudio(t *testing.T) { cases := []struct { name string data []byte format string ok bool }{ {"wav", wavBytes("x"), "wav", true}, {"mp3-id3", append([]byte("ID3"), 0, 0, 0, 0, 0, 0), "mp3", true}, {"mp3-frame", []byte{0xFF, 0xFB, 0x90, 0x00}, "mp3", true}, {"ogg", []byte("OggS\x00\x02"), "ogg", true}, {"flac", []byte("fLaC\x00\x00\x00\x22"), "flac", true}, {"m4a", []byte{0, 0, 0, 0x20, 'f', 't', 'y', 'p', 'M', '4', 'A', ' '}, "m4a", true}, {"webm", []byte{0x1A, 0x45, 0xDF, 0xA3, 0x01}, "webm", true}, {"amr", []byte("#!AMR\n"), "amr", true}, {"json", []byte(`{"detail":"nope"}`), "", false}, {"html", []byte("502"), "", false}, {"empty", nil, "", false}, {"riff-not-wave", append([]byte("RIFF"), []byte("\x00\x00\x00\x00AVI ")...), "", false}, } for _, c := range cases { t.Run(c.name, func(t *testing.T) { format, ok := sniffAudio(c.data) if ok != c.ok || format != c.format { t.Fatalf("sniffAudio = (%q,%v), want (%q,%v)", format, ok, c.format, c.ok) } }) } }