1package tui
2
3import (
4 "testing"
5 "time"
6)
7
8func TestStringSpinnerAdvancesAtConfiguredInterval(t *testing.T) {
9 spinner := NewStringSpinner([]string{"Zzzz", "zZzz", "zzZz", "zzzZ"}, time.Second)
10 started := time.Date(2026, time.August, 13, 12, 0, 0, 0, time.UTC)
11
12 tests := []struct {
13 elapsed time.Duration
14 want string
15 }{
16 {elapsed: 0, want: "Zzzz"},
17 {elapsed: 999 * time.Millisecond, want: "Zzzz"},
18 {elapsed: time.Second, want: "zZzz"},
19 {elapsed: 2 * time.Second, want: "zzZz"},
20 {elapsed: 3 * time.Second, want: "zzzZ"},
21 {elapsed: 4 * time.Second, want: "Zzzz"},
22 }
23 for _, test := range tests {
24 if got := spinner.FrameAt(started, started.Add(test.elapsed)); got != test.want {
25 t.Fatalf("FrameAt(%s) = %q, want %q", test.elapsed, got, test.want)
26 }
27 }
28}