package clipmon import ( "os" "path/filepath" "strings" "testing" "time" ) func TestFormatLine(t *testing.T) { t.Parallel() when := time.Date(2026, 8, 28, 13, 4, 5, 0, time.UTC) line := formatLine(Event{Time: when, Kind: "text", Text: "hello"}) if !strings.Contains(line, "[text]") || !strings.Contains(line, "hello") { t.Fatalf("formatLine text = %q", line) } img := formatLine(Event{Time: when, Kind: "image", ImagePath: "images/ab.png"}) if !strings.Contains(img, "[image] images/ab.png") { t.Fatalf("formatLine image = %q", img) } } func TestWriterHourly(t *testing.T) { dir := t.TempDir() w, err := NewWriter(dir) if err != nil { t.Fatalf("NewWriter: %v", err) } when := time.Date(2026, 8, 28, 13, 0, 0, 0, time.Local) if err := w.Write(Event{Time: when, Kind: "text", Text: "copied"}); err != nil { t.Fatalf("Write: %v", err) } _ = w.Close() data, err := os.ReadFile(filepath.Join(dir, LogFilename(HourBucket(when)))) if err != nil { t.Fatalf("read log: %v", err) } if !strings.Contains(string(data), "copied") { t.Fatalf("log = %q", data) } } func TestSavePNG(t *testing.T) { dir := t.TempDir() w, err := NewWriter(dir) if err != nil { t.Fatalf("NewWriter: %v", err) } rel, err := w.SavePNG([]byte{0x89, 'P', 'N', 'G', 0, 0, 0}) if err != nil { t.Fatalf("SavePNG: %v", err) } if !strings.HasPrefix(rel, "images/") { t.Fatalf("rel = %q", rel) } }