130 lines
3.3 KiB
Go
130 lines
3.3 KiB
Go
![]() |
package httpexpect
|
||
|
|
||
|
import (
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
// DateTime provides methods to inspect attached time.Time value.
|
||
|
type DateTime struct {
|
||
|
chain chain
|
||
|
value time.Time
|
||
|
}
|
||
|
|
||
|
// NewDateTime returns a new DateTime object given a reporter used to report
|
||
|
// failures and time.Time value to be inspected.
|
||
|
//
|
||
|
// reporter should not be nil.
|
||
|
//
|
||
|
// Example:
|
||
|
// dt := NewDateTime(reporter, time.Now())
|
||
|
// dt.Le(time.Now())
|
||
|
//
|
||
|
// time.Sleep(time.Second)
|
||
|
// dt.Lt(time.Now())
|
||
|
func NewDateTime(reporter Reporter, value time.Time) *DateTime {
|
||
|
return &DateTime{makeChain(reporter), value}
|
||
|
}
|
||
|
|
||
|
// Raw returns underlying time.Time value attached to DateTime.
|
||
|
// This is the value originally passed to NewDateTime.
|
||
|
//
|
||
|
// Example:
|
||
|
// dt := NewDateTime(t, timestamp)
|
||
|
// assert.Equal(t, timestamp, dt.Raw())
|
||
|
func (dt *DateTime) Raw() time.Time {
|
||
|
return dt.value
|
||
|
}
|
||
|
|
||
|
// Equal succeeds if DateTime is equal to given value.
|
||
|
//
|
||
|
// Example:
|
||
|
// dt := NewDateTime(t, time.Unix(0, 1))
|
||
|
// dt.Equal(time.Unix(0, 1))
|
||
|
func (dt *DateTime) Equal(value time.Time) *DateTime {
|
||
|
if !dt.value.Equal(value) {
|
||
|
dt.chain.fail("\nexpected datetime equal to:\n %s\n\nbut got:\n %s",
|
||
|
value, dt.value)
|
||
|
}
|
||
|
return dt
|
||
|
}
|
||
|
|
||
|
// NotEqual succeeds if DateTime is not equal to given value.
|
||
|
//
|
||
|
// Example:
|
||
|
// dt := NewDateTime(t, time.Unix(0, 1))
|
||
|
// dt.NotEqual(time.Unix(0, 2))
|
||
|
func (dt *DateTime) NotEqual(value time.Time) *DateTime {
|
||
|
if dt.value.Equal(value) {
|
||
|
dt.chain.fail("\nexpected datetime not equal to:\n %s", value)
|
||
|
}
|
||
|
return dt
|
||
|
}
|
||
|
|
||
|
// Gt succeeds if DateTime is greater than given value.
|
||
|
//
|
||
|
// Example:
|
||
|
// dt := NewDateTime(t, time.Unix(0, 2))
|
||
|
// dt.Gt(time.Unix(0, 1))
|
||
|
func (dt *DateTime) Gt(value time.Time) *DateTime {
|
||
|
if !dt.value.After(value) {
|
||
|
dt.chain.fail("\nexpected datetime > then:\n %s\n\nbut got:\n %s",
|
||
|
value, dt.value)
|
||
|
}
|
||
|
return dt
|
||
|
}
|
||
|
|
||
|
// Ge succeeds if DateTime is greater than or equal to given value.
|
||
|
//
|
||
|
// Example:
|
||
|
// dt := NewDateTime(t, time.Unix(0, 2))
|
||
|
// dt.Ge(time.Unix(0, 1))
|
||
|
func (dt *DateTime) Ge(value time.Time) *DateTime {
|
||
|
if !(dt.value.After(value) || dt.value.Equal(value)) {
|
||
|
dt.chain.fail("\nexpected datetime >= then:\n %s\n\nbut got:\n %s",
|
||
|
value, dt.value)
|
||
|
}
|
||
|
return dt
|
||
|
}
|
||
|
|
||
|
// Lt succeeds if DateTime is lesser than given value.
|
||
|
//
|
||
|
// Example:
|
||
|
// dt := NewDateTime(t, time.Unix(0, 1))
|
||
|
// dt.Lt(time.Unix(0, 2))
|
||
|
func (dt *DateTime) Lt(value time.Time) *DateTime {
|
||
|
if !dt.value.Before(value) {
|
||
|
dt.chain.fail("\nexpected datetime < then:\n %s\n\nbut got:\n %s",
|
||
|
value, dt.value)
|
||
|
}
|
||
|
return dt
|
||
|
}
|
||
|
|
||
|
// Le succeeds if DateTime is lesser than or equal to given value.
|
||
|
//
|
||
|
// Example:
|
||
|
// dt := NewDateTime(t, time.Unix(0, 1))
|
||
|
// dt.Le(time.Unix(0, 2))
|
||
|
func (dt *DateTime) Le(value time.Time) *DateTime {
|
||
|
if !(dt.value.Before(value) || dt.value.Equal(value)) {
|
||
|
dt.chain.fail("\nexpected datetime <= then:\n %s\n\nbut got:\n %s",
|
||
|
value, dt.value)
|
||
|
}
|
||
|
return dt
|
||
|
}
|
||
|
|
||
|
// InRange succeeds if DateTime is in given range [min; max].
|
||
|
//
|
||
|
// Example:
|
||
|
// dt := NewDateTime(t, time.Unix(0, 2))
|
||
|
// dt.InRange(time.Unix(0, 1), time.Unix(0, 3))
|
||
|
// dt.InRange(time.Unix(0, 2), time.Unix(0, 2))
|
||
|
func (dt *DateTime) InRange(min, max time.Time) *DateTime {
|
||
|
if !((dt.value.After(min) || dt.value.Equal(min)) &&
|
||
|
(dt.value.Before(max) || dt.value.Equal(max))) {
|
||
|
dt.chain.fail(
|
||
|
"\nexpected datetime in range:\n min: %s\n max: %s\n\nbut got: %s",
|
||
|
min, max, dt.value)
|
||
|
}
|
||
|
return dt
|
||
|
}
|