Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Lx9FNLG2CqeBbVGGd9bFsP
32 lines
589 B
Go
32 lines
589 B
Go
package clock
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestFakeAdvanceFiresInOrder(t *testing.T) {
|
|
f := NewFake(time.Unix(0, 0))
|
|
a := f.After(2 * time.Second)
|
|
tk := f.NewTicker(time.Second)
|
|
defer tk.Stop()
|
|
f.Advance(1500 * time.Millisecond)
|
|
select {
|
|
case <-tk.C():
|
|
default:
|
|
t.Fatal("ticker should have fired at 1s")
|
|
}
|
|
select {
|
|
case <-a:
|
|
t.Fatal("After(2s) fired early")
|
|
default:
|
|
}
|
|
f.Advance(time.Second)
|
|
if got := <-a; !got.Equal(time.Unix(2, 0)) {
|
|
t.Fatalf("After fired at %v", got)
|
|
}
|
|
if !f.Now().Equal(time.Unix(2, 500_000_000)) {
|
|
t.Fatalf("now = %v", f.Now())
|
|
}
|
|
}
|