2026-10-18 15:38:42 +02:00
|
|
|
package langdetect
|
|
|
|
|
|
|
|
|
|
import "testing"
|
|
|
|
|
|
2026-10-24 11:15:35 +02:00
|
|
|
// TestDetect is table-driven: input text, expected language. The fallback
|
|
|
|
|
// applies to empty, undecidable and tied text; it is passed explicitly so
|
|
|
|
|
// the test pins both directions.
|
2026-10-18 15:38:42 +02:00
|
|
|
func TestDetect(t *testing.T) {
|
|
|
|
|
cases := []struct {
|
2026-10-24 11:15:35 +02:00
|
|
|
name string
|
|
|
|
|
text string
|
|
|
|
|
fallback string
|
|
|
|
|
want string
|
2026-10-18 15:38:42 +02:00
|
|
|
}{
|
2026-10-24 11:15:35 +02:00
|
|
|
{"empty → fallback de", "", "de", "de"},
|
|
|
|
|
{"empty → fallback en", "", "en", "en"},
|
|
|
|
|
{"whitespace only", " \n\t ", "en", "en"},
|
|
|
|
|
{"punctuation only", "!!! ??? ...", "de", "de"},
|
|
|
|
|
{"german sentence", "Der Build wurde erfolgreich abgeschlossen und das Deployment ist fertig.", "en", "de"},
|
|
|
|
|
{"undecidable german question → fallback", "Was macht er?", "en", "en"},
|
|
|
|
|
{"german umlauts", "Größe früh Ärzteübung — schön daß es klappt", "en", "de"},
|
|
|
|
|
{"ß alone", "weiß", "en", "de"},
|
|
|
|
|
{"english sentence", "The build has finished and the deployment is done.", "de", "en"},
|
|
|
|
|
{"english imperative", "Please wait until the tests are green.", "de", "en"},
|
|
|
|
|
{"english single word", "done", "de", "en"},
|
|
|
|
|
{"mixed, english dominates", "the build is done and ready for you", "de", "en"},
|
|
|
|
|
{"mixed, german dominates", "Der build ist done und fertig für dich", "en", "de"},
|
|
|
|
|
{"tie → fallback", "der the", "en", "en"},
|
|
|
|
|
{"undecidable → fallback", "Build 2026-10-18 14:22 UTC", "de", "de"},
|
|
|
|
|
{"agent-style en", "Task completed. Please review the changes and approve.", "de", "en"},
|
|
|
|
|
{"agent-style de", "Aufgabe abgeschlossen. Bitte prüfen und freigeben.", "en", "de"},
|
2026-10-18 15:38:42 +02:00
|
|
|
}
|
|
|
|
|
for _, tc := range cases {
|
|
|
|
|
t.Run(tc.name, func(t *testing.T) {
|
2026-10-24 11:15:35 +02:00
|
|
|
if got := Detect(tc.text, tc.fallback); got != tc.want {
|
|
|
|
|
t.Errorf("Detect(%q, %q) = %q, want %q", tc.text, tc.fallback, got, tc.want)
|
2026-10-18 15:38:42 +02:00
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|