Source File
clock.go
Belonging Package
go.uber.org/dig/internal/digclock
// Copyright (c) 2024 Uber Technologies, Inc.//// Permission is hereby granted, free of charge, to any person obtaining a copy// of this software and associated documentation files (the "Software"), to deal// in the Software without restriction, including without limitation the rights// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell// copies of the Software, and to permit persons to whom the Software is// furnished to do so, subject to the following conditions://// The above copyright notice and this permission notice shall be included in// all copies or substantial portions of the Software.//// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN// THE SOFTWARE.package digclockimport ()// Clock defines how dig accesses time.type Clock interface {Now() time.TimeSince(time.Time) time.Duration}// System is the default implementation of Clock based on real time.var System Clock = systemClock{}type systemClock struct{}func (systemClock) () time.Time {return time.Now()}func (systemClock) ( time.Time) time.Duration {return time.Since()}// Mock is a fake source of time.// It implements standard time operations, but allows// the user to control the passage of time.//// Use the [Mock.Add] method to progress time.//// Note that this implementation is not safe for concurrent use.type Mock struct {now time.Time}var _ Clock = (*Mock)(nil)// NewMock creates a new mock clock with the current time set to the current time.func () *Mock {return &Mock{now: time.Now()}}// Now returns the current time.func ( *Mock) () time.Time {return .now}// Since returns the time elapsed since the given time.func ( *Mock) ( time.Time) time.Duration {return .Now().Sub()}// Add progresses time by the given duration.//// It panics if the duration is negative.func ( *Mock) ( time.Duration) {if < 0 {panic("cannot add negative duration")}.now = .now.Add()}
![]() |
The pages are generated with Golds v0.8.2. (GOOS=linux GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds. |