113481Sgiacomo.travaglini@arm.com## Google Mock ## 213481Sgiacomo.travaglini@arm.com 313481Sgiacomo.travaglini@arm.comThe Google C++ mocking framework. 413481Sgiacomo.travaglini@arm.com 513481Sgiacomo.travaglini@arm.com### Overview ### 613481Sgiacomo.travaglini@arm.com 713481Sgiacomo.travaglini@arm.comGoogle's framework for writing and using C++ mock classes. 813481Sgiacomo.travaglini@arm.comIt can help you derive better designs of your system and write better tests. 913481Sgiacomo.travaglini@arm.com 1013481Sgiacomo.travaglini@arm.comIt is inspired by: 1113481Sgiacomo.travaglini@arm.com 1213481Sgiacomo.travaglini@arm.com * [jMock](http://www.jmock.org/), 1313481Sgiacomo.travaglini@arm.com * [EasyMock](http://www.easymock.org/), and 1413481Sgiacomo.travaglini@arm.com * [Hamcrest](http://code.google.com/p/hamcrest/), 1513481Sgiacomo.travaglini@arm.com 1613481Sgiacomo.travaglini@arm.comand designed with C++'s specifics in mind. 1713481Sgiacomo.travaglini@arm.com 1813481Sgiacomo.travaglini@arm.comGoogle mock: 1913481Sgiacomo.travaglini@arm.com 2013481Sgiacomo.travaglini@arm.com * lets you create mock classes trivially using simple macros. 2113481Sgiacomo.travaglini@arm.com * supports a rich set of matchers and actions. 2213481Sgiacomo.travaglini@arm.com * handles unordered, partially ordered, or completely ordered expectations. 2313481Sgiacomo.travaglini@arm.com * is extensible by users. 2413481Sgiacomo.travaglini@arm.com 2513481Sgiacomo.travaglini@arm.comWe hope you find it useful! 2613481Sgiacomo.travaglini@arm.com 2713481Sgiacomo.travaglini@arm.com### Features ### 2813481Sgiacomo.travaglini@arm.com 2913481Sgiacomo.travaglini@arm.com * Provides a declarative syntax for defining mocks. 3013481Sgiacomo.travaglini@arm.com * Can easily define partial (hybrid) mocks, which are a cross of real 3113481Sgiacomo.travaglini@arm.com and mock objects. 3213481Sgiacomo.travaglini@arm.com * Handles functions of arbitrary types and overloaded functions. 3313481Sgiacomo.travaglini@arm.com * Comes with a rich set of matchers for validating function arguments. 3413481Sgiacomo.travaglini@arm.com * Uses an intuitive syntax for controlling the behavior of a mock. 3513481Sgiacomo.travaglini@arm.com * Does automatic verification of expectations (no record-and-replay needed). 3613481Sgiacomo.travaglini@arm.com * Allows arbitrary (partial) ordering constraints on 3713481Sgiacomo.travaglini@arm.com function calls to be expressed,. 3813481Sgiacomo.travaglini@arm.com * Lets a user extend it by defining new matchers and actions. 3913481Sgiacomo.travaglini@arm.com * Does not use exceptions. 4013481Sgiacomo.travaglini@arm.com * Is easy to learn and use. 4113481Sgiacomo.travaglini@arm.com 4213481Sgiacomo.travaglini@arm.comPlease see the project page above for more information as well as the 4313481Sgiacomo.travaglini@arm.commailing list for questions, discussions, and development. There is 4413481Sgiacomo.travaglini@arm.comalso an IRC channel on OFTC (irc.oftc.net) #gtest available. Please 4513481Sgiacomo.travaglini@arm.comjoin us! 4613481Sgiacomo.travaglini@arm.com 4713481Sgiacomo.travaglini@arm.comPlease note that code under [scripts/generator](scripts/generator/) is 4813481Sgiacomo.travaglini@arm.comfrom [cppclean](http://code.google.com/p/cppclean/) and released under 4913481Sgiacomo.travaglini@arm.comthe Apache License, which is different from Google Mock's license. 5013481Sgiacomo.travaglini@arm.com 5113481Sgiacomo.travaglini@arm.com## Getting Started ## 5213481Sgiacomo.travaglini@arm.com 5313481Sgiacomo.travaglini@arm.comIf you are new to the project, we suggest that you read the user 5413481Sgiacomo.travaglini@arm.comdocumentation in the following order: 5513481Sgiacomo.travaglini@arm.com 5613481Sgiacomo.travaglini@arm.com * Learn the [basics](../googletest/docs/Primer.md) of 5713481Sgiacomo.travaglini@arm.com Google Test, if you choose to use Google Mock with it (recommended). 5813481Sgiacomo.travaglini@arm.com * Read [Google Mock for Dummies](docs/ForDummies.md). 5913481Sgiacomo.travaglini@arm.com * Read the instructions below on how to build Google Mock. 6013481Sgiacomo.travaglini@arm.com 6113481Sgiacomo.travaglini@arm.comYou can also watch Zhanyong's [talk](http://www.youtube.com/watch?v=sYpCyLI47rM) on Google Mock's usage and implementation. 6213481Sgiacomo.travaglini@arm.com 6313481Sgiacomo.travaglini@arm.comOnce you understand the basics, check out the rest of the docs: 6413481Sgiacomo.travaglini@arm.com 6513481Sgiacomo.travaglini@arm.com * [CheatSheet](docs/CheatSheet.md) - all the commonly used stuff 6613481Sgiacomo.travaglini@arm.com at a glance. 6713481Sgiacomo.travaglini@arm.com * [CookBook](docs/CookBook.md) - recipes for getting things done, 6813481Sgiacomo.travaglini@arm.com including advanced techniques. 6913481Sgiacomo.travaglini@arm.com 7013481Sgiacomo.travaglini@arm.comIf you need help, please check the 7113481Sgiacomo.travaglini@arm.com[KnownIssues](docs/KnownIssues.md) and 7213481Sgiacomo.travaglini@arm.com[FrequentlyAskedQuestions](docs/FrequentlyAskedQuestions.md) before 7313481Sgiacomo.travaglini@arm.composting a question on the 7413481Sgiacomo.travaglini@arm.com[discussion group](http://groups.google.com/group/googlemock). 7513481Sgiacomo.travaglini@arm.com 7613481Sgiacomo.travaglini@arm.com 7713481Sgiacomo.travaglini@arm.com### Using Google Mock Without Google Test ### 7813481Sgiacomo.travaglini@arm.com 7913481Sgiacomo.travaglini@arm.comGoogle Mock is not a testing framework itself. Instead, it needs a 8013481Sgiacomo.travaglini@arm.comtesting framework for writing tests. Google Mock works seamlessly 8113481Sgiacomo.travaglini@arm.comwith [Google Test](http://code.google.com/p/googletest/), but 8213481Sgiacomo.travaglini@arm.comyou can also use it with [any C++ testing framework](googlemock/ForDummies.md#Using_Google_Mock_with_Any_Testing_Framework). 8313481Sgiacomo.travaglini@arm.com 8413481Sgiacomo.travaglini@arm.com### Requirements for End Users ### 8513481Sgiacomo.travaglini@arm.com 8613481Sgiacomo.travaglini@arm.comGoogle Mock is implemented on top of [Google Test]( 8713481Sgiacomo.travaglini@arm.comhttp://github.com/google/googletest/), and depends on it. 8813481Sgiacomo.travaglini@arm.comYou must use the bundled version of Google Test when using Google Mock. 8913481Sgiacomo.travaglini@arm.com 9013481Sgiacomo.travaglini@arm.comYou can also easily configure Google Mock to work with another testing 9113481Sgiacomo.travaglini@arm.comframework, although it will still need Google Test. Please read 9213481Sgiacomo.travaglini@arm.com["Using_Google_Mock_with_Any_Testing_Framework"]( 9313481Sgiacomo.travaglini@arm.com docs/ForDummies.md#Using_Google_Mock_with_Any_Testing_Framework) 9413481Sgiacomo.travaglini@arm.comfor instructions. 9513481Sgiacomo.travaglini@arm.com 9613481Sgiacomo.travaglini@arm.comGoogle Mock depends on advanced C++ features and thus requires a more 9713481Sgiacomo.travaglini@arm.commodern compiler. The following are needed to use Google Mock: 9813481Sgiacomo.travaglini@arm.com 9913481Sgiacomo.travaglini@arm.com#### Linux Requirements #### 10013481Sgiacomo.travaglini@arm.com 10113481Sgiacomo.travaglini@arm.com * GNU-compatible Make or "gmake" 10213481Sgiacomo.travaglini@arm.com * POSIX-standard shell 10313481Sgiacomo.travaglini@arm.com * POSIX(-2) Regular Expressions (regex.h) 10413481Sgiacomo.travaglini@arm.com * C++98-standard-compliant compiler (e.g. GCC 3.4 or newer) 10513481Sgiacomo.travaglini@arm.com 10613481Sgiacomo.travaglini@arm.com#### Windows Requirements #### 10713481Sgiacomo.travaglini@arm.com 10813481Sgiacomo.travaglini@arm.com * Microsoft Visual C++ 8.0 SP1 or newer 10913481Sgiacomo.travaglini@arm.com 11013481Sgiacomo.travaglini@arm.com#### Mac OS X Requirements #### 11113481Sgiacomo.travaglini@arm.com 11213481Sgiacomo.travaglini@arm.com * Mac OS X 10.4 Tiger or newer 11313481Sgiacomo.travaglini@arm.com * Developer Tools Installed 11413481Sgiacomo.travaglini@arm.com 11513481Sgiacomo.travaglini@arm.com### Requirements for Contributors ### 11613481Sgiacomo.travaglini@arm.com 11713481Sgiacomo.travaglini@arm.comWe welcome patches. If you plan to contribute a patch, you need to 11813481Sgiacomo.travaglini@arm.combuild Google Mock and its tests, which has further requirements: 11913481Sgiacomo.travaglini@arm.com 12013481Sgiacomo.travaglini@arm.com * Automake version 1.9 or newer 12113481Sgiacomo.travaglini@arm.com * Autoconf version 2.59 or newer 12213481Sgiacomo.travaglini@arm.com * Libtool / Libtoolize 12313481Sgiacomo.travaglini@arm.com * Python version 2.3 or newer (for running some of the tests and 12413481Sgiacomo.travaglini@arm.com re-generating certain source files from templates) 12513481Sgiacomo.travaglini@arm.com 12613481Sgiacomo.travaglini@arm.com### Building Google Mock ### 12713481Sgiacomo.travaglini@arm.com 12813481Sgiacomo.travaglini@arm.com#### Preparing to Build (Unix only) #### 12913481Sgiacomo.travaglini@arm.com 13013481Sgiacomo.travaglini@arm.comIf you are using a Unix system and plan to use the GNU Autotools build 13113481Sgiacomo.travaglini@arm.comsystem to build Google Mock (described below), you'll need to 13213481Sgiacomo.travaglini@arm.comconfigure it now. 13313481Sgiacomo.travaglini@arm.com 13413481Sgiacomo.travaglini@arm.comTo prepare the Autotools build system: 13513481Sgiacomo.travaglini@arm.com 13613481Sgiacomo.travaglini@arm.com cd googlemock 13713481Sgiacomo.travaglini@arm.com autoreconf -fvi 13813481Sgiacomo.travaglini@arm.com 13913481Sgiacomo.travaglini@arm.comTo build Google Mock and your tests that use it, you need to tell your 14013481Sgiacomo.travaglini@arm.combuild system where to find its headers and source files. The exact 14113481Sgiacomo.travaglini@arm.comway to do it depends on which build system you use, and is usually 14213481Sgiacomo.travaglini@arm.comstraightforward. 14313481Sgiacomo.travaglini@arm.com 14413481Sgiacomo.travaglini@arm.comThis section shows how you can integrate Google Mock into your 14513481Sgiacomo.travaglini@arm.comexisting build system. 14613481Sgiacomo.travaglini@arm.com 14713481Sgiacomo.travaglini@arm.comSuppose you put Google Mock in directory `${GMOCK_DIR}` and Google Test 14813481Sgiacomo.travaglini@arm.comin `${GTEST_DIR}` (the latter is `${GMOCK_DIR}/gtest` by default). To 14913481Sgiacomo.travaglini@arm.combuild Google Mock, create a library build target (or a project as 15013481Sgiacomo.travaglini@arm.comcalled by Visual Studio and Xcode) to compile 15113481Sgiacomo.travaglini@arm.com 15213481Sgiacomo.travaglini@arm.com ${GTEST_DIR}/src/gtest-all.cc and ${GMOCK_DIR}/src/gmock-all.cc 15313481Sgiacomo.travaglini@arm.com 15413481Sgiacomo.travaglini@arm.comwith 15513481Sgiacomo.travaglini@arm.com 15613481Sgiacomo.travaglini@arm.com ${GTEST_DIR}/include and ${GMOCK_DIR}/include 15713481Sgiacomo.travaglini@arm.com 15813481Sgiacomo.travaglini@arm.comin the system header search path, and 15913481Sgiacomo.travaglini@arm.com 16013481Sgiacomo.travaglini@arm.com ${GTEST_DIR} and ${GMOCK_DIR} 16113481Sgiacomo.travaglini@arm.com 16213481Sgiacomo.travaglini@arm.comin the normal header search path. Assuming a Linux-like system and gcc, 16313481Sgiacomo.travaglini@arm.comsomething like the following will do: 16413481Sgiacomo.travaglini@arm.com 16513481Sgiacomo.travaglini@arm.com g++ -isystem ${GTEST_DIR}/include -I${GTEST_DIR} \ 16613481Sgiacomo.travaglini@arm.com -isystem ${GMOCK_DIR}/include -I${GMOCK_DIR} \ 16713481Sgiacomo.travaglini@arm.com -pthread -c ${GTEST_DIR}/src/gtest-all.cc 16813481Sgiacomo.travaglini@arm.com g++ -isystem ${GTEST_DIR}/include -I${GTEST_DIR} \ 16913481Sgiacomo.travaglini@arm.com -isystem ${GMOCK_DIR}/include -I${GMOCK_DIR} \ 17013481Sgiacomo.travaglini@arm.com -pthread -c ${GMOCK_DIR}/src/gmock-all.cc 17113481Sgiacomo.travaglini@arm.com ar -rv libgmock.a gtest-all.o gmock-all.o 17213481Sgiacomo.travaglini@arm.com 17313481Sgiacomo.travaglini@arm.com(We need -pthread as Google Test and Google Mock use threads.) 17413481Sgiacomo.travaglini@arm.com 17513481Sgiacomo.travaglini@arm.comNext, you should compile your test source file with 17613481Sgiacomo.travaglini@arm.com${GTEST\_DIR}/include and ${GMOCK\_DIR}/include in the header search 17713481Sgiacomo.travaglini@arm.compath, and link it with gmock and any other necessary libraries: 17813481Sgiacomo.travaglini@arm.com 17913481Sgiacomo.travaglini@arm.com g++ -isystem ${GTEST_DIR}/include -isystem ${GMOCK_DIR}/include \ 18013481Sgiacomo.travaglini@arm.com -pthread path/to/your_test.cc libgmock.a -o your_test 18113481Sgiacomo.travaglini@arm.com 18213481Sgiacomo.travaglini@arm.comAs an example, the make/ directory contains a Makefile that you can 18313481Sgiacomo.travaglini@arm.comuse to build Google Mock on systems where GNU make is available 18413481Sgiacomo.travaglini@arm.com(e.g. Linux, Mac OS X, and Cygwin). It doesn't try to build Google 18513481Sgiacomo.travaglini@arm.comMock's own tests. Instead, it just builds the Google Mock library and 18613481Sgiacomo.travaglini@arm.coma sample test. You can use it as a starting point for your own build 18713481Sgiacomo.travaglini@arm.comscript. 18813481Sgiacomo.travaglini@arm.com 18913481Sgiacomo.travaglini@arm.comIf the default settings are correct for your environment, the 19013481Sgiacomo.travaglini@arm.comfollowing commands should succeed: 19113481Sgiacomo.travaglini@arm.com 19213481Sgiacomo.travaglini@arm.com cd ${GMOCK_DIR}/make 19313481Sgiacomo.travaglini@arm.com make 19413481Sgiacomo.travaglini@arm.com ./gmock_test 19513481Sgiacomo.travaglini@arm.com 19613481Sgiacomo.travaglini@arm.comIf you see errors, try to tweak the contents of 19713481Sgiacomo.travaglini@arm.com[make/Makefile](make/Makefile) to make them go away. 19813481Sgiacomo.travaglini@arm.com 19913481Sgiacomo.travaglini@arm.com### Windows ### 20013481Sgiacomo.travaglini@arm.com 20113481Sgiacomo.travaglini@arm.comThe msvc/2005 directory contains VC++ 2005 projects and the msvc/2010 20213481Sgiacomo.travaglini@arm.comdirectory contains VC++ 2010 projects for building Google Mock and 20313481Sgiacomo.travaglini@arm.comselected tests. 20413481Sgiacomo.travaglini@arm.com 20513481Sgiacomo.travaglini@arm.comChange to the appropriate directory and run "msbuild gmock.sln" to 20613481Sgiacomo.travaglini@arm.combuild the library and tests (or open the gmock.sln in the MSVC IDE). 20713481Sgiacomo.travaglini@arm.comIf you want to create your own project to use with Google Mock, you'll 20813481Sgiacomo.travaglini@arm.comhave to configure it to use the `gmock_config` propety sheet. For that: 20913481Sgiacomo.travaglini@arm.com 21013481Sgiacomo.travaglini@arm.com * Open the Property Manager window (View | Other Windows | Property Manager) 21113481Sgiacomo.travaglini@arm.com * Right-click on your project and select "Add Existing Property Sheet..." 21213481Sgiacomo.travaglini@arm.com * Navigate to `gmock_config.vsprops` or `gmock_config.props` and select it. 21313481Sgiacomo.travaglini@arm.com * In Project Properties | Configuration Properties | General | Additional 21413481Sgiacomo.travaglini@arm.com Include Directories, type <path to Google Mock>/include. 21513481Sgiacomo.travaglini@arm.com 21613481Sgiacomo.travaglini@arm.com### Tweaking Google Mock ### 21713481Sgiacomo.travaglini@arm.com 21813481Sgiacomo.travaglini@arm.comGoogle Mock can be used in diverse environments. The default 21913481Sgiacomo.travaglini@arm.comconfiguration may not work (or may not work well) out of the box in 22013481Sgiacomo.travaglini@arm.comsome environments. However, you can easily tweak Google Mock by 22113481Sgiacomo.travaglini@arm.comdefining control macros on the compiler command line. Generally, 22213481Sgiacomo.travaglini@arm.comthese macros are named like `GTEST_XYZ` and you define them to either 1 22313481Sgiacomo.travaglini@arm.comor 0 to enable or disable a certain feature. 22413481Sgiacomo.travaglini@arm.com 22513481Sgiacomo.travaglini@arm.comWe list the most frequently used macros below. For a complete list, 22613481Sgiacomo.travaglini@arm.comsee file [${GTEST\_DIR}/include/gtest/internal/gtest-port.h]( 22713481Sgiacomo.travaglini@arm.com../googletest/include/gtest/internal/gtest-port.h). 22813481Sgiacomo.travaglini@arm.com 22913481Sgiacomo.travaglini@arm.com### Choosing a TR1 Tuple Library ### 23013481Sgiacomo.travaglini@arm.com 23113481Sgiacomo.travaglini@arm.comGoogle Mock uses the C++ Technical Report 1 (TR1) tuple library 23213481Sgiacomo.travaglini@arm.comheavily. Unfortunately TR1 tuple is not yet widely available with all 23313481Sgiacomo.travaglini@arm.comcompilers. The good news is that Google Test 1.4.0+ implements a 23413481Sgiacomo.travaglini@arm.comsubset of TR1 tuple that's enough for Google Mock's need. Google Mock 23513481Sgiacomo.travaglini@arm.comwill automatically use that implementation when the compiler doesn't 23613481Sgiacomo.travaglini@arm.comprovide TR1 tuple. 23713481Sgiacomo.travaglini@arm.com 23813481Sgiacomo.travaglini@arm.comUsually you don't need to care about which tuple library Google Test 23913481Sgiacomo.travaglini@arm.comand Google Mock use. However, if your project already uses TR1 tuple, 24013481Sgiacomo.travaglini@arm.comyou need to tell Google Test and Google Mock to use the same TR1 tuple 24113481Sgiacomo.travaglini@arm.comlibrary the rest of your project uses, or the two tuple 24213481Sgiacomo.travaglini@arm.comimplementations will clash. To do that, add 24313481Sgiacomo.travaglini@arm.com 24413481Sgiacomo.travaglini@arm.com -DGTEST_USE_OWN_TR1_TUPLE=0 24513481Sgiacomo.travaglini@arm.com 24613481Sgiacomo.travaglini@arm.comto the compiler flags while compiling Google Test, Google Mock, and 24713481Sgiacomo.travaglini@arm.comyour tests. If you want to force Google Test and Google Mock to use 24813481Sgiacomo.travaglini@arm.comtheir own tuple library, just add 24913481Sgiacomo.travaglini@arm.com 25013481Sgiacomo.travaglini@arm.com -DGTEST_USE_OWN_TR1_TUPLE=1 25113481Sgiacomo.travaglini@arm.com 25213481Sgiacomo.travaglini@arm.comto the compiler flags instead. 25313481Sgiacomo.travaglini@arm.com 25413481Sgiacomo.travaglini@arm.comIf you want to use Boost's TR1 tuple library with Google Mock, please 25513481Sgiacomo.travaglini@arm.comrefer to the Boost website (http://www.boost.org/) for how to obtain 25613481Sgiacomo.travaglini@arm.comit and set it up. 25713481Sgiacomo.travaglini@arm.com 25813481Sgiacomo.travaglini@arm.com### As a Shared Library (DLL) ### 25913481Sgiacomo.travaglini@arm.com 26013481Sgiacomo.travaglini@arm.comGoogle Mock is compact, so most users can build and link it as a static 26113481Sgiacomo.travaglini@arm.comlibrary for the simplicity. Google Mock can be used as a DLL, but the 26213481Sgiacomo.travaglini@arm.comsame DLL must contain Google Test as well. See 26313481Sgiacomo.travaglini@arm.com[Google Test's README][gtest_readme] 26413481Sgiacomo.travaglini@arm.comfor instructions on how to set up necessary compiler settings. 26513481Sgiacomo.travaglini@arm.com 26613481Sgiacomo.travaglini@arm.com### Tweaking Google Mock ### 26713481Sgiacomo.travaglini@arm.com 26813481Sgiacomo.travaglini@arm.comMost of Google Test's control macros apply to Google Mock as well. 26913481Sgiacomo.travaglini@arm.comPlease see [Google Test's README][gtest_readme] for how to tweak them. 27013481Sgiacomo.travaglini@arm.com 27113481Sgiacomo.travaglini@arm.com### Upgrading from an Earlier Version ### 27213481Sgiacomo.travaglini@arm.com 27313481Sgiacomo.travaglini@arm.comWe strive to keep Google Mock releases backward compatible. 27413481Sgiacomo.travaglini@arm.comSometimes, though, we have to make some breaking changes for the 27513481Sgiacomo.travaglini@arm.comusers' long-term benefits. This section describes what you'll need to 27613481Sgiacomo.travaglini@arm.comdo if you are upgrading from an earlier version of Google Mock. 27713481Sgiacomo.travaglini@arm.com 27813481Sgiacomo.travaglini@arm.com#### Upgrading from 1.1.0 or Earlier #### 27913481Sgiacomo.travaglini@arm.com 28013481Sgiacomo.travaglini@arm.comYou may need to explicitly enable or disable Google Test's own TR1 28113481Sgiacomo.travaglini@arm.comtuple library. See the instructions in section "[Choosing a TR1 Tuple 28213481Sgiacomo.travaglini@arm.comLibrary](../googletest/#choosing-a-tr1-tuple-library)". 28313481Sgiacomo.travaglini@arm.com 28413481Sgiacomo.travaglini@arm.com#### Upgrading from 1.4.0 or Earlier #### 28513481Sgiacomo.travaglini@arm.com 28613481Sgiacomo.travaglini@arm.comOn platforms where the pthread library is available, Google Test and 28713481Sgiacomo.travaglini@arm.comGoogle Mock use it in order to be thread-safe. For this to work, you 28813481Sgiacomo.travaglini@arm.commay need to tweak your compiler and/or linker flags. Please see the 28913481Sgiacomo.travaglini@arm.com"[Multi-threaded Tests](../googletest#multi-threaded-tests 29013481Sgiacomo.travaglini@arm.com)" section in file Google Test's README for what you may need to do. 29113481Sgiacomo.travaglini@arm.com 29213481Sgiacomo.travaglini@arm.comIf you have custom matchers defined using `MatcherInterface` or 29313481Sgiacomo.travaglini@arm.com`MakePolymorphicMatcher()`, you'll need to update their definitions to 29413481Sgiacomo.travaglini@arm.comuse the new matcher API ( 29513481Sgiacomo.travaglini@arm.com[monomorphic](http://code.google.com/p/googlemock/wiki/CookBook#Writing_New_Monomorphic_Matchers), 29613481Sgiacomo.travaglini@arm.com[polymorphic](http://code.google.com/p/googlemock/wiki/CookBook#Writing_New_Polymorphic_Matchers)). 29713481Sgiacomo.travaglini@arm.comMatchers defined using `MATCHER()` or `MATCHER_P*()` aren't affected. 29813481Sgiacomo.travaglini@arm.com 29913481Sgiacomo.travaglini@arm.com### Developing Google Mock ### 30013481Sgiacomo.travaglini@arm.com 30113481Sgiacomo.travaglini@arm.comThis section discusses how to make your own changes to Google Mock. 30213481Sgiacomo.travaglini@arm.com 30313481Sgiacomo.travaglini@arm.com#### Testing Google Mock Itself #### 30413481Sgiacomo.travaglini@arm.com 30513481Sgiacomo.travaglini@arm.comTo make sure your changes work as intended and don't break existing 30613481Sgiacomo.travaglini@arm.comfunctionality, you'll want to compile and run Google Test's own tests. 30713481Sgiacomo.travaglini@arm.comFor that you'll need Autotools. First, make sure you have followed 30813481Sgiacomo.travaglini@arm.comthe instructions above to configure Google Mock. 30913481Sgiacomo.travaglini@arm.comThen, create a build output directory and enter it. Next, 31013481Sgiacomo.travaglini@arm.com 31113481Sgiacomo.travaglini@arm.com ${GMOCK_DIR}/configure # try --help for more info 31213481Sgiacomo.travaglini@arm.com 31313481Sgiacomo.travaglini@arm.comOnce you have successfully configured Google Mock, the build steps are 31413481Sgiacomo.travaglini@arm.comstandard for GNU-style OSS packages. 31513481Sgiacomo.travaglini@arm.com 31613481Sgiacomo.travaglini@arm.com make # Standard makefile following GNU conventions 31713481Sgiacomo.travaglini@arm.com make check # Builds and runs all tests - all should pass. 31813481Sgiacomo.travaglini@arm.com 31913481Sgiacomo.travaglini@arm.comNote that when building your project against Google Mock, you are building 32013481Sgiacomo.travaglini@arm.comagainst Google Test as well. There is no need to configure Google Test 32113481Sgiacomo.travaglini@arm.comseparately. 32213481Sgiacomo.travaglini@arm.com 32313481Sgiacomo.travaglini@arm.com#### Contributing a Patch #### 32413481Sgiacomo.travaglini@arm.com 32513481Sgiacomo.travaglini@arm.comWe welcome patches. 32613481Sgiacomo.travaglini@arm.comPlease read the [Developer's Guide](docs/DevGuide.md) 32713481Sgiacomo.travaglini@arm.comfor how you can contribute. In particular, make sure you have signed 32813481Sgiacomo.travaglini@arm.comthe Contributor License Agreement, or we won't be able to accept the 32913481Sgiacomo.travaglini@arm.compatch. 33013481Sgiacomo.travaglini@arm.com 33113481Sgiacomo.travaglini@arm.comHappy testing! 33213481Sgiacomo.travaglini@arm.com 33313481Sgiacomo.travaglini@arm.com[gtest_readme]: ../googletest/README.md "googletest" 334