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

package mocks

import (
	mock "github.com/stretchr/testify/mock"

	tiling "go.skia.org/infra/golden/go/tiling"
)

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

// GetTile provides a mock function with given fields:
func (_m *TileSource) GetTile() tiling.ComplexTile {
	ret := _m.Called()

	var r0 tiling.ComplexTile
	if rf, ok := ret.Get(0).(func() tiling.ComplexTile); ok {
		r0 = rf()
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(tiling.ComplexTile)
		}
	}

	return r0
}
