mirror of https://github.com/stretchr/testify.git
Merge branch 'master' into allow-error-string-from-custom-matcher
commit
1032e8295b
|
@ -332,6 +332,8 @@ Please feel free to submit issues, fork the repository and send pull requests!
|
||||||
|
|
||||||
When submitting an issue, we ask that you please include a complete test function that demonstrates the issue. Extra credit for those using Testify to write the test code that demonstrates it.
|
When submitting an issue, we ask that you please include a complete test function that demonstrates the issue. Extra credit for those using Testify to write the test code that demonstrates it.
|
||||||
|
|
||||||
|
Code generation is used. Look for `CODE GENERATED AUTOMATICALLY` at the top of some files. Run `go generate ./...` to update generated files.
|
||||||
|
|
||||||
------
|
------
|
||||||
|
|
||||||
License
|
License
|
||||||
|
|
|
@ -113,6 +113,17 @@ func Errorf(t TestingT, err error, msg string, args ...interface{}) bool {
|
||||||
return Error(t, err, append([]interface{}{msg}, args...)...)
|
return Error(t, err, append([]interface{}{msg}, args...)...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Eventuallyf asserts that given condition will be met in waitFor time,
|
||||||
|
// periodically checking target function each tick.
|
||||||
|
//
|
||||||
|
// assert.Eventuallyf(t, func() bool { return true; }, time.Second, 10*time.Millisecond, "error message %s", "formatted")
|
||||||
|
func Eventuallyf(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) bool {
|
||||||
|
if h, ok := t.(tHelper); ok {
|
||||||
|
h.Helper()
|
||||||
|
}
|
||||||
|
return Eventually(t, condition, waitFor, tick, append([]interface{}{msg}, args...)...)
|
||||||
|
}
|
||||||
|
|
||||||
// Exactlyf asserts that two objects are equal in value and type.
|
// Exactlyf asserts that two objects are equal in value and type.
|
||||||
//
|
//
|
||||||
// assert.Exactlyf(t, int32(123, "error message %s", "formatted"), int64(123))
|
// assert.Exactlyf(t, int32(123, "error message %s", "formatted"), int64(123))
|
||||||
|
@ -169,7 +180,7 @@ func Greaterf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...in
|
||||||
return Greater(t, e1, e2, append([]interface{}{msg}, args...)...)
|
return Greater(t, e1, e2, append([]interface{}{msg}, args...)...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GreaterOrEqualf asserts that the first element in greater or equal than the second
|
// GreaterOrEqualf asserts that the first element is greater than or equal to the second
|
||||||
//
|
//
|
||||||
// assert.GreaterOrEqualf(t, 2, 1, "error message %s", "formatted")
|
// assert.GreaterOrEqualf(t, 2, 1, "error message %s", "formatted")
|
||||||
// assert.GreaterOrEqualf(t, 2, 2, "error message %s", "formatted")
|
// assert.GreaterOrEqualf(t, 2, 2, "error message %s", "formatted")
|
||||||
|
@ -325,7 +336,7 @@ func Lenf(t TestingT, object interface{}, length int, msg string, args ...interf
|
||||||
return Len(t, object, length, append([]interface{}{msg}, args...)...)
|
return Len(t, object, length, append([]interface{}{msg}, args...)...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Lessf asserts that the first element in less than the second
|
// Lessf asserts that the first element is less than the second
|
||||||
//
|
//
|
||||||
// assert.Lessf(t, 1, 2, "error message %s", "formatted")
|
// assert.Lessf(t, 1, 2, "error message %s", "formatted")
|
||||||
// assert.Lessf(t, float64(1, "error message %s", "formatted"), float64(2))
|
// assert.Lessf(t, float64(1, "error message %s", "formatted"), float64(2))
|
||||||
|
@ -337,7 +348,7 @@ func Lessf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...inter
|
||||||
return Less(t, e1, e2, append([]interface{}{msg}, args...)...)
|
return Less(t, e1, e2, append([]interface{}{msg}, args...)...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// LessOrEqualf asserts that the first element in greater or equal than the second
|
// LessOrEqualf asserts that the first element is less than or equal to the second
|
||||||
//
|
//
|
||||||
// assert.LessOrEqualf(t, 1, 2, "error message %s", "formatted")
|
// assert.LessOrEqualf(t, 1, 2, "error message %s", "formatted")
|
||||||
// assert.LessOrEqualf(t, 2, 2, "error message %s", "formatted")
|
// assert.LessOrEqualf(t, 2, 2, "error message %s", "formatted")
|
||||||
|
|
|
@ -215,6 +215,28 @@ func (a *Assertions) Errorf(err error, msg string, args ...interface{}) bool {
|
||||||
return Errorf(a.t, err, msg, args...)
|
return Errorf(a.t, err, msg, args...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Eventually asserts that given condition will be met in waitFor time,
|
||||||
|
// periodically checking target function each tick.
|
||||||
|
//
|
||||||
|
// a.Eventually(func() bool { return true; }, time.Second, 10*time.Millisecond)
|
||||||
|
func (a *Assertions) Eventually(condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) bool {
|
||||||
|
if h, ok := a.t.(tHelper); ok {
|
||||||
|
h.Helper()
|
||||||
|
}
|
||||||
|
return Eventually(a.t, condition, waitFor, tick, msgAndArgs...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Eventuallyf asserts that given condition will be met in waitFor time,
|
||||||
|
// periodically checking target function each tick.
|
||||||
|
//
|
||||||
|
// a.Eventuallyf(func() bool { return true; }, time.Second, 10*time.Millisecond, "error message %s", "formatted")
|
||||||
|
func (a *Assertions) Eventuallyf(condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) bool {
|
||||||
|
if h, ok := a.t.(tHelper); ok {
|
||||||
|
h.Helper()
|
||||||
|
}
|
||||||
|
return Eventuallyf(a.t, condition, waitFor, tick, msg, args...)
|
||||||
|
}
|
||||||
|
|
||||||
// Exactly asserts that two objects are equal in value and type.
|
// Exactly asserts that two objects are equal in value and type.
|
||||||
//
|
//
|
||||||
// a.Exactly(int32(123), int64(123))
|
// a.Exactly(int32(123), int64(123))
|
||||||
|
@ -315,7 +337,7 @@ func (a *Assertions) Greater(e1 interface{}, e2 interface{}, msgAndArgs ...inter
|
||||||
return Greater(a.t, e1, e2, msgAndArgs...)
|
return Greater(a.t, e1, e2, msgAndArgs...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GreaterOrEqual asserts that the first element in greater or equal than the second
|
// GreaterOrEqual asserts that the first element is greater than or equal to the second
|
||||||
//
|
//
|
||||||
// a.GreaterOrEqual(2, 1)
|
// a.GreaterOrEqual(2, 1)
|
||||||
// a.GreaterOrEqual(2, 2)
|
// a.GreaterOrEqual(2, 2)
|
||||||
|
@ -328,7 +350,7 @@ func (a *Assertions) GreaterOrEqual(e1 interface{}, e2 interface{}, msgAndArgs .
|
||||||
return GreaterOrEqual(a.t, e1, e2, msgAndArgs...)
|
return GreaterOrEqual(a.t, e1, e2, msgAndArgs...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GreaterOrEqualf asserts that the first element in greater or equal than the second
|
// GreaterOrEqualf asserts that the first element is greater than or equal to the second
|
||||||
//
|
//
|
||||||
// a.GreaterOrEqualf(2, 1, "error message %s", "formatted")
|
// a.GreaterOrEqualf(2, 1, "error message %s", "formatted")
|
||||||
// a.GreaterOrEqualf(2, 2, "error message %s", "formatted")
|
// a.GreaterOrEqualf(2, 2, "error message %s", "formatted")
|
||||||
|
@ -639,7 +661,7 @@ func (a *Assertions) Lenf(object interface{}, length int, msg string, args ...in
|
||||||
return Lenf(a.t, object, length, msg, args...)
|
return Lenf(a.t, object, length, msg, args...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Less asserts that the first element in less than the second
|
// Less asserts that the first element is less than the second
|
||||||
//
|
//
|
||||||
// a.Less(1, 2)
|
// a.Less(1, 2)
|
||||||
// a.Less(float64(1), float64(2))
|
// a.Less(float64(1), float64(2))
|
||||||
|
@ -651,7 +673,7 @@ func (a *Assertions) Less(e1 interface{}, e2 interface{}, msgAndArgs ...interfac
|
||||||
return Less(a.t, e1, e2, msgAndArgs...)
|
return Less(a.t, e1, e2, msgAndArgs...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// LessOrEqual asserts that the first element in greater or equal than the second
|
// LessOrEqual asserts that the first element is less than or equal to the second
|
||||||
//
|
//
|
||||||
// a.LessOrEqual(1, 2)
|
// a.LessOrEqual(1, 2)
|
||||||
// a.LessOrEqual(2, 2)
|
// a.LessOrEqual(2, 2)
|
||||||
|
@ -664,7 +686,7 @@ func (a *Assertions) LessOrEqual(e1 interface{}, e2 interface{}, msgAndArgs ...i
|
||||||
return LessOrEqual(a.t, e1, e2, msgAndArgs...)
|
return LessOrEqual(a.t, e1, e2, msgAndArgs...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// LessOrEqualf asserts that the first element in greater or equal than the second
|
// LessOrEqualf asserts that the first element is less than or equal to the second
|
||||||
//
|
//
|
||||||
// a.LessOrEqualf(1, 2, "error message %s", "formatted")
|
// a.LessOrEqualf(1, 2, "error message %s", "formatted")
|
||||||
// a.LessOrEqualf(2, 2, "error message %s", "formatted")
|
// a.LessOrEqualf(2, 2, "error message %s", "formatted")
|
||||||
|
@ -677,7 +699,7 @@ func (a *Assertions) LessOrEqualf(e1 interface{}, e2 interface{}, msg string, ar
|
||||||
return LessOrEqualf(a.t, e1, e2, msg, args...)
|
return LessOrEqualf(a.t, e1, e2, msg, args...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Lessf asserts that the first element in less than the second
|
// Lessf asserts that the first element is less than the second
|
||||||
//
|
//
|
||||||
// a.Lessf(1, 2, "error message %s", "formatted")
|
// a.Lessf(1, 2, "error message %s", "formatted")
|
||||||
// a.Lessf(float64(1, "error message %s", "formatted"), float64(2))
|
// a.Lessf(float64(1, "error message %s", "formatted"), float64(2))
|
||||||
|
|
|
@ -216,13 +216,13 @@ func Greater(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface
|
||||||
}
|
}
|
||||||
|
|
||||||
if res != -1 {
|
if res != -1 {
|
||||||
return Fail(t, fmt.Sprintf("\"%s\" is not greater than \"%s\"", e1, e2), msgAndArgs...)
|
return Fail(t, fmt.Sprintf("\"%v\" is not greater than \"%v\"", e1, e2), msgAndArgs...)
|
||||||
}
|
}
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
// GreaterOrEqual asserts that the first element in greater or equal than the second
|
// GreaterOrEqual asserts that the first element is greater than or equal to the second
|
||||||
//
|
//
|
||||||
// assert.GreaterOrEqual(t, 2, 1)
|
// assert.GreaterOrEqual(t, 2, 1)
|
||||||
// assert.GreaterOrEqual(t, 2, 2)
|
// assert.GreaterOrEqual(t, 2, 2)
|
||||||
|
@ -245,13 +245,13 @@ func GreaterOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...in
|
||||||
}
|
}
|
||||||
|
|
||||||
if res != -1 && res != 0 {
|
if res != -1 && res != 0 {
|
||||||
return Fail(t, fmt.Sprintf("\"%s\" is not greater or equal than \"%s\"", e1, e2), msgAndArgs...)
|
return Fail(t, fmt.Sprintf("\"%v\" is not greater than or equal to \"%v\"", e1, e2), msgAndArgs...)
|
||||||
}
|
}
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
// Less asserts that the first element in less than the second
|
// Less asserts that the first element is less than the second
|
||||||
//
|
//
|
||||||
// assert.Less(t, 1, 2)
|
// assert.Less(t, 1, 2)
|
||||||
// assert.Less(t, float64(1), float64(2))
|
// assert.Less(t, float64(1), float64(2))
|
||||||
|
@ -273,13 +273,13 @@ func Less(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{})
|
||||||
}
|
}
|
||||||
|
|
||||||
if res != 1 {
|
if res != 1 {
|
||||||
return Fail(t, fmt.Sprintf("\"%s\" is not less than \"%s\"", e1, e2), msgAndArgs...)
|
return Fail(t, fmt.Sprintf("\"%v\" is not less than \"%v\"", e1, e2), msgAndArgs...)
|
||||||
}
|
}
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
// LessOrEqual asserts that the first element in greater or equal than the second
|
// LessOrEqual asserts that the first element is less than or equal to the second
|
||||||
//
|
//
|
||||||
// assert.LessOrEqual(t, 1, 2)
|
// assert.LessOrEqual(t, 1, 2)
|
||||||
// assert.LessOrEqual(t, 2, 2)
|
// assert.LessOrEqual(t, 2, 2)
|
||||||
|
@ -302,7 +302,7 @@ func LessOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...inter
|
||||||
}
|
}
|
||||||
|
|
||||||
if res != 1 && res != 0 {
|
if res != 1 && res != 0 {
|
||||||
return Fail(t, fmt.Sprintf("\"%s\" is not less or equal than \"%s\"", e1, e2), msgAndArgs...)
|
return Fail(t, fmt.Sprintf("\"%v\" is not less than or equal to \"%v\"", e1, e2), msgAndArgs...)
|
||||||
}
|
}
|
||||||
|
|
||||||
return true
|
return true
|
||||||
|
|
|
@ -510,14 +510,14 @@ func isEmpty(object interface{}) bool {
|
||||||
// collection types are empty when they have no element
|
// collection types are empty when they have no element
|
||||||
case reflect.Array, reflect.Chan, reflect.Map, reflect.Slice:
|
case reflect.Array, reflect.Chan, reflect.Map, reflect.Slice:
|
||||||
return objValue.Len() == 0
|
return objValue.Len() == 0
|
||||||
// pointers are empty if nil or if the value they point to is empty
|
// pointers are empty if nil or if the value they point to is empty
|
||||||
case reflect.Ptr:
|
case reflect.Ptr:
|
||||||
if objValue.IsNil() {
|
if objValue.IsNil() {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
deref := objValue.Elem().Interface()
|
deref := objValue.Elem().Interface()
|
||||||
return isEmpty(deref)
|
return isEmpty(deref)
|
||||||
// for all other types, compare against the zero value
|
// for all other types, compare against the zero value
|
||||||
default:
|
default:
|
||||||
zero := reflect.Zero(objValue.Type())
|
zero := reflect.Zero(objValue.Type())
|
||||||
return reflect.DeepEqual(object, zero.Interface())
|
return reflect.DeepEqual(object, zero.Interface())
|
||||||
|
@ -1446,3 +1446,34 @@ var spewConfig = spew.ConfigState{
|
||||||
type tHelper interface {
|
type tHelper interface {
|
||||||
Helper()
|
Helper()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Eventually asserts that given condition will be met in waitFor time,
|
||||||
|
// periodically checking target function each tick.
|
||||||
|
//
|
||||||
|
// assert.Eventually(t, func() bool { return true; }, time.Second, 10*time.Millisecond)
|
||||||
|
func Eventually(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) bool {
|
||||||
|
if h, ok := t.(tHelper); ok {
|
||||||
|
h.Helper()
|
||||||
|
}
|
||||||
|
|
||||||
|
timer := time.NewTimer(waitFor)
|
||||||
|
ticker := time.NewTicker(tick)
|
||||||
|
checkPassed := make(chan bool)
|
||||||
|
defer timer.Stop()
|
||||||
|
defer ticker.Stop()
|
||||||
|
defer close(checkPassed)
|
||||||
|
for {
|
||||||
|
select {
|
||||||
|
case <-timer.C:
|
||||||
|
return Fail(t, "Condition never satisfied", msgAndArgs...)
|
||||||
|
case result := <-checkPassed:
|
||||||
|
if result {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
case <-ticker.C:
|
||||||
|
go func() {
|
||||||
|
checkPassed <- condition()
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1824,3 +1824,25 @@ func TestErrorAssertionFunc(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestEventuallyFalse(t *testing.T) {
|
||||||
|
mockT := new(testing.T)
|
||||||
|
|
||||||
|
condition := func() bool {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
False(t, Eventually(mockT, condition, 100*time.Millisecond, 20*time.Millisecond))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestEventuallyTrue(t *testing.T) {
|
||||||
|
state := 0
|
||||||
|
condition := func() bool {
|
||||||
|
defer func() {
|
||||||
|
state = state + 1
|
||||||
|
}()
|
||||||
|
return state == 2
|
||||||
|
}
|
||||||
|
|
||||||
|
True(t, Eventually(t, condition, 100*time.Millisecond, 20*time.Millisecond))
|
||||||
|
}
|
||||||
|
|
|
@ -270,6 +270,34 @@ func Errorf(t TestingT, err error, msg string, args ...interface{}) {
|
||||||
t.FailNow()
|
t.FailNow()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Eventually asserts that given condition will be met in waitFor time,
|
||||||
|
// periodically checking target function each tick.
|
||||||
|
//
|
||||||
|
// assert.Eventually(t, func() bool { return true; }, time.Second, 10*time.Millisecond)
|
||||||
|
func Eventually(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) {
|
||||||
|
if assert.Eventually(t, condition, waitFor, tick, msgAndArgs...) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if h, ok := t.(tHelper); ok {
|
||||||
|
h.Helper()
|
||||||
|
}
|
||||||
|
t.FailNow()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Eventuallyf asserts that given condition will be met in waitFor time,
|
||||||
|
// periodically checking target function each tick.
|
||||||
|
//
|
||||||
|
// assert.Eventuallyf(t, func() bool { return true; }, time.Second, 10*time.Millisecond, "error message %s", "formatted")
|
||||||
|
func Eventuallyf(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) {
|
||||||
|
if assert.Eventuallyf(t, condition, waitFor, tick, msg, args...) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if h, ok := t.(tHelper); ok {
|
||||||
|
h.Helper()
|
||||||
|
}
|
||||||
|
t.FailNow()
|
||||||
|
}
|
||||||
|
|
||||||
// Exactly asserts that two objects are equal in value and type.
|
// Exactly asserts that two objects are equal in value and type.
|
||||||
//
|
//
|
||||||
// assert.Exactly(t, int32(123), int64(123))
|
// assert.Exactly(t, int32(123), int64(123))
|
||||||
|
@ -403,7 +431,7 @@ func Greater(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface
|
||||||
t.FailNow()
|
t.FailNow()
|
||||||
}
|
}
|
||||||
|
|
||||||
// GreaterOrEqual asserts that the first element in greater or equal than the second
|
// GreaterOrEqual asserts that the first element is greater than or equal to the second
|
||||||
//
|
//
|
||||||
// assert.GreaterOrEqual(t, 2, 1)
|
// assert.GreaterOrEqual(t, 2, 1)
|
||||||
// assert.GreaterOrEqual(t, 2, 2)
|
// assert.GreaterOrEqual(t, 2, 2)
|
||||||
|
@ -419,7 +447,7 @@ func GreaterOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...in
|
||||||
t.FailNow()
|
t.FailNow()
|
||||||
}
|
}
|
||||||
|
|
||||||
// GreaterOrEqualf asserts that the first element in greater or equal than the second
|
// GreaterOrEqualf asserts that the first element is greater than or equal to the second
|
||||||
//
|
//
|
||||||
// assert.GreaterOrEqualf(t, 2, 1, "error message %s", "formatted")
|
// assert.GreaterOrEqualf(t, 2, 1, "error message %s", "formatted")
|
||||||
// assert.GreaterOrEqualf(t, 2, 2, "error message %s", "formatted")
|
// assert.GreaterOrEqualf(t, 2, 2, "error message %s", "formatted")
|
||||||
|
@ -820,7 +848,7 @@ func Lenf(t TestingT, object interface{}, length int, msg string, args ...interf
|
||||||
t.FailNow()
|
t.FailNow()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Less asserts that the first element in less than the second
|
// Less asserts that the first element is less than the second
|
||||||
//
|
//
|
||||||
// assert.Less(t, 1, 2)
|
// assert.Less(t, 1, 2)
|
||||||
// assert.Less(t, float64(1), float64(2))
|
// assert.Less(t, float64(1), float64(2))
|
||||||
|
@ -835,7 +863,7 @@ func Less(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{})
|
||||||
t.FailNow()
|
t.FailNow()
|
||||||
}
|
}
|
||||||
|
|
||||||
// LessOrEqual asserts that the first element in greater or equal than the second
|
// LessOrEqual asserts that the first element is less than or equal to the second
|
||||||
//
|
//
|
||||||
// assert.LessOrEqual(t, 1, 2)
|
// assert.LessOrEqual(t, 1, 2)
|
||||||
// assert.LessOrEqual(t, 2, 2)
|
// assert.LessOrEqual(t, 2, 2)
|
||||||
|
@ -851,7 +879,7 @@ func LessOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...inter
|
||||||
t.FailNow()
|
t.FailNow()
|
||||||
}
|
}
|
||||||
|
|
||||||
// LessOrEqualf asserts that the first element in greater or equal than the second
|
// LessOrEqualf asserts that the first element is less than or equal to the second
|
||||||
//
|
//
|
||||||
// assert.LessOrEqualf(t, 1, 2, "error message %s", "formatted")
|
// assert.LessOrEqualf(t, 1, 2, "error message %s", "formatted")
|
||||||
// assert.LessOrEqualf(t, 2, 2, "error message %s", "formatted")
|
// assert.LessOrEqualf(t, 2, 2, "error message %s", "formatted")
|
||||||
|
@ -867,7 +895,7 @@ func LessOrEqualf(t TestingT, e1 interface{}, e2 interface{}, msg string, args .
|
||||||
t.FailNow()
|
t.FailNow()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Lessf asserts that the first element in less than the second
|
// Lessf asserts that the first element is less than the second
|
||||||
//
|
//
|
||||||
// assert.Lessf(t, 1, 2, "error message %s", "formatted")
|
// assert.Lessf(t, 1, 2, "error message %s", "formatted")
|
||||||
// assert.Lessf(t, float64(1, "error message %s", "formatted"), float64(2))
|
// assert.Lessf(t, float64(1, "error message %s", "formatted"), float64(2))
|
||||||
|
|
|
@ -216,6 +216,28 @@ func (a *Assertions) Errorf(err error, msg string, args ...interface{}) {
|
||||||
Errorf(a.t, err, msg, args...)
|
Errorf(a.t, err, msg, args...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Eventually asserts that given condition will be met in waitFor time,
|
||||||
|
// periodically checking target function each tick.
|
||||||
|
//
|
||||||
|
// a.Eventually(func() bool { return true; }, time.Second, 10*time.Millisecond)
|
||||||
|
func (a *Assertions) Eventually(condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) {
|
||||||
|
if h, ok := a.t.(tHelper); ok {
|
||||||
|
h.Helper()
|
||||||
|
}
|
||||||
|
Eventually(a.t, condition, waitFor, tick, msgAndArgs...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Eventuallyf asserts that given condition will be met in waitFor time,
|
||||||
|
// periodically checking target function each tick.
|
||||||
|
//
|
||||||
|
// a.Eventuallyf(func() bool { return true; }, time.Second, 10*time.Millisecond, "error message %s", "formatted")
|
||||||
|
func (a *Assertions) Eventuallyf(condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) {
|
||||||
|
if h, ok := a.t.(tHelper); ok {
|
||||||
|
h.Helper()
|
||||||
|
}
|
||||||
|
Eventuallyf(a.t, condition, waitFor, tick, msg, args...)
|
||||||
|
}
|
||||||
|
|
||||||
// Exactly asserts that two objects are equal in value and type.
|
// Exactly asserts that two objects are equal in value and type.
|
||||||
//
|
//
|
||||||
// a.Exactly(int32(123), int64(123))
|
// a.Exactly(int32(123), int64(123))
|
||||||
|
@ -316,7 +338,7 @@ func (a *Assertions) Greater(e1 interface{}, e2 interface{}, msgAndArgs ...inter
|
||||||
Greater(a.t, e1, e2, msgAndArgs...)
|
Greater(a.t, e1, e2, msgAndArgs...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GreaterOrEqual asserts that the first element in greater or equal than the second
|
// GreaterOrEqual asserts that the first element is greater than or equal to the second
|
||||||
//
|
//
|
||||||
// a.GreaterOrEqual(2, 1)
|
// a.GreaterOrEqual(2, 1)
|
||||||
// a.GreaterOrEqual(2, 2)
|
// a.GreaterOrEqual(2, 2)
|
||||||
|
@ -329,7 +351,7 @@ func (a *Assertions) GreaterOrEqual(e1 interface{}, e2 interface{}, msgAndArgs .
|
||||||
GreaterOrEqual(a.t, e1, e2, msgAndArgs...)
|
GreaterOrEqual(a.t, e1, e2, msgAndArgs...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GreaterOrEqualf asserts that the first element in greater or equal than the second
|
// GreaterOrEqualf asserts that the first element is greater than or equal to the second
|
||||||
//
|
//
|
||||||
// a.GreaterOrEqualf(2, 1, "error message %s", "formatted")
|
// a.GreaterOrEqualf(2, 1, "error message %s", "formatted")
|
||||||
// a.GreaterOrEqualf(2, 2, "error message %s", "formatted")
|
// a.GreaterOrEqualf(2, 2, "error message %s", "formatted")
|
||||||
|
@ -640,7 +662,7 @@ func (a *Assertions) Lenf(object interface{}, length int, msg string, args ...in
|
||||||
Lenf(a.t, object, length, msg, args...)
|
Lenf(a.t, object, length, msg, args...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Less asserts that the first element in less than the second
|
// Less asserts that the first element is less than the second
|
||||||
//
|
//
|
||||||
// a.Less(1, 2)
|
// a.Less(1, 2)
|
||||||
// a.Less(float64(1), float64(2))
|
// a.Less(float64(1), float64(2))
|
||||||
|
@ -652,7 +674,7 @@ func (a *Assertions) Less(e1 interface{}, e2 interface{}, msgAndArgs ...interfac
|
||||||
Less(a.t, e1, e2, msgAndArgs...)
|
Less(a.t, e1, e2, msgAndArgs...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// LessOrEqual asserts that the first element in greater or equal than the second
|
// LessOrEqual asserts that the first element is less than or equal to the second
|
||||||
//
|
//
|
||||||
// a.LessOrEqual(1, 2)
|
// a.LessOrEqual(1, 2)
|
||||||
// a.LessOrEqual(2, 2)
|
// a.LessOrEqual(2, 2)
|
||||||
|
@ -665,7 +687,7 @@ func (a *Assertions) LessOrEqual(e1 interface{}, e2 interface{}, msgAndArgs ...i
|
||||||
LessOrEqual(a.t, e1, e2, msgAndArgs...)
|
LessOrEqual(a.t, e1, e2, msgAndArgs...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// LessOrEqualf asserts that the first element in greater or equal than the second
|
// LessOrEqualf asserts that the first element is less than or equal to the second
|
||||||
//
|
//
|
||||||
// a.LessOrEqualf(1, 2, "error message %s", "formatted")
|
// a.LessOrEqualf(1, 2, "error message %s", "formatted")
|
||||||
// a.LessOrEqualf(2, 2, "error message %s", "formatted")
|
// a.LessOrEqualf(2, 2, "error message %s", "formatted")
|
||||||
|
@ -678,7 +700,7 @@ func (a *Assertions) LessOrEqualf(e1 interface{}, e2 interface{}, msg string, ar
|
||||||
LessOrEqualf(a.t, e1, e2, msg, args...)
|
LessOrEqualf(a.t, e1, e2, msg, args...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Lessf asserts that the first element in less than the second
|
// Lessf asserts that the first element is less than the second
|
||||||
//
|
//
|
||||||
// a.Lessf(1, 2, "error message %s", "formatted")
|
// a.Lessf(1, 2, "error message %s", "formatted")
|
||||||
// a.Lessf(float64(1, "error message %s", "formatted"), float64(2))
|
// a.Lessf(float64(1, "error message %s", "formatted"), float64(2))
|
||||||
|
|
Loading…
Reference in New Issue