// TEST MOCKERY BOILERPLATE

// Code generated by mockery; DO NOT EDIT.
// github.com/vektra/mockery
// template: testify

package replace_type

import (
	mock "github.com/stretchr/testify/mock"
	"github.com/vektra/mockery/v3/internal/fixtures/example_project/replace_type/rti/rt1"
	"github.com/vektra/mockery/v3/internal/fixtures/example_project/replace_type/rti/rt2"
)

// NewMockRType creates a new instance of MockRType. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
// The first argument is typically a *testing.T value.
func NewMockRType(t interface {
	mock.TestingT
	Cleanup(func())
}) *MockRType {
	mock := &MockRType{}
	mock.Mock.Test(t)

	t.Cleanup(func() { mock.AssertExpectations(t) })

	return mock
}

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

type MockRType_Expecter struct {
	mock *mock.Mock
}

func (_m *MockRType) EXPECT() *MockRType_Expecter {
	return &MockRType_Expecter{mock: &_m.Mock}
}

// Replace1 provides a mock function for the type MockRType
func (_mock *MockRType) Replace1(f rt1.RType1) {
	_mock.Called(f)
	return
}

// MockRType_Replace1_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Replace1'
type MockRType_Replace1_Call struct {
	*mock.Call
}

// Replace1 is a helper method to define mock.On call
//   - f rt1.RType1
func (_e *MockRType_Expecter) Replace1(f interface{}) *MockRType_Replace1_Call {
	return &MockRType_Replace1_Call{Call: _e.mock.On("Replace1", f)}
}

func (_c *MockRType_Replace1_Call) Run(run func(f rt1.RType1)) *MockRType_Replace1_Call {
	_c.Call.Run(func(args mock.Arguments) {
		var arg0 rt1.RType1
		if args[0] != nil {
			arg0 = args[0].(rt1.RType1)
		}
		run(
			arg0,
		)
	})
	return _c
}

func (_c *MockRType_Replace1_Call) Return() *MockRType_Replace1_Call {
	_c.Call.Return()
	return _c
}

func (_c *MockRType_Replace1_Call) RunAndReturn(run func(f rt1.RType1)) *MockRType_Replace1_Call {
	_c.Run(run)
	return _c
}

// Replace2 provides a mock function for the type MockRType
func (_mock *MockRType) Replace2(f rt2.RType2) {
	_mock.Called(f)
	return
}

// MockRType_Replace2_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Replace2'
type MockRType_Replace2_Call struct {
	*mock.Call
}

// Replace2 is a helper method to define mock.On call
//   - f rt2.RType2
func (_e *MockRType_Expecter) Replace2(f interface{}) *MockRType_Replace2_Call {
	return &MockRType_Replace2_Call{Call: _e.mock.On("Replace2", f)}
}

func (_c *MockRType_Replace2_Call) Run(run func(f rt2.RType2)) *MockRType_Replace2_Call {
	_c.Call.Run(func(args mock.Arguments) {
		var arg0 rt2.RType2
		if args[0] != nil {
			arg0 = args[0].(rt2.RType2)
		}
		run(
			arg0,
		)
	})
	return _c
}

func (_c *MockRType_Replace2_Call) Return() *MockRType_Replace2_Call {
	_c.Call.Return()
	return _c
}

func (_c *MockRType_Replace2_Call) RunAndReturn(run func(f rt2.RType2)) *MockRType_Replace2_Call {
	_c.Run(run)
	return _c
}

// NewRTypeReplaced1 creates a new instance of RTypeReplaced1. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
// The first argument is typically a *testing.T value.
func NewRTypeReplaced1(t interface {
	mock.TestingT
	Cleanup(func())
}) *RTypeReplaced1 {
	mock := &RTypeReplaced1{}
	mock.Mock.Test(t)

	t.Cleanup(func() { mock.AssertExpectations(t) })

	return mock
}

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

type RTypeReplaced1_Expecter struct {
	mock *mock.Mock
}

func (_m *RTypeReplaced1) EXPECT() *RTypeReplaced1_Expecter {
	return &RTypeReplaced1_Expecter{mock: &_m.Mock}
}

// Replace1 provides a mock function for the type RTypeReplaced1
func (_mock *RTypeReplaced1) Replace1(f rt2.RType2) {
	_mock.Called(f)
	return
}

// RTypeReplaced1_Replace1_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Replace1'
type RTypeReplaced1_Replace1_Call struct {
	*mock.Call
}

// Replace1 is a helper method to define mock.On call
//   - f rt2.RType2
func (_e *RTypeReplaced1_Expecter) Replace1(f interface{}) *RTypeReplaced1_Replace1_Call {
	return &RTypeReplaced1_Replace1_Call{Call: _e.mock.On("Replace1", f)}
}

func (_c *RTypeReplaced1_Replace1_Call) Run(run func(f rt2.RType2)) *RTypeReplaced1_Replace1_Call {
	_c.Call.Run(func(args mock.Arguments) {
		var arg0 rt2.RType2
		if args[0] != nil {
			arg0 = args[0].(rt2.RType2)
		}
		run(
			arg0,
		)
	})
	return _c
}

func (_c *RTypeReplaced1_Replace1_Call) Return() *RTypeReplaced1_Replace1_Call {
	_c.Call.Return()
	return _c
}

func (_c *RTypeReplaced1_Replace1_Call) RunAndReturn(run func(f rt2.RType2)) *RTypeReplaced1_Replace1_Call {
	_c.Run(run)
	return _c
}

// Replace2 provides a mock function for the type RTypeReplaced1
func (_mock *RTypeReplaced1) Replace2(f rt2.RType2) {
	_mock.Called(f)
	return
}

// RTypeReplaced1_Replace2_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Replace2'
type RTypeReplaced1_Replace2_Call struct {
	*mock.Call
}

// Replace2 is a helper method to define mock.On call
//   - f rt2.RType2
func (_e *RTypeReplaced1_Expecter) Replace2(f interface{}) *RTypeReplaced1_Replace2_Call {
	return &RTypeReplaced1_Replace2_Call{Call: _e.mock.On("Replace2", f)}
}

func (_c *RTypeReplaced1_Replace2_Call) Run(run func(f rt2.RType2)) *RTypeReplaced1_Replace2_Call {
	_c.Call.Run(func(args mock.Arguments) {
		var arg0 rt2.RType2
		if args[0] != nil {
			arg0 = args[0].(rt2.RType2)
		}
		run(
			arg0,
		)
	})
	return _c
}

func (_c *RTypeReplaced1_Replace2_Call) Return() *RTypeReplaced1_Replace2_Call {
	_c.Call.Return()
	return _c
}

func (_c *RTypeReplaced1_Replace2_Call) RunAndReturn(run func(f rt2.RType2)) *RTypeReplaced1_Replace2_Call {
	_c.Run(run)
	return _c
}
