Refactored 'IsMethodCallable'

pull/900/head
Ogoyukin 2020-02-14 15:51:15 +09:00 committed by Boyan Soubachov
parent 42aafee8d7
commit 36e077c09a
2 changed files with 31 additions and 8 deletions

View File

@ -545,20 +545,27 @@ func (m *Mock) IsMethodCallable(t TestingT, methodName string, arguments ...inte
if v.Repeatability < v.totalCalls {
continue
}
var argsEqual = true
for i, arg := range v.Arguments {
if !reflect.DeepEqual(arguments[i], arg) {
argsEqual = false
continue
}
}
if argsEqual {
if isArgsEqual(v.Arguments, arguments) {
return true
}
}
return false
}
func isArgsEqual(expected Arguments, args []interface{}) bool {
if len(args) != len(args) {
return false
}
var argsEqual = true
for i, v := range args {
if !reflect.DeepEqual(expected[i], v) {
argsEqual = false
continue
}
}
return argsEqual
}
func (m *Mock) methodWasCalled(methodName string, expected []interface{}) bool {
for _, call := range m.calls() {
if call.Method == methodName {

View File

@ -1171,6 +1171,22 @@ func Test_Mock_IsMethodCallable(t *testing.T) {
assert.False(t, mockedService.IsMethodCallable(t, "Function", arr))
}
func TestIsArgsEqual(t *testing.T) {
var expected = Arguments{5, 3, 4, 6, 7, 2}
var args = make([]interface{}, 6)
for i := 0; i < len(expected); i++ {
args[i] = expected[i]
}
args[2] = expected[1]
assert.False(t, isArgsEqual(expected, args))
var arr = make([]interface{}, 6)
for i := 0; i < len(expected); i++ {
arr[i] = expected[i]
}
assert.True(t, isArgsEqual(expected, arr))
}
func Test_Mock_AssertOptional(t *testing.T) {
// Optional called
var ms1 = new(TestExampleImplementation)