|
- package events
-
- import (
- "encoding/json"
- "os"
- "path/filepath"
- "testing"
- "time"
-
- "sdr-wideband-suite/internal/detector"
- )
-
- func TestReadRecent(t *testing.T) {
- dir := t.TempDir()
- path := filepath.Join(dir, "events.jsonl")
-
- start := time.Now().Add(-5 * time.Minute).UTC().Truncate(time.Millisecond)
- events := []detector.Event{
- {ID: 1, Start: start, End: start.Add(2 * time.Second), CenterHz: 100, Bandwidth: 5, PeakDb: -10, SNRDb: 12},
- {ID: 2, Start: start.Add(10 * time.Second), End: start.Add(12 * time.Second), CenterHz: 200, Bandwidth: 10, PeakDb: -5, SNRDb: 15},
- {ID: 3, Start: start.Add(20 * time.Second), End: start.Add(22 * time.Second), CenterHz: 300, Bandwidth: 20, PeakDb: -3, SNRDb: 18},
- }
-
- file, err := os.Create(path)
- if err != nil {
- t.Fatalf("create: %v", err)
- }
- enc := json.NewEncoder(file)
- for _, ev := range events {
- if err := enc.Encode(ev); err != nil {
- t.Fatalf("encode: %v", err)
- }
- }
- if err := file.Close(); err != nil {
- t.Fatalf("close: %v", err)
- }
-
- got, err := ReadRecent(path, 2, time.Time{})
- if err != nil {
- t.Fatalf("read: %v", err)
- }
- if len(got) != 2 {
- t.Fatalf("expected 2 events, got %d", len(got))
- }
- if got[0].ID != 2 || got[1].ID != 3 {
- t.Fatalf("unexpected IDs: %v, %v", got[0].ID, got[1].ID)
- }
-
- since := start.Add(15 * time.Second)
- got, err = ReadRecent(path, 10, since)
- if err != nil {
- t.Fatalf("read since: %v", err)
- }
- if len(got) != 1 {
- t.Fatalf("expected 1 event, got %d", len(got))
- }
- if got[0].ID != 3 {
- t.Fatalf("expected ID 3, got %d", got[0].ID)
- }
- }
|