func ExampleMock_After() { // Create a new mock clock. clock := clock.NewMock() count := 0 // Create a channel to execute after 10 mock seconds. go func() { <-clock.After(10 * time.Second) count = 100 }() runtime.Gosched() // Print the starting value. fmt.Printf("%s: %d\n", clock.Now().UTC(), count) // Move the clock forward 5 seconds and print the value again. clock.Add(5 * time.Second) fmt.Printf("%s: %d\n", clock.Now().UTC(), count) // Move the clock forward 5 seconds to the tick time and check the value. clock.Add(5 * time.Second) fmt.Printf("%s: %d\n", clock.Now().UTC(), count) // Output: // 1970-01-01 00:00:00 +0000 UTC: 0 // 1970-01-01 00:00:05 +0000 UTC: 0 // 1970-01-01 00:00:10 +0000 UTC: 100 }
// Ensure that the mock's current time can be changed. func TestMock_Now(t *testing.T) { clock := clock.NewMock() if now := clock.Now(); !now.Equal(time.Unix(0, 0)) { t.Fatalf("expected epoch, got: ", now) } // Add 10 seconds and check the time. clock.Add(10 * time.Second) if now := clock.Now(); !now.Equal(time.Unix(10, 0)) { t.Fatalf("expected epoch, got: ", now) } }
func ExampleMock_AfterFunc() { // Create a new mock clock. clock := clock.NewMock() count := 0 // Execute a function after 10 mock seconds. clock.AfterFunc(10*time.Second, func() { count = 100 }) runtime.Gosched() // Print the starting value. fmt.Printf("%s: %d\n", clock.Now().UTC(), count) // Move the clock forward 10 seconds and print the new value. clock.Add(10 * time.Second) fmt.Printf("%s: %d\n", clock.Now().UTC(), count) // Output: // 1970-01-01 00:00:00 +0000 UTC: 0 // 1970-01-01 00:00:10 +0000 UTC: 100 }