clock.go 368 B

123456789101112131415161718
  1. package clock
  2. import "time"
  3. // Clock is the time seam so a payroll run is reproducible in tests.
  4. type Clock interface {
  5. Now() time.Time
  6. }
  7. // System is the production clock.
  8. type System struct{}
  9. func (System) Now() time.Time { return time.Now().UTC() }
  10. // Fixed is a frozen clock.
  11. type Fixed struct{ At time.Time }
  12. func (f Fixed) Now() time.Time { return f.At }