package fillwatch import ( "io" "log" "path/filepath" "strings" "testing" ) // R-521 F7 — the fill warning moved from a Go literal to the bundle (`event.fill.*`) so an English // household is told in English. The Hungarian wire text is pinned to the byte: it is the pre-bundle // literal (this test ran green against 68294ec's fillwatch.go with these strings carrying „Kérjük, ") // minus that one formal opening, which the R-516 te-form gate refuses in the bundle. func TestMessageHungarianWireText(t *testing.T) { cases := []struct { name string got string want string }{ {"warning", Message(photos, Usage{UsedPercent: 87, AvailGB: 4.2, TotalGB: 100}, BandWarning), "A(z) „Fotók” tároló 87% foglalt — 4,2 GB szabad hely maradt. Szabadíts fel helyet, mielőtt megtelik: törölj felesleges fájlokat, vagy csatlakoztass új meghajtót. Ha megtelik, a biztonsági mentések meghiúsulnak."}, {"critical", Message(photos, Usage{UsedPercent: 96, AvailGB: 1.4, TotalGB: 100}, BandCritical), "A(z) „Fotók” tároló kritikusan megtelt: 1,4 GB szabad hely maradt (96% foglalt). A biztonsági mentések és az alkalmazások írásai bármikor meghiúsulhatnak. Szabadíts fel helyet mielőbb: törölj felesleges fájlokat, vagy csatlakoztass új meghajtót."}, {"terabytes", Message(Target{Path: "/mnt/big", Label: "Média"}, Usage{UsedPercent: 88, AvailGB: 2048, TotalGB: 16000}, BandWarning), "A(z) „Média” tároló 88% foglalt — 2,0 TB szabad hely maradt. Szabadíts fel helyet, mielőtt megtelik: törölj felesleges fájlokat, vagy csatlakoztass új meghajtót. Ha megtelik, a biztonsági mentések meghiúsulnak."}, {"no label", Message(Target{Path: "/mnt/sys_drive"}, Usage{UsedPercent: 90, AvailGB: 1.5}, BandWarning), "A(z) „/mnt/sys_drive” tároló 90% foglalt — 1,5 GB szabad hely maradt. Szabadíts fel helyet, mielőtt megtelik: törölj felesleges fájlokat, vagy csatlakoztass új meghajtót. Ha megtelik, a biztonsági mentések meghiúsulnak."}, } for _, c := range cases { if c.got != c.want { t.Errorf("%s: Hungarian changed.\n got: %q\n want: %q", c.name, c.got, c.want) } } } // The household half: an English household gets the same warning in English, the built-in area named // in English, the figure with a decimal point; a Hungarian household sends nothing extra. func TestR521F7_HouseholdLanguageRidesTheEvent(t *testing.T) { root := Target{Path: "/", Label: "Alkalmazások területe", LabelKey: "event.fill.label_apps"} for _, lang := range []string{"en", "hu"} { t.Run(lang, func(t *testing.T) { var got []Event w := New(filepath.Join(t.TempDir(), "s.json"), log.New(io.Discard, "", 0), func() []Target { return []Target{root} }, func(string) *Usage { return &Usage{UsedPercent: 95, AvailGB: 3.5, UsedGB: 65, TotalGB: 68.7} }) w.SetNotify(func(e Event) { got = append(got, e) }) w.SetLang(func() string { return lang }) w.SetExtra(func(_ Target, l string) string { return "EXTRA-" + l }) if err := w.Check(); err != nil { t.Fatal(err) } if len(got) != 1 { t.Fatalf("events = %d, want 1", len(got)) } e := got[0] if !strings.Contains(e.Message, "Alkalmaz") || !strings.Contains(e.Message, "3,5 GB") || !strings.HasSuffix(e.Message, " EXTRA-hu") { t.Errorf("Hungarian message = %q", e.Message) } if lang == "hu" { if e.MessageHousehold != "" { t.Errorf("a Hungarian household sends nothing extra; got %q", e.MessageHousehold) } return } for _, want := range []string{"App area", "critically full", "3.5 GB", "95%", " EXTRA-en"} { if !strings.Contains(e.MessageHousehold, want) { t.Errorf("English message %q lacks %q", e.MessageHousehold, want) } } if strings.Contains(e.MessageHousehold, "Alkalmaz") { t.Errorf("English message carries the Hungarian area name: %q", e.MessageHousehold) } }) } }