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

package languagetesting

import (
	language "github.com/symflower/eval-dev-quality/language"
	log "github.com/symflower/eval-dev-quality/log"

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

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

// DefaultFileExtension provides a mock function with given fields:
func (_m *MockLanguage) DefaultFileExtension() string {
	ret := _m.Called()

	if len(ret) == 0 {
		panic("no return value specified for DefaultFileExtension")
	}

	var r0 string
	if rf, ok := ret.Get(0).(func() string); ok {
		r0 = rf()
	} else {
		r0 = ret.Get(0).(string)
	}

	return r0
}

// DefaultTestFileSuffix provides a mock function with given fields:
func (_m *MockLanguage) DefaultTestFileSuffix() string {
	ret := _m.Called()

	if len(ret) == 0 {
		panic("no return value specified for DefaultTestFileSuffix")
	}

	var r0 string
	if rf, ok := ret.Get(0).(func() string); ok {
		r0 = rf()
	} else {
		r0 = ret.Get(0).(string)
	}

	return r0
}

// ExecuteTests provides a mock function with given fields: logger, repositoryPath
func (_m *MockLanguage) ExecuteTests(logger *log.Logger, repositoryPath string) (*language.TestResult, []error, error) {
	ret := _m.Called(logger, repositoryPath)

	if len(ret) == 0 {
		panic("no return value specified for ExecuteTests")
	}

	var r0 *language.TestResult
	var r1 []error
	var r2 error
	if rf, ok := ret.Get(0).(func(*log.Logger, string) (*language.TestResult, []error, error)); ok {
		return rf(logger, repositoryPath)
	}
	if rf, ok := ret.Get(0).(func(*log.Logger, string) *language.TestResult); ok {
		r0 = rf(logger, repositoryPath)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*language.TestResult)
		}
	}

	if rf, ok := ret.Get(1).(func(*log.Logger, string) []error); ok {
		r1 = rf(logger, repositoryPath)
	} else {
		if ret.Get(1) != nil {
			r1 = ret.Get(1).([]error)
		}
	}

	if rf, ok := ret.Get(2).(func(*log.Logger, string) error); ok {
		r2 = rf(logger, repositoryPath)
	} else {
		r2 = ret.Error(2)
	}

	return r0, r1, r2
}

// Files provides a mock function with given fields: logger, repositoryPath
func (_m *MockLanguage) Files(logger *log.Logger, repositoryPath string) ([]string, error) {
	ret := _m.Called(logger, repositoryPath)

	if len(ret) == 0 {
		panic("no return value specified for Files")
	}

	var r0 []string
	var r1 error
	if rf, ok := ret.Get(0).(func(*log.Logger, string) ([]string, error)); ok {
		return rf(logger, repositoryPath)
	}
	if rf, ok := ret.Get(0).(func(*log.Logger, string) []string); ok {
		r0 = rf(logger, repositoryPath)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).([]string)
		}
	}

	if rf, ok := ret.Get(1).(func(*log.Logger, string) error); ok {
		r1 = rf(logger, repositoryPath)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// ID provides a mock function with given fields:
func (_m *MockLanguage) ID() string {
	ret := _m.Called()

	if len(ret) == 0 {
		panic("no return value specified for ID")
	}

	var r0 string
	if rf, ok := ret.Get(0).(func() string); ok {
		r0 = rf()
	} else {
		r0 = ret.Get(0).(string)
	}

	return r0
}

// ImportPath provides a mock function with given fields: projectRootPath, filePath
func (_m *MockLanguage) ImportPath(projectRootPath string, filePath string) string {
	ret := _m.Called(projectRootPath, filePath)

	if len(ret) == 0 {
		panic("no return value specified for ImportPath")
	}

	var r0 string
	if rf, ok := ret.Get(0).(func(string, string) string); ok {
		r0 = rf(projectRootPath, filePath)
	} else {
		r0 = ret.Get(0).(string)
	}

	return r0
}

// Mistakes provides a mock function with given fields: logger, repositoryPath
func (_m *MockLanguage) Mistakes(logger *log.Logger, repositoryPath string) ([]string, error) {
	ret := _m.Called(logger, repositoryPath)

	if len(ret) == 0 {
		panic("no return value specified for Mistakes")
	}

	var r0 []string
	var r1 error
	if rf, ok := ret.Get(0).(func(*log.Logger, string) ([]string, error)); ok {
		return rf(logger, repositoryPath)
	}
	if rf, ok := ret.Get(0).(func(*log.Logger, string) []string); ok {
		r0 = rf(logger, repositoryPath)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).([]string)
		}
	}

	if rf, ok := ret.Get(1).(func(*log.Logger, string) error); ok {
		r1 = rf(logger, repositoryPath)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// Name provides a mock function with given fields:
func (_m *MockLanguage) Name() string {
	ret := _m.Called()

	if len(ret) == 0 {
		panic("no return value specified for Name")
	}

	var r0 string
	if rf, ok := ret.Get(0).(func() string); ok {
		r0 = rf()
	} else {
		r0 = ret.Get(0).(string)
	}

	return r0
}

// TestFilePath provides a mock function with given fields: projectRootPath, filePath
func (_m *MockLanguage) TestFilePath(projectRootPath string, filePath string) string {
	ret := _m.Called(projectRootPath, filePath)

	if len(ret) == 0 {
		panic("no return value specified for TestFilePath")
	}

	var r0 string
	if rf, ok := ret.Get(0).(func(string, string) string); ok {
		r0 = rf(projectRootPath, filePath)
	} else {
		r0 = ret.Get(0).(string)
	}

	return r0
}

// TestFramework provides a mock function with given fields:
func (_m *MockLanguage) TestFramework() string {
	ret := _m.Called()

	if len(ret) == 0 {
		panic("no return value specified for TestFramework")
	}

	var r0 string
	if rf, ok := ret.Get(0).(func() string); ok {
		r0 = rf()
	} else {
		r0 = ret.Get(0).(string)
	}

	return r0
}

// NewMockLanguage creates a new instance of MockLanguage. 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 NewMockLanguage(t interface {
	mock.TestingT
	Cleanup(func())
}) *MockLanguage {
	mock := &MockLanguage{}
	mock.Mock.Test(t)

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

	return mock
}
