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

package mock

import (
	"github.com/axelarnetwork/axelar-core/utils"
	sdk "github.com/cosmos/cosmos-sdk/types"
	"github.com/tendermint/tendermint/libs/log"
	"sync"
)

// Ensure, that LoggerMock does implement utils.Logger.
// If this is not the case, regenerate this file with moq.
var _ utils.Logger = &LoggerMock{}

// LoggerMock is a mock implementation of utils.Logger.
//
//	func TestSomethingThatUsesLogger(t *testing.T) {
//
//		// make and configure a mocked utils.Logger
//		mockedLogger := &LoggerMock{
//			LoggerFunc: func(ctx sdk.Context) log.Logger {
//				panic("mock out the Logger method")
//			},
//		}
//
//		// use mockedLogger in code that requires utils.Logger
//		// and then make assertions.
//
//	}
type LoggerMock struct {
	// LoggerFunc mocks the Logger method.
	LoggerFunc func(ctx sdk.Context) log.Logger

	// calls tracks calls to the methods.
	calls struct {
		// Logger holds details about calls to the Logger method.
		Logger []struct {
			// Ctx is the ctx argument value.
			Ctx sdk.Context
		}
	}
	lockLogger sync.RWMutex
}

// Logger calls LoggerFunc.
func (mock *LoggerMock) Logger(ctx sdk.Context) log.Logger {
	if mock.LoggerFunc == nil {
		panic("LoggerMock.LoggerFunc: method is nil but Logger.Logger was just called")
	}
	callInfo := struct {
		Ctx sdk.Context
	}{
		Ctx: ctx,
	}
	mock.lockLogger.Lock()
	mock.calls.Logger = append(mock.calls.Logger, callInfo)
	mock.lockLogger.Unlock()
	return mock.LoggerFunc(ctx)
}

// LoggerCalls gets all the calls that were made to Logger.
// Check the length with:
//
//	len(mockedLogger.LoggerCalls())
func (mock *LoggerMock) LoggerCalls() []struct {
	Ctx sdk.Context
} {
	var calls []struct {
		Ctx sdk.Context
	}
	mock.lockLogger.RLock()
	calls = mock.calls.Logger
	mock.lockLogger.RUnlock()
	return calls
}
