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

package lvmmock

import (
	lvm "lite.io/liteio/pkg/util/lvm"
	mock "github.com/stretchr/testify/mock"
)

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

// CreateLinearLV provides a mock function with given fields: vgName, lvName, opt
func (_m *LvmIface) CreateLinearLV(vgName string, lvName string, opt lvm.LvOption) (lvm.LV, error) {
	ret := _m.Called(vgName, lvName, opt)

	var r0 lvm.LV
	var r1 error
	if rf, ok := ret.Get(0).(func(string, string, lvm.LvOption) (lvm.LV, error)); ok {
		return rf(vgName, lvName, opt)
	}
	if rf, ok := ret.Get(0).(func(string, string, lvm.LvOption) lvm.LV); ok {
		r0 = rf(vgName, lvName, opt)
	} else {
		r0 = ret.Get(0).(lvm.LV)
	}

	if rf, ok := ret.Get(1).(func(string, string, lvm.LvOption) error); ok {
		r1 = rf(vgName, lvName, opt)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// CreatePV provides a mock function with given fields: pvs
func (_m *LvmIface) CreatePV(pvs []string) error {
	ret := _m.Called(pvs)

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

	return r0
}

// CreateSnapshotLinear provides a mock function with given fields: vgName, snapName, originVol, sizeByte
func (_m *LvmIface) CreateSnapshotLinear(vgName string, snapName string, originVol string, sizeByte uint64) error {
	ret := _m.Called(vgName, snapName, originVol, sizeByte)

	var r0 error
	if rf, ok := ret.Get(0).(func(string, string, string, uint64) error); ok {
		r0 = rf(vgName, snapName, originVol, sizeByte)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateSnapshotStripe provides a mock function with given fields: vgName, snapName, originVol, sizeByte
func (_m *LvmIface) CreateSnapshotStripe(vgName string, snapName string, originVol string, sizeByte uint64) error {
	ret := _m.Called(vgName, snapName, originVol, sizeByte)

	var r0 error
	if rf, ok := ret.Get(0).(func(string, string, string, uint64) error); ok {
		r0 = rf(vgName, snapName, originVol, sizeByte)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateStripeLV provides a mock function with given fields: vgName, lvName, sizeByte
func (_m *LvmIface) CreateStripeLV(vgName string, lvName string, sizeByte uint64) (lvm.LV, error) {
	ret := _m.Called(vgName, lvName, sizeByte)

	var r0 lvm.LV
	var r1 error
	if rf, ok := ret.Get(0).(func(string, string, uint64) (lvm.LV, error)); ok {
		return rf(vgName, lvName, sizeByte)
	}
	if rf, ok := ret.Get(0).(func(string, string, uint64) lvm.LV); ok {
		r0 = rf(vgName, lvName, sizeByte)
	} else {
		r0 = ret.Get(0).(lvm.LV)
	}

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

	return r0, r1
}

// CreateVG provides a mock function with given fields: name, pvs
func (_m *LvmIface) CreateVG(name string, pvs []string) (lvm.VG, error) {
	ret := _m.Called(name, pvs)

	var r0 lvm.VG
	var r1 error
	if rf, ok := ret.Get(0).(func(string, []string) (lvm.VG, error)); ok {
		return rf(name, pvs)
	}
	if rf, ok := ret.Get(0).(func(string, []string) lvm.VG); ok {
		r0 = rf(name, pvs)
	} else {
		r0 = ret.Get(0).(lvm.VG)
	}

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

	return r0, r1
}

// ExpandVolume provides a mock function with given fields: deltaBytes, targetVol
func (_m *LvmIface) ExpandVolume(deltaBytes int64, targetVol string) error {
	ret := _m.Called(deltaBytes, targetVol)

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

	return r0
}

// ListLVInVG provides a mock function with given fields: vgName
func (_m *LvmIface) ListLVInVG(vgName string) ([]lvm.LV, error) {
	ret := _m.Called(vgName)

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

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

	return r0, r1
}

// ListPV provides a mock function with given fields:
func (_m *LvmIface) ListPV() ([]lvm.PV, error) {
	ret := _m.Called()

	var r0 []lvm.PV
	var r1 error
	if rf, ok := ret.Get(0).(func() ([]lvm.PV, error)); ok {
		return rf()
	}
	if rf, ok := ret.Get(0).(func() []lvm.PV); ok {
		r0 = rf()
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).([]lvm.PV)
		}
	}

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

	return r0, r1
}

// ListVG provides a mock function with given fields:
func (_m *LvmIface) ListVG() ([]lvm.VG, error) {
	ret := _m.Called()

	var r0 []lvm.VG
	var r1 error
	if rf, ok := ret.Get(0).(func() ([]lvm.VG, error)); ok {
		return rf()
	}
	if rf, ok := ret.Get(0).(func() []lvm.VG); ok {
		r0 = rf()
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).([]lvm.VG)
		}
	}

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

	return r0, r1
}

// MergeSnapshot provides a mock function with given fields: vgName, snapName
func (_m *LvmIface) MergeSnapshot(vgName string, snapName string) error {
	ret := _m.Called(vgName, snapName)

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

	return r0
}

// RemoveLV provides a mock function with given fields: vgName, lvName
func (_m *LvmIface) RemoveLV(vgName string, lvName string) error {
	ret := _m.Called(vgName, lvName)

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

	return r0
}

// RemovePVs provides a mock function with given fields: pvs
func (_m *LvmIface) RemovePVs(pvs []string) error {
	ret := _m.Called(pvs)

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

	return r0
}

// RemoveVG provides a mock function with given fields: vgName
func (_m *LvmIface) RemoveVG(vgName string) error {
	ret := _m.Called(vgName)

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

	return r0
}

type mockConstructorTestingTNewLvmIface interface {
	mock.TestingT
	Cleanup(func())
}

// NewLvmIface creates a new instance of LvmIface. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
func NewLvmIface(t mockConstructorTestingTNewLvmIface) *LvmIface {
	mock := &LvmIface{}
	mock.Mock.Test(t)

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

	return mock
}
