// Code generated by moq; DO NOT EDIT.
// github.com/matryer/moq

package fake

import (
	"context"
	metricsapi "github.com/keptn/lifecycle-toolkit/metrics-operator/api/v1"
	"sync"
)

// IProvidersPoolMock is a mock implementation of analysis.IProvidersPool.
//
//	func TestSomethingThatUsesIProvidersPool(t *testing.T) {
//
//		// make and configure a mocked analysis.IProvidersPool
//		mockedIProvidersPool := &IProvidersPoolMock{
//			DispatchToProvidersFunc: func(ctx context.Context, id int)  {
//				panic("mock out the DispatchToProviders method")
//			},
//			GetResultFunc: func() metricsapi.ProviderResult {
//				panic("mock out the GetResult method")
//			},
//			StartProvidersFunc: func(ctx context.Context, numJobs int)  {
//				panic("mock out the StartProviders method")
//			},
//			StopProvidersFunc: func()  {
//				panic("mock out the StopProviders method")
//			},
//		}
//
//		// use mockedIProvidersPool in code that requires analysis.IProvidersPool
//		// and then make assertions.
//
//	}
type IProvidersPoolMock struct {
	// DispatchToProvidersFunc mocks the DispatchToProviders method.
	DispatchToProvidersFunc func(ctx context.Context, id int)

	// GetResultFunc mocks the GetResult method.
	GetResultFunc func() metricsapi.ProviderResult

	// StartProvidersFunc mocks the StartProviders method.
	StartProvidersFunc func(ctx context.Context, numJobs int)

	// StopProvidersFunc mocks the StopProviders method.
	StopProvidersFunc func()

	// calls tracks calls to the methods.
	calls struct {
		// DispatchToProviders holds details about calls to the DispatchToProviders method.
		DispatchToProviders []struct {
			// Ctx is the ctx argument value.
			Ctx context.Context
			// ID is the id argument value.
			ID int
		}
		// GetResult holds details about calls to the GetResult method.
		GetResult []struct {
		}
		// StartProviders holds details about calls to the StartProviders method.
		StartProviders []struct {
			// Ctx is the ctx argument value.
			Ctx context.Context
			// NumJobs is the numJobs argument value.
			NumJobs int
		}
		// StopProviders holds details about calls to the StopProviders method.
		StopProviders []struct {
		}
	}
	lockDispatchToProviders sync.RWMutex
	lockGetResult           sync.RWMutex
	lockStartProviders      sync.RWMutex
	lockStopProviders       sync.RWMutex
}

// DispatchToProviders calls DispatchToProvidersFunc.
func (mock *IProvidersPoolMock) DispatchToProviders(ctx context.Context, id int) {
	if mock.DispatchToProvidersFunc == nil {
		panic("IProvidersPoolMock.DispatchToProvidersFunc: method is nil but IProvidersPool.DispatchToProviders was just called")
	}
	callInfo := struct {
		Ctx context.Context
		ID  int
	}{
		Ctx: ctx,
		ID:  id,
	}
	mock.lockDispatchToProviders.Lock()
	mock.calls.DispatchToProviders = append(mock.calls.DispatchToProviders, callInfo)
	mock.lockDispatchToProviders.Unlock()
	mock.DispatchToProvidersFunc(ctx, id)
}

// DispatchToProvidersCalls gets all the calls that were made to DispatchToProviders.
// Check the length with:
//
//	len(mockedIProvidersPool.DispatchToProvidersCalls())
func (mock *IProvidersPoolMock) DispatchToProvidersCalls() []struct {
	Ctx context.Context
	ID  int
} {
	var calls []struct {
		Ctx context.Context
		ID  int
	}
	mock.lockDispatchToProviders.RLock()
	calls = mock.calls.DispatchToProviders
	mock.lockDispatchToProviders.RUnlock()
	return calls
}

// GetResult calls GetResultFunc.
func (mock *IProvidersPoolMock) GetResult() metricsapi.ProviderResult {
	if mock.GetResultFunc == nil {
		panic("IProvidersPoolMock.GetResultFunc: method is nil but IProvidersPool.GetResult was just called")
	}
	callInfo := struct {
	}{}
	mock.lockGetResult.Lock()
	mock.calls.GetResult = append(mock.calls.GetResult, callInfo)
	mock.lockGetResult.Unlock()
	return mock.GetResultFunc()
}

// GetResultCalls gets all the calls that were made to GetResult.
// Check the length with:
//
//	len(mockedIProvidersPool.GetResultCalls())
func (mock *IProvidersPoolMock) GetResultCalls() []struct {
} {
	var calls []struct {
	}
	mock.lockGetResult.RLock()
	calls = mock.calls.GetResult
	mock.lockGetResult.RUnlock()
	return calls
}

// StartProviders calls StartProvidersFunc.
func (mock *IProvidersPoolMock) StartProviders(ctx context.Context, numJobs int) {
	if mock.StartProvidersFunc == nil {
		panic("IProvidersPoolMock.StartProvidersFunc: method is nil but IProvidersPool.StartProviders was just called")
	}
	callInfo := struct {
		Ctx     context.Context
		NumJobs int
	}{
		Ctx:     ctx,
		NumJobs: numJobs,
	}
	mock.lockStartProviders.Lock()
	mock.calls.StartProviders = append(mock.calls.StartProviders, callInfo)
	mock.lockStartProviders.Unlock()
	mock.StartProvidersFunc(ctx, numJobs)
}

// StartProvidersCalls gets all the calls that were made to StartProviders.
// Check the length with:
//
//	len(mockedIProvidersPool.StartProvidersCalls())
func (mock *IProvidersPoolMock) StartProvidersCalls() []struct {
	Ctx     context.Context
	NumJobs int
} {
	var calls []struct {
		Ctx     context.Context
		NumJobs int
	}
	mock.lockStartProviders.RLock()
	calls = mock.calls.StartProviders
	mock.lockStartProviders.RUnlock()
	return calls
}

// StopProviders calls StopProvidersFunc.
func (mock *IProvidersPoolMock) StopProviders() {
	if mock.StopProvidersFunc == nil {
		panic("IProvidersPoolMock.StopProvidersFunc: method is nil but IProvidersPool.StopProviders was just called")
	}
	callInfo := struct {
	}{}
	mock.lockStopProviders.Lock()
	mock.calls.StopProviders = append(mock.calls.StopProviders, callInfo)
	mock.lockStopProviders.Unlock()
	mock.StopProvidersFunc()
}

// StopProvidersCalls gets all the calls that were made to StopProviders.
// Check the length with:
//
//	len(mockedIProvidersPool.StopProvidersCalls())
func (mock *IProvidersPoolMock) StopProvidersCalls() []struct {
} {
	var calls []struct {
	}
	mock.lockStopProviders.RLock()
	calls = mock.calls.StopProviders
	mock.lockStopProviders.RUnlock()
	return calls
}
