1f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// Copyright 2007, Google Inc. 2f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// All rights reserved. 3f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// 4f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// Redistribution and use in source and binary forms, with or without 5f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// modification, are permitted provided that the following conditions are 6f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// met: 7f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// 8f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// * Redistributions of source code must retain the above copyright 9f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// notice, this list of conditions and the following disclaimer. 10f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// * Redistributions in binary form must reproduce the above 11f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// copyright notice, this list of conditions and the following disclaimer 12f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// in the documentation and/or other materials provided with the 13f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// distribution. 14f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// * Neither the name of Google Inc. nor the names of its 15f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// contributors may be used to endorse or promote products derived from 16f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// this software without specific prior written permission. 17f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// 18f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// 30f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// Author: wan@google.com (Zhanyong Wan) 31f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 32f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// Google Mock - a framework for writing C++ mock classes. 33f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// 34f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// This is the main header file a user should include. 35f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 36f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_H_ 37f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#define GMOCK_INCLUDE_GMOCK_GMOCK_H_ 38f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 39f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// This file implements the following syntax: 40f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// 41f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// ON_CALL(mock_object.Method(...)) 42f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// .With(...) ? 43f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// .WillByDefault(...); 44f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// 45f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// where With() is optional and WillByDefault() must appear exactly 46f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// once. 47f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// 48f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// EXPECT_CALL(mock_object.Method(...)) 49f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// .With(...) ? 50f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// .Times(...) ? 51f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// .InSequence(...) * 52f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// .WillOnce(...) * 53f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// .WillRepeatedly(...) ? 54f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// .RetiresOnSaturation() ? ; 55f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// 56f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// where all clauses are optional and WillOnce() can be repeated. 57f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 58f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#include "gmock/gmock-actions.h" 59f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#include "gmock/gmock-cardinalities.h" 60f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#include "gmock/gmock-generated-actions.h" 61f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#include "gmock/gmock-generated-function-mockers.h" 62f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#include "gmock/gmock-generated-nice-strict.h" 63f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#include "gmock/gmock-generated-matchers.h" 64f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#include "gmock/gmock-matchers.h" 65f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#include "gmock/gmock-more-actions.h" 66f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#include "gmock/gmock-more-matchers.h" 67f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#include "gmock/internal/gmock-internal-utils.h" 68f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 69f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdochnamespace testing { 70f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 71f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// Declares Google Mock flags that we want a user to use programmatically. 72f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen MurdochGMOCK_DECLARE_bool_(catch_leaked_mocks); 73f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen MurdochGMOCK_DECLARE_string_(verbose); 74f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 75f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// Initializes Google Mock. This must be called before running the 76f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// tests. In particular, it parses the command line for the flags 77f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// that Google Mock recognizes. Whenever a Google Mock flag is seen, 78f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// it is removed from argv, and *argc is decremented. 79f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// 80f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// No value is returned. Instead, the Google Mock flag variables are 81f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// updated. 82f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// 83f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// Since Google Test is needed for Google Mock to work, this function 84f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// also initializes Google Test and parses its flags, if that hasn't 85f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// been done. 86f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen MurdochGTEST_API_ void InitGoogleMock(int* argc, char** argv); 87f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 88f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// This overloaded version can be used in Windows programs compiled in 89f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// UNICODE mode. 90f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen MurdochGTEST_API_ void InitGoogleMock(int* argc, wchar_t** argv); 91f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 92f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch} // namespace testing 93f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch 94f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#endif // GMOCK_INCLUDE_GMOCK_GMOCK_H_ 95