47 lines
1.2 KiB
Go
47 lines
1.2 KiB
Go
// internal/ambient/sentinel_test.go
|
|
package ambient
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"keel/internal/evidence"
|
|
)
|
|
|
|
func snap(title, class string) evidence.WindowSnapshot {
|
|
return evidence.WindowSnapshot{Title: title, Class: class, Health: evidence.EvidenceHealth{Available: true}}
|
|
}
|
|
|
|
func TestNewLineEmpty(t *testing.T) {
|
|
s := New(Deps{}, 0, "notify")
|
|
if s.Line() != "" {
|
|
t.Fatalf("fresh sentinel line = %q, want empty", s.Line())
|
|
}
|
|
}
|
|
|
|
func TestOnWindowRingDedupesAndCaps(t *testing.T) {
|
|
s := New(Deps{}, 0, "notify")
|
|
s.OnWindow(snap("a", "x"))
|
|
s.OnWindow(snap("a", "x")) // consecutive dup ignored
|
|
s.OnWindow(snap("b", "x"))
|
|
if got := s.recentForTest(); len(got) != 2 || got[0] != "a" || got[1] != "b" {
|
|
t.Fatalf("ring = %v, want [a b]", got)
|
|
}
|
|
for i := 0; i < recentTitlesMax+5; i++ {
|
|
s.OnWindow(snap(string(rune('A'+i)), "x"))
|
|
}
|
|
if got := s.recentForTest(); len(got) != recentTitlesMax {
|
|
t.Fatalf("ring len = %d, want %d", len(got), recentTitlesMax)
|
|
}
|
|
}
|
|
|
|
func TestOnWindowSkipsEmptyTitle(t *testing.T) {
|
|
s := New(Deps{}, 0, "notify")
|
|
s.OnWindow(snap("", "x"))
|
|
if got := s.recentForTest(); len(got) != 0 {
|
|
t.Fatalf("empty title must not enter ring, got %v", got)
|
|
}
|
|
}
|
|
|
|
var _ = context.Background
|