// Code generated by counterfeiter. DO NOT EDIT.
package fakes

import (
	"sync"

	"github.com/cloudfoundry/bosh-agent/platform"
	"github.com/cloudfoundry/bosh-agent/platform/windows/disk"
)

type FakeWindowsDiskManager struct {
	GetFormatterStub        func() disk.WindowsDiskFormatter
	getFormatterMutex       sync.RWMutex
	getFormatterArgsForCall []struct {
	}
	getFormatterReturns struct {
		result1 disk.WindowsDiskFormatter
	}
	getFormatterReturnsOnCall map[int]struct {
		result1 disk.WindowsDiskFormatter
	}
	GetLinkerStub        func() disk.WindowsDiskLinker
	getLinkerMutex       sync.RWMutex
	getLinkerArgsForCall []struct {
	}
	getLinkerReturns struct {
		result1 disk.WindowsDiskLinker
	}
	getLinkerReturnsOnCall map[int]struct {
		result1 disk.WindowsDiskLinker
	}
	GetPartitionerStub        func() disk.WindowsDiskPartitioner
	getPartitionerMutex       sync.RWMutex
	getPartitionerArgsForCall []struct {
	}
	getPartitionerReturns struct {
		result1 disk.WindowsDiskPartitioner
	}
	getPartitionerReturnsOnCall map[int]struct {
		result1 disk.WindowsDiskPartitioner
	}
	GetProtectorStub        func() disk.WindowsDiskProtector
	getProtectorMutex       sync.RWMutex
	getProtectorArgsForCall []struct {
	}
	getProtectorReturns struct {
		result1 disk.WindowsDiskProtector
	}
	getProtectorReturnsOnCall map[int]struct {
		result1 disk.WindowsDiskProtector
	}
	invocations      map[string][][]interface{}
	invocationsMutex sync.RWMutex
}

func (fake *FakeWindowsDiskManager) GetFormatter() disk.WindowsDiskFormatter {
	fake.getFormatterMutex.Lock()
	ret, specificReturn := fake.getFormatterReturnsOnCall[len(fake.getFormatterArgsForCall)]
	fake.getFormatterArgsForCall = append(fake.getFormatterArgsForCall, struct {
	}{})
	fake.recordInvocation("GetFormatter", []interface{}{})
	fake.getFormatterMutex.Unlock()
	if fake.GetFormatterStub != nil {
		return fake.GetFormatterStub()
	}
	if specificReturn {
		return ret.result1
	}
	fakeReturns := fake.getFormatterReturns
	return fakeReturns.result1
}

func (fake *FakeWindowsDiskManager) GetFormatterCallCount() int {
	fake.getFormatterMutex.RLock()
	defer fake.getFormatterMutex.RUnlock()
	return len(fake.getFormatterArgsForCall)
}

func (fake *FakeWindowsDiskManager) GetFormatterCalls(stub func() disk.WindowsDiskFormatter) {
	fake.getFormatterMutex.Lock()
	defer fake.getFormatterMutex.Unlock()
	fake.GetFormatterStub = stub
}

func (fake *FakeWindowsDiskManager) GetFormatterReturns(result1 disk.WindowsDiskFormatter) {
	fake.getFormatterMutex.Lock()
	defer fake.getFormatterMutex.Unlock()
	fake.GetFormatterStub = nil
	fake.getFormatterReturns = struct {
		result1 disk.WindowsDiskFormatter
	}{result1}
}

func (fake *FakeWindowsDiskManager) GetFormatterReturnsOnCall(i int, result1 disk.WindowsDiskFormatter) {
	fake.getFormatterMutex.Lock()
	defer fake.getFormatterMutex.Unlock()
	fake.GetFormatterStub = nil
	if fake.getFormatterReturnsOnCall == nil {
		fake.getFormatterReturnsOnCall = make(map[int]struct {
			result1 disk.WindowsDiskFormatter
		})
	}
	fake.getFormatterReturnsOnCall[i] = struct {
		result1 disk.WindowsDiskFormatter
	}{result1}
}

func (fake *FakeWindowsDiskManager) GetLinker() disk.WindowsDiskLinker {
	fake.getLinkerMutex.Lock()
	ret, specificReturn := fake.getLinkerReturnsOnCall[len(fake.getLinkerArgsForCall)]
	fake.getLinkerArgsForCall = append(fake.getLinkerArgsForCall, struct {
	}{})
	fake.recordInvocation("GetLinker", []interface{}{})
	fake.getLinkerMutex.Unlock()
	if fake.GetLinkerStub != nil {
		return fake.GetLinkerStub()
	}
	if specificReturn {
		return ret.result1
	}
	fakeReturns := fake.getLinkerReturns
	return fakeReturns.result1
}

func (fake *FakeWindowsDiskManager) GetLinkerCallCount() int {
	fake.getLinkerMutex.RLock()
	defer fake.getLinkerMutex.RUnlock()
	return len(fake.getLinkerArgsForCall)
}

func (fake *FakeWindowsDiskManager) GetLinkerCalls(stub func() disk.WindowsDiskLinker) {
	fake.getLinkerMutex.Lock()
	defer fake.getLinkerMutex.Unlock()
	fake.GetLinkerStub = stub
}

func (fake *FakeWindowsDiskManager) GetLinkerReturns(result1 disk.WindowsDiskLinker) {
	fake.getLinkerMutex.Lock()
	defer fake.getLinkerMutex.Unlock()
	fake.GetLinkerStub = nil
	fake.getLinkerReturns = struct {
		result1 disk.WindowsDiskLinker
	}{result1}
}

func (fake *FakeWindowsDiskManager) GetLinkerReturnsOnCall(i int, result1 disk.WindowsDiskLinker) {
	fake.getLinkerMutex.Lock()
	defer fake.getLinkerMutex.Unlock()
	fake.GetLinkerStub = nil
	if fake.getLinkerReturnsOnCall == nil {
		fake.getLinkerReturnsOnCall = make(map[int]struct {
			result1 disk.WindowsDiskLinker
		})
	}
	fake.getLinkerReturnsOnCall[i] = struct {
		result1 disk.WindowsDiskLinker
	}{result1}
}

func (fake *FakeWindowsDiskManager) GetPartitioner() disk.WindowsDiskPartitioner {
	fake.getPartitionerMutex.Lock()
	ret, specificReturn := fake.getPartitionerReturnsOnCall[len(fake.getPartitionerArgsForCall)]
	fake.getPartitionerArgsForCall = append(fake.getPartitionerArgsForCall, struct {
	}{})
	fake.recordInvocation("GetPartitioner", []interface{}{})
	fake.getPartitionerMutex.Unlock()
	if fake.GetPartitionerStub != nil {
		return fake.GetPartitionerStub()
	}
	if specificReturn {
		return ret.result1
	}
	fakeReturns := fake.getPartitionerReturns
	return fakeReturns.result1
}

func (fake *FakeWindowsDiskManager) GetPartitionerCallCount() int {
	fake.getPartitionerMutex.RLock()
	defer fake.getPartitionerMutex.RUnlock()
	return len(fake.getPartitionerArgsForCall)
}

func (fake *FakeWindowsDiskManager) GetPartitionerCalls(stub func() disk.WindowsDiskPartitioner) {
	fake.getPartitionerMutex.Lock()
	defer fake.getPartitionerMutex.Unlock()
	fake.GetPartitionerStub = stub
}

func (fake *FakeWindowsDiskManager) GetPartitionerReturns(result1 disk.WindowsDiskPartitioner) {
	fake.getPartitionerMutex.Lock()
	defer fake.getPartitionerMutex.Unlock()
	fake.GetPartitionerStub = nil
	fake.getPartitionerReturns = struct {
		result1 disk.WindowsDiskPartitioner
	}{result1}
}

func (fake *FakeWindowsDiskManager) GetPartitionerReturnsOnCall(i int, result1 disk.WindowsDiskPartitioner) {
	fake.getPartitionerMutex.Lock()
	defer fake.getPartitionerMutex.Unlock()
	fake.GetPartitionerStub = nil
	if fake.getPartitionerReturnsOnCall == nil {
		fake.getPartitionerReturnsOnCall = make(map[int]struct {
			result1 disk.WindowsDiskPartitioner
		})
	}
	fake.getPartitionerReturnsOnCall[i] = struct {
		result1 disk.WindowsDiskPartitioner
	}{result1}
}

func (fake *FakeWindowsDiskManager) GetProtector() disk.WindowsDiskProtector {
	fake.getProtectorMutex.Lock()
	ret, specificReturn := fake.getProtectorReturnsOnCall[len(fake.getProtectorArgsForCall)]
	fake.getProtectorArgsForCall = append(fake.getProtectorArgsForCall, struct {
	}{})
	fake.recordInvocation("GetProtector", []interface{}{})
	fake.getProtectorMutex.Unlock()
	if fake.GetProtectorStub != nil {
		return fake.GetProtectorStub()
	}
	if specificReturn {
		return ret.result1
	}
	fakeReturns := fake.getProtectorReturns
	return fakeReturns.result1
}

func (fake *FakeWindowsDiskManager) GetProtectorCallCount() int {
	fake.getProtectorMutex.RLock()
	defer fake.getProtectorMutex.RUnlock()
	return len(fake.getProtectorArgsForCall)
}

func (fake *FakeWindowsDiskManager) GetProtectorCalls(stub func() disk.WindowsDiskProtector) {
	fake.getProtectorMutex.Lock()
	defer fake.getProtectorMutex.Unlock()
	fake.GetProtectorStub = stub
}

func (fake *FakeWindowsDiskManager) GetProtectorReturns(result1 disk.WindowsDiskProtector) {
	fake.getProtectorMutex.Lock()
	defer fake.getProtectorMutex.Unlock()
	fake.GetProtectorStub = nil
	fake.getProtectorReturns = struct {
		result1 disk.WindowsDiskProtector
	}{result1}
}

func (fake *FakeWindowsDiskManager) GetProtectorReturnsOnCall(i int, result1 disk.WindowsDiskProtector) {
	fake.getProtectorMutex.Lock()
	defer fake.getProtectorMutex.Unlock()
	fake.GetProtectorStub = nil
	if fake.getProtectorReturnsOnCall == nil {
		fake.getProtectorReturnsOnCall = make(map[int]struct {
			result1 disk.WindowsDiskProtector
		})
	}
	fake.getProtectorReturnsOnCall[i] = struct {
		result1 disk.WindowsDiskProtector
	}{result1}
}

func (fake *FakeWindowsDiskManager) Invocations() map[string][][]interface{} {
	fake.invocationsMutex.RLock()
	defer fake.invocationsMutex.RUnlock()
	fake.getFormatterMutex.RLock()
	defer fake.getFormatterMutex.RUnlock()
	fake.getLinkerMutex.RLock()
	defer fake.getLinkerMutex.RUnlock()
	fake.getPartitionerMutex.RLock()
	defer fake.getPartitionerMutex.RUnlock()
	fake.getProtectorMutex.RLock()
	defer fake.getProtectorMutex.RUnlock()
	copiedInvocations := map[string][][]interface{}{}
	for key, value := range fake.invocations {
		copiedInvocations[key] = value
	}
	return copiedInvocations
}

func (fake *FakeWindowsDiskManager) recordInvocation(key string, args []interface{}) {
	fake.invocationsMutex.Lock()
	defer fake.invocationsMutex.Unlock()
	if fake.invocations == nil {
		fake.invocations = map[string][][]interface{}{}
	}
	if fake.invocations[key] == nil {
		fake.invocations[key] = [][]interface{}{}
	}
	fake.invocations[key] = append(fake.invocations[key], args)
}

var _ platform.WindowsDiskManager = new(FakeWindowsDiskManager)
