// Code generated by mockery v2.4.0. DO NOT EDIT.

package mocks

import (
	image "image"

	mock "github.com/stretchr/testify/mock"
)

// Matcher is an autogenerated mock type for the Matcher type
type Matcher struct {
	mock.Mock
}

// Match provides a mock function with given fields: expected, actual
func (_m *Matcher) Match(expected image.Image, actual image.Image) bool {
	ret := _m.Called(expected, actual)

	var r0 bool
	if rf, ok := ret.Get(0).(func(image.Image, image.Image) bool); ok {
		r0 = rf(expected, actual)
	} else {
		r0 = ret.Get(0).(bool)
	}

	return r0
}
