//                           _       _
// __      _____  __ ___   ___  __ _| |_ ___
// \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \
//  \ V  V /  __/ (_| |\ V /| | (_| | ||  __/
//   \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___|
//
//  Copyright © 2016 - 2026 Weaviate B.V. All rights reserved.
//
//  CONTACT: hello@weaviate.io
//

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

package cluster

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

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

type MockNodeSelector_Expecter struct {
	mock *mock.Mock
}

func (_m *MockNodeSelector) EXPECT() *MockNodeSelector_Expecter {
	return &MockNodeSelector_Expecter{mock: &_m.Mock}
}

// AllHostnames provides a mock function with no fields
func (_m *MockNodeSelector) AllHostnames() []string {
	ret := _m.Called()

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

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

	return r0
}

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

// AllHostnames is a helper method to define mock.On call
func (_e *MockNodeSelector_Expecter) AllHostnames() *MockNodeSelector_AllHostnames_Call {
	return &MockNodeSelector_AllHostnames_Call{Call: _e.mock.On("AllHostnames")}
}

func (_c *MockNodeSelector_AllHostnames_Call) Run(run func()) *MockNodeSelector_AllHostnames_Call {
	_c.Call.Run(func(args mock.Arguments) {
		run()
	})
	return _c
}

func (_c *MockNodeSelector_AllHostnames_Call) Return(_a0 []string) *MockNodeSelector_AllHostnames_Call {
	_c.Call.Return(_a0)
	return _c
}

func (_c *MockNodeSelector_AllHostnames_Call) RunAndReturn(run func() []string) *MockNodeSelector_AllHostnames_Call {
	_c.Call.Return(run)
	return _c
}

// AllOtherClusterMembers provides a mock function with given fields: port
func (_m *MockNodeSelector) AllOtherClusterMembers(port int) map[string]string {
	ret := _m.Called(port)

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

	var r0 map[string]string
	if rf, ok := ret.Get(0).(func(int) map[string]string); ok {
		r0 = rf(port)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(map[string]string)
		}
	}

	return r0
}

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

// AllOtherClusterMembers is a helper method to define mock.On call
//   - port int
func (_e *MockNodeSelector_Expecter) AllOtherClusterMembers(port interface{}) *MockNodeSelector_AllOtherClusterMembers_Call {
	return &MockNodeSelector_AllOtherClusterMembers_Call{Call: _e.mock.On("AllOtherClusterMembers", port)}
}

func (_c *MockNodeSelector_AllOtherClusterMembers_Call) Run(run func(port int)) *MockNodeSelector_AllOtherClusterMembers_Call {
	_c.Call.Run(func(args mock.Arguments) {
		run(args[0].(int))
	})
	return _c
}

func (_c *MockNodeSelector_AllOtherClusterMembers_Call) Return(_a0 map[string]string) *MockNodeSelector_AllOtherClusterMembers_Call {
	_c.Call.Return(_a0)
	return _c
}

func (_c *MockNodeSelector_AllOtherClusterMembers_Call) RunAndReturn(run func(int) map[string]string) *MockNodeSelector_AllOtherClusterMembers_Call {
	_c.Call.Return(run)
	return _c
}

// ClusterHealthScore provides a mock function with no fields
func (_m *MockNodeSelector) ClusterHealthScore() int {
	ret := _m.Called()

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

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

	return r0
}

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

// ClusterHealthScore is a helper method to define mock.On call
func (_e *MockNodeSelector_Expecter) ClusterHealthScore() *MockNodeSelector_ClusterHealthScore_Call {
	return &MockNodeSelector_ClusterHealthScore_Call{Call: _e.mock.On("ClusterHealthScore")}
}

func (_c *MockNodeSelector_ClusterHealthScore_Call) Run(run func()) *MockNodeSelector_ClusterHealthScore_Call {
	_c.Call.Run(func(args mock.Arguments) {
		run()
	})
	return _c
}

func (_c *MockNodeSelector_ClusterHealthScore_Call) Return(_a0 int) *MockNodeSelector_ClusterHealthScore_Call {
	_c.Call.Return(_a0)
	return _c
}

func (_c *MockNodeSelector_ClusterHealthScore_Call) RunAndReturn(run func() int) *MockNodeSelector_ClusterHealthScore_Call {
	_c.Call.Return(run)
	return _c
}

// Leave provides a mock function with no fields
func (_m *MockNodeSelector) Leave() error {
	ret := _m.Called()

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

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

	return r0
}

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

// Leave is a helper method to define mock.On call
func (_e *MockNodeSelector_Expecter) Leave() *MockNodeSelector_Leave_Call {
	return &MockNodeSelector_Leave_Call{Call: _e.mock.On("Leave")}
}

func (_c *MockNodeSelector_Leave_Call) Run(run func()) *MockNodeSelector_Leave_Call {
	_c.Call.Run(func(args mock.Arguments) {
		run()
	})
	return _c
}

func (_c *MockNodeSelector_Leave_Call) Return(_a0 error) *MockNodeSelector_Leave_Call {
	_c.Call.Return(_a0)
	return _c
}

func (_c *MockNodeSelector_Leave_Call) RunAndReturn(run func() error) *MockNodeSelector_Leave_Call {
	_c.Call.Return(run)
	return _c
}

// LocalName provides a mock function with no fields
func (_m *MockNodeSelector) LocalName() string {
	ret := _m.Called()

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

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

	return r0
}

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

// LocalName is a helper method to define mock.On call
func (_e *MockNodeSelector_Expecter) LocalName() *MockNodeSelector_LocalName_Call {
	return &MockNodeSelector_LocalName_Call{Call: _e.mock.On("LocalName")}
}

func (_c *MockNodeSelector_LocalName_Call) Run(run func()) *MockNodeSelector_LocalName_Call {
	_c.Call.Run(func(args mock.Arguments) {
		run()
	})
	return _c
}

func (_c *MockNodeSelector_LocalName_Call) Return(_a0 string) *MockNodeSelector_LocalName_Call {
	_c.Call.Return(_a0)
	return _c
}

func (_c *MockNodeSelector_LocalName_Call) RunAndReturn(run func() string) *MockNodeSelector_LocalName_Call {
	_c.Call.Return(run)
	return _c
}

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

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

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

	return r0
}

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

// NodeAddress is a helper method to define mock.On call
//   - id string
func (_e *MockNodeSelector_Expecter) NodeAddress(id interface{}) *MockNodeSelector_NodeAddress_Call {
	return &MockNodeSelector_NodeAddress_Call{Call: _e.mock.On("NodeAddress", id)}
}

func (_c *MockNodeSelector_NodeAddress_Call) Run(run func(id string)) *MockNodeSelector_NodeAddress_Call {
	_c.Call.Run(func(args mock.Arguments) {
		run(args[0].(string))
	})
	return _c
}

func (_c *MockNodeSelector_NodeAddress_Call) Return(_a0 string) *MockNodeSelector_NodeAddress_Call {
	_c.Call.Return(_a0)
	return _c
}

func (_c *MockNodeSelector_NodeAddress_Call) RunAndReturn(run func(string) string) *MockNodeSelector_NodeAddress_Call {
	_c.Call.Return(run)
	return _c
}

// NodeCount provides a mock function with no fields
func (_m *MockNodeSelector) NodeCount() int {
	ret := _m.Called()

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

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

	return r0
}

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

// NodeCount is a helper method to define mock.On call
func (_e *MockNodeSelector_Expecter) NodeCount() *MockNodeSelector_NodeCount_Call {
	return &MockNodeSelector_NodeCount_Call{Call: _e.mock.On("NodeCount")}
}

func (_c *MockNodeSelector_NodeCount_Call) Run(run func()) *MockNodeSelector_NodeCount_Call {
	_c.Call.Run(func(args mock.Arguments) {
		run()
	})
	return _c
}

func (_c *MockNodeSelector_NodeCount_Call) Return(_a0 int) *MockNodeSelector_NodeCount_Call {
	_c.Call.Return(_a0)
	return _c
}

func (_c *MockNodeSelector_NodeCount_Call) RunAndReturn(run func() int) *MockNodeSelector_NodeCount_Call {
	_c.Call.Return(run)
	return _c
}

// NodeGRPCPort provides a mock function with given fields: id
func (_m *MockNodeSelector) NodeGRPCPort(id string) (int, error) {
	ret := _m.Called(id)

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

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

	if rf, ok := ret.Get(1).(func(string) error); ok {
		r1 = rf(id)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

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

// NodeGRPCPort is a helper method to define mock.On call
//   - id string
func (_e *MockNodeSelector_Expecter) NodeGRPCPort(id interface{}) *MockNodeSelector_NodeGRPCPort_Call {
	return &MockNodeSelector_NodeGRPCPort_Call{Call: _e.mock.On("NodeGRPCPort", id)}
}

func (_c *MockNodeSelector_NodeGRPCPort_Call) Run(run func(id string)) *MockNodeSelector_NodeGRPCPort_Call {
	_c.Call.Run(func(args mock.Arguments) {
		run(args[0].(string))
	})
	return _c
}

func (_c *MockNodeSelector_NodeGRPCPort_Call) Return(_a0 int, _a1 error) *MockNodeSelector_NodeGRPCPort_Call {
	_c.Call.Return(_a0, _a1)
	return _c
}

func (_c *MockNodeSelector_NodeGRPCPort_Call) RunAndReturn(run func(string) (int, error)) *MockNodeSelector_NodeGRPCPort_Call {
	_c.Call.Return(run)
	return _c
}

// NodeHostname provides a mock function with given fields: nodeName
func (_m *MockNodeSelector) NodeHostname(nodeName string) (string, bool) {
	ret := _m.Called(nodeName)

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

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

	if rf, ok := ret.Get(1).(func(string) bool); ok {
		r1 = rf(nodeName)
	} else {
		r1 = ret.Get(1).(bool)
	}

	return r0, r1
}

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

// NodeHostname is a helper method to define mock.On call
//   - nodeName string
func (_e *MockNodeSelector_Expecter) NodeHostname(nodeName interface{}) *MockNodeSelector_NodeHostname_Call {
	return &MockNodeSelector_NodeHostname_Call{Call: _e.mock.On("NodeHostname", nodeName)}
}

func (_c *MockNodeSelector_NodeHostname_Call) Run(run func(nodeName string)) *MockNodeSelector_NodeHostname_Call {
	_c.Call.Run(func(args mock.Arguments) {
		run(args[0].(string))
	})
	return _c
}

func (_c *MockNodeSelector_NodeHostname_Call) Return(_a0 string, _a1 bool) *MockNodeSelector_NodeHostname_Call {
	_c.Call.Return(_a0, _a1)
	return _c
}

func (_c *MockNodeSelector_NodeHostname_Call) RunAndReturn(run func(string) (string, bool)) *MockNodeSelector_NodeHostname_Call {
	_c.Call.Return(run)
	return _c
}

// NonStorageNodes provides a mock function with no fields
func (_m *MockNodeSelector) NonStorageNodes() []string {
	ret := _m.Called()

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

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

	return r0
}

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

// NonStorageNodes is a helper method to define mock.On call
func (_e *MockNodeSelector_Expecter) NonStorageNodes() *MockNodeSelector_NonStorageNodes_Call {
	return &MockNodeSelector_NonStorageNodes_Call{Call: _e.mock.On("NonStorageNodes")}
}

func (_c *MockNodeSelector_NonStorageNodes_Call) Run(run func()) *MockNodeSelector_NonStorageNodes_Call {
	_c.Call.Run(func(args mock.Arguments) {
		run()
	})
	return _c
}

func (_c *MockNodeSelector_NonStorageNodes_Call) Return(_a0 []string) *MockNodeSelector_NonStorageNodes_Call {
	_c.Call.Return(_a0)
	return _c
}

func (_c *MockNodeSelector_NonStorageNodes_Call) RunAndReturn(run func() []string) *MockNodeSelector_NonStorageNodes_Call {
	_c.Call.Return(run)
	return _c
}

// Shutdown provides a mock function with no fields
func (_m *MockNodeSelector) Shutdown() error {
	ret := _m.Called()

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

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

	return r0
}

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

// Shutdown is a helper method to define mock.On call
func (_e *MockNodeSelector_Expecter) Shutdown() *MockNodeSelector_Shutdown_Call {
	return &MockNodeSelector_Shutdown_Call{Call: _e.mock.On("Shutdown")}
}

func (_c *MockNodeSelector_Shutdown_Call) Run(run func()) *MockNodeSelector_Shutdown_Call {
	_c.Call.Run(func(args mock.Arguments) {
		run()
	})
	return _c
}

func (_c *MockNodeSelector_Shutdown_Call) Return(_a0 error) *MockNodeSelector_Shutdown_Call {
	_c.Call.Return(_a0)
	return _c
}

func (_c *MockNodeSelector_Shutdown_Call) RunAndReturn(run func() error) *MockNodeSelector_Shutdown_Call {
	_c.Call.Return(run)
	return _c
}

// SortCandidates provides a mock function with given fields: nodes
func (_m *MockNodeSelector) SortCandidates(nodes []string) []string {
	ret := _m.Called(nodes)

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

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

	return r0
}

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

// SortCandidates is a helper method to define mock.On call
//   - nodes []string
func (_e *MockNodeSelector_Expecter) SortCandidates(nodes interface{}) *MockNodeSelector_SortCandidates_Call {
	return &MockNodeSelector_SortCandidates_Call{Call: _e.mock.On("SortCandidates", nodes)}
}

func (_c *MockNodeSelector_SortCandidates_Call) Run(run func(nodes []string)) *MockNodeSelector_SortCandidates_Call {
	_c.Call.Run(func(args mock.Arguments) {
		run(args[0].([]string))
	})
	return _c
}

func (_c *MockNodeSelector_SortCandidates_Call) Return(_a0 []string) *MockNodeSelector_SortCandidates_Call {
	_c.Call.Return(_a0)
	return _c
}

func (_c *MockNodeSelector_SortCandidates_Call) RunAndReturn(run func([]string) []string) *MockNodeSelector_SortCandidates_Call {
	_c.Call.Return(run)
	return _c
}

// StorageCandidates provides a mock function with no fields
func (_m *MockNodeSelector) StorageCandidates() []string {
	ret := _m.Called()

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

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

	return r0
}

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

// StorageCandidates is a helper method to define mock.On call
func (_e *MockNodeSelector_Expecter) StorageCandidates() *MockNodeSelector_StorageCandidates_Call {
	return &MockNodeSelector_StorageCandidates_Call{Call: _e.mock.On("StorageCandidates")}
}

func (_c *MockNodeSelector_StorageCandidates_Call) Run(run func()) *MockNodeSelector_StorageCandidates_Call {
	_c.Call.Run(func(args mock.Arguments) {
		run()
	})
	return _c
}

func (_c *MockNodeSelector_StorageCandidates_Call) Return(_a0 []string) *MockNodeSelector_StorageCandidates_Call {
	_c.Call.Return(_a0)
	return _c
}

func (_c *MockNodeSelector_StorageCandidates_Call) RunAndReturn(run func() []string) *MockNodeSelector_StorageCandidates_Call {
	_c.Call.Return(run)
	return _c
}

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

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

	return mock
}
