fakeClock.Increment(5 * time.Second) Consistently(doneSleeping, Δ).ShouldNot(BeClosed()) fakeClock.Increment(4 * time.Second) Consistently(doneSleeping, Δ).ShouldNot(BeClosed()) fakeClock.Increment(1 * time.Second) Eventually(doneSleeping).Should(BeClosed()) }) }) Describe("WatcherCount", func() { Context("when a timer is created", func() { It("increments the watcher count", func() { fakeClock.NewTimer(time.Second) Expect(fakeClock.WatcherCount()).To(Equal(1)) fakeClock.NewTimer(2 * time.Second) Expect(fakeClock.WatcherCount()).To(Equal(2)) }) }) Context("when a timer fires", func() { It("increments the watcher count", func() { fakeClock.NewTimer(time.Second) Expect(fakeClock.WatcherCount()).To(Equal(1)) fakeClock.Increment(time.Second) Expect(fakeClock.WatcherCount()).To(Equal(0)) })
var _ = Describe("FakeTimer", func() { const Δ = 10 * time.Millisecond var ( fakeClock *fakeclock.FakeClock initialTime time.Time ) BeforeEach(func() { initialTime = time.Date(2014, 1, 1, 3, 0, 30, 0, time.UTC) fakeClock = fakeclock.NewFakeClock(initialTime) }) It("proivdes a channel that receives after the given interval has elapsed", func() { timer := fakeClock.NewTimer(10 * time.Second) timeChan := timer.C() Consistently(timeChan, Δ).ShouldNot(Receive()) fakeClock.Increment(5 * time.Second) Consistently(timeChan, Δ).ShouldNot(Receive()) fakeClock.Increment(4 * time.Second) Consistently(timeChan, Δ).ShouldNot(Receive()) fakeClock.Increment(1 * time.Second) Eventually(timeChan).Should(Receive(Equal(initialTime.Add(10 * time.Second)))) fakeClock.Increment(10 * time.Second) Consistently(timeChan, Δ).ShouldNot(Receive()) })