testtools/micromock/inc/globalmock.h (35 lines of code) (raw):
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
#ifndef GLOBALMOCK_H
#define GLOBALMOCK_H
#pragma once
#include "stdafx.h"
#include "mock.h"
#include "mockcallrecorder.h"
#include "micromockexception.h"
template<class C>
class CGlobalMock : public CMock<C>
{
public:
CGlobalMock(_In_ AUTOMATIC_CALL_COMPARISON performAutomaticCallComparison = AUTOMATIC_CALL_COMPARISON_ON) :
CMock<C>(performAutomaticCallComparison)
{
m_GlobalMockInstance = this;
}
virtual ~CGlobalMock()
{
m_GlobalMockInstance = NULL;
}
static CGlobalMock<C>* GetSingleton()
{
if (NULL == m_GlobalMockInstance)
{
MOCK_THROW(CMicroMockException(MICROMOCK_EXCEPTION_INTERNAL_ERROR,
_T("Error retrieving singleton")));
}
return m_GlobalMockInstance;
}
protected:
static CGlobalMock<C>* m_GlobalMockInstance;
};
template<class C>
CGlobalMock<C>* CGlobalMock<C>::m_GlobalMockInstance;
#endif // GLOBALMOCK_H