59 lines
1.4 KiB
Go
59 lines
1.4 KiB
Go
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)
|
||
|
|
}
|
||
|
|
}
|