testtools/micromock/inc/mockcallrecorder.h (42 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 MOCKCALLRECORDER_H #define MOCKCALLRECORDER_H #pragma once #include "stdafx.h" #include "mockmethodcallbase.h" #include "micromocktestrunnerhooks.h" #include "mockcallcomparer.h" typedef enum AUTOMATIC_CALL_COMPARISON_TAG { AUTOMATIC_CALL_COMPARISON_OFF, AUTOMATIC_CALL_COMPARISON_ON } AUTOMATIC_CALL_COMPARISON; class CMockCallRecorder { public: CMockCallRecorder(AUTOMATIC_CALL_COMPARISON performAutomaticCallComparison = AUTOMATIC_CALL_COMPARISON_ON, CMockCallComparer* mockCallComparer = NULL); virtual ~CMockCallRecorder(void); public: void RecordExpectedCall(CMockMethodCallBase* mockMethodCall); CMockValueBase * RecordActualCall(CMockMethodCallBase * mockMethodCall, bool* failed); CMockValueBase* MatchActualCall(CMockMethodCallBase* mockMethodCall, bool* failed); void AssertActualAndExpectedCalls(void); std::tstring CompareActualAndExpectedCalls(void); std::tstring GetUnexpectedCalls(std::tstring unexpectedCallPrefix = _T("")); std::tstring GetMissingCalls(std::tstring missingCallPrefix = _T("")); void ResetExpectedCalls(); void ResetActualCalls(); void ResetAllCalls(); void Lock(); void Unlock(); void SetPerformAutomaticCallComparison(AUTOMATIC_CALL_COMPARISON performAutomaticCallComparison); void SetMockCallComparer(CMockCallComparer* mockCallComparer) { m_MockCallComparer = mockCallComparer; }; protected: std::vector<CMockMethodCallBase*> m_ExpectedCalls; std::vector<CMockMethodCallBase*> m_ActualCalls; protected: MICROMOCK_CRITICAL_SECTION m_MockCallRecorderCS; AUTOMATIC_CALL_COMPARISON m_PerformAutomaticCallComparison; CMockCallComparer* m_MockCallComparer; }; #endif // MOCKCALLRECORDER_H