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