forked from TrueCloudLab/certificates
Add Unix method to TimeDuration.
This commit is contained in:
parent
b0240772da
commit
4c1a11c1bc
2 changed files with 38 additions and 1 deletions
|
@ -113,11 +113,16 @@ func (t *TimeDuration) UnmarshalJSON(data []byte) error {
|
||||||
return errors.Errorf("failed to parse %s", data)
|
return errors.Errorf("failed to parse %s", data)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Time calculates the embedded time.Time, sets it if necessary, and returns it.
|
// Time calculates the time if needed and returns it.
|
||||||
func (t *TimeDuration) Time() time.Time {
|
func (t *TimeDuration) Time() time.Time {
|
||||||
return t.RelativeTime(now())
|
return t.RelativeTime(now())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Unix calculates the time if needed it and returns the Unix time in seconds.
|
||||||
|
func (t *TimeDuration) Unix() int64 {
|
||||||
|
return t.RelativeTime(now()).Unix()
|
||||||
|
}
|
||||||
|
|
||||||
// RelativeTime returns the embedded time.Time or the base time plus the
|
// RelativeTime returns the embedded time.Time or the base time plus the
|
||||||
// duration if this is not zero.
|
// duration if this is not zero.
|
||||||
func (t *TimeDuration) RelativeTime(base time.Time) time.Time {
|
func (t *TimeDuration) RelativeTime(base time.Time) time.Time {
|
||||||
|
|
|
@ -217,6 +217,38 @@ func TestTimeDuration_Time(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestTimeDuration_Unix(t *testing.T) {
|
||||||
|
nowFn := now
|
||||||
|
defer func() {
|
||||||
|
now = nowFn
|
||||||
|
now()
|
||||||
|
}()
|
||||||
|
tm := time.Unix(1584198566, 535897000).UTC()
|
||||||
|
now = func() time.Time {
|
||||||
|
return tm
|
||||||
|
}
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
timeDuration *TimeDuration
|
||||||
|
want int64
|
||||||
|
}{
|
||||||
|
{"zero", nil, -62135596800},
|
||||||
|
{"zero", &TimeDuration{}, -62135596800},
|
||||||
|
{"timestamp", &TimeDuration{t: tm}, 1584198566},
|
||||||
|
{"local", &TimeDuration{t: tm.Local()}, 1584198566},
|
||||||
|
{"duration", &TimeDuration{d: 1 * time.Hour}, 1584202166},
|
||||||
|
}
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
got := tt.timeDuration.Unix()
|
||||||
|
if !reflect.DeepEqual(got, tt.want) {
|
||||||
|
t.Errorf("TimeDuration.Unix() = %v, want %v", got, tt.want)
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestTimeDuration_String(t *testing.T) {
|
func TestTimeDuration_String(t *testing.T) {
|
||||||
nowFn := now
|
nowFn := now
|
||||||
defer func() {
|
defer func() {
|
||||||
|
|
Loading…
Reference in a new issue