Preparation for including docs in round-trip with OSS. Manual review and merge docs internal-OSS
This commit is contained in:
		@@ -6,7 +6,9 @@
 | 
			
		||||
[](https://ci.appveyor.com/project/GoogleTestAppVeyor/googletest/branch/master)
 | 
			
		||||
 | 
			
		||||
### Summer Vacation
 | 
			
		||||
June 26, 2019 - July 20 2019 due to summer vacations there will be much reduced activity on Pull Requests and issues from the maintainers. 
 | 
			
		||||
 | 
			
		||||
June 26, 2019 - July 20 2019 due to summer vacations there will be much reduced
 | 
			
		||||
activity on Pull Requests and issues from the maintainers.
 | 
			
		||||
 | 
			
		||||
### Future Plans
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,206 +1,37 @@
 | 
			
		||||
## Google Mock ##
 | 
			
		||||
# Googletest Mocking (gMock) Framework
 | 
			
		||||
 | 
			
		||||
The Google C++ mocking framework.
 | 
			
		||||
### Overview
 | 
			
		||||
 | 
			
		||||
### Overview ###
 | 
			
		||||
 | 
			
		||||
Google's framework for writing and using C++ mock classes.
 | 
			
		||||
It can help you derive better designs of your system and write better tests.
 | 
			
		||||
Google's framework for writing and using C++ mock classes. It can help you
 | 
			
		||||
derive better designs of your system and write better tests.
 | 
			
		||||
 | 
			
		||||
It is inspired by:
 | 
			
		||||
 | 
			
		||||
  * [jMock](http://www.jmock.org/),
 | 
			
		||||
  * [EasyMock](http://www.easymock.org/), and
 | 
			
		||||
  * [Hamcrest](http://code.google.com/p/hamcrest/),
 | 
			
		||||
*   [jMock](http://www.jmock.org/),
 | 
			
		||||
*   [EasyMock](http://www.easymock.org/), and
 | 
			
		||||
*   [Hamcrest](http://code.google.com/p/hamcrest/),
 | 
			
		||||
 | 
			
		||||
and designed with C++'s specifics in mind.
 | 
			
		||||
 | 
			
		||||
Google mock:
 | 
			
		||||
gMock:
 | 
			
		||||
 | 
			
		||||
  * lets you create mock classes trivially using simple macros.
 | 
			
		||||
  * supports a rich set of matchers and actions.
 | 
			
		||||
  * handles unordered, partially ordered, or completely ordered expectations.
 | 
			
		||||
  * is extensible by users.
 | 
			
		||||
-   provides a declarative syntax for defining mocks,
 | 
			
		||||
-   can define partial (hybrid) mocks, which are a cross of real and mock
 | 
			
		||||
    objects,
 | 
			
		||||
-   handles functions of arbitrary types and overloaded functions,
 | 
			
		||||
-   comes with a rich set of matchers for validating function arguments,
 | 
			
		||||
-   uses an intuitive syntax for controlling the behavior of a mock,
 | 
			
		||||
-   does automatic verification of expectations (no record-and-replay needed),
 | 
			
		||||
-   allows arbitrary (partial) ordering constraints on function calls to be
 | 
			
		||||
    expressed,
 | 
			
		||||
-   lets a user extend it by defining new matchers and actions.
 | 
			
		||||
-   does not use exceptions, and
 | 
			
		||||
-   is easy to learn and use.
 | 
			
		||||
 | 
			
		||||
We hope you find it useful!
 | 
			
		||||
Please note that code under scripts/generator/ is from the [cppclean
 | 
			
		||||
project](http://code.google.com/p/cppclean/) and under the Apache
 | 
			
		||||
License, which is different from Google Mock's license.
 | 
			
		||||
 | 
			
		||||
### Features ###
 | 
			
		||||
 | 
			
		||||
  * Provides a declarative syntax for defining mocks.
 | 
			
		||||
  * Can easily define partial (hybrid) mocks, which are a cross of real
 | 
			
		||||
    and mock objects.
 | 
			
		||||
  * Handles functions of arbitrary types and overloaded functions.
 | 
			
		||||
  * Comes with a rich set of matchers for validating function arguments.
 | 
			
		||||
  * Uses an intuitive syntax for controlling the behavior of a mock.
 | 
			
		||||
  * Does automatic verification of expectations (no record-and-replay needed).
 | 
			
		||||
  * Allows arbitrary (partial) ordering constraints on
 | 
			
		||||
    function calls to be expressed,.
 | 
			
		||||
  * Lets a user extend it by defining new matchers and actions.
 | 
			
		||||
  * Does not use exceptions.
 | 
			
		||||
  * Is easy to learn and use.
 | 
			
		||||
 | 
			
		||||
Please see the project page above for more information as well as the
 | 
			
		||||
mailing list for questions, discussions, and development.  There is
 | 
			
		||||
also an IRC channel on OFTC (irc.oftc.net) #gtest available.  Please
 | 
			
		||||
join us!
 | 
			
		||||
 | 
			
		||||
Please note that code under [scripts/generator](scripts/generator/) is
 | 
			
		||||
from [cppclean](http://code.google.com/p/cppclean/) and released under
 | 
			
		||||
the Apache License, which is different from Google Mock's license.
 | 
			
		||||
 | 
			
		||||
## Getting Started ##
 | 
			
		||||
 | 
			
		||||
If you are new to the project, we suggest that you read the user
 | 
			
		||||
documentation in the following order:
 | 
			
		||||
 | 
			
		||||
  * Learn the [basics](../googletest/docs/primer.md) of
 | 
			
		||||
    Google Test, if you choose to use Google Mock with it (recommended).
 | 
			
		||||
  * Read [Google Mock for Dummies](../googlemock/docs/for_dummies.md).
 | 
			
		||||
  * Read the instructions below on how to build Google Mock.
 | 
			
		||||
 | 
			
		||||
You can also watch Zhanyong's [talk](http://www.youtube.com/watch?v=sYpCyLI47rM) on Google Mock's usage and implementation.
 | 
			
		||||
 | 
			
		||||
Once you understand the basics, check out the rest of the docs:
 | 
			
		||||
 | 
			
		||||
  * [CheatSheet](../googlemock/docs/cheat_sheet.md) - all the commonly used stuff
 | 
			
		||||
    at a glance.
 | 
			
		||||
  * [CookBook](../googlemock/docs/cook_book.md) - recipes for getting things done,
 | 
			
		||||
    including advanced techniques.
 | 
			
		||||
 | 
			
		||||
If you need help, please check the
 | 
			
		||||
[KnownIssues](docs/known_issues.md) and
 | 
			
		||||
[FrequentlyAskedQuestions](docs/frequently_asked_questions.md) before
 | 
			
		||||
posting a question on the
 | 
			
		||||
[discussion group](http://groups.google.com/group/googlemock).
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
### Using Google Mock Without Google Test ###
 | 
			
		||||
 | 
			
		||||
Google Mock is not a testing framework itself.  Instead, it needs a
 | 
			
		||||
testing framework for writing tests.  Google Mock works seamlessly
 | 
			
		||||
with [Google Test](https://github.com/google/googletest), but
 | 
			
		||||
you can also use it with [any C++ testing framework](../googlemock/docs/for_dummies.md#using-google-mock-with-any-testing-framework).
 | 
			
		||||
 | 
			
		||||
### Requirements for End Users ###
 | 
			
		||||
 | 
			
		||||
Google Mock is implemented on top of [Google Test](
 | 
			
		||||
http://github.com/google/googletest/), and depends on it.
 | 
			
		||||
You must use the bundled version of Google Test when using Google Mock.
 | 
			
		||||
 | 
			
		||||
You can also easily configure Google Mock to work with another testing
 | 
			
		||||
framework, although it will still need Google Test.  Please read
 | 
			
		||||
["Using_Google_Mock_with_Any_Testing_Framework"](
 | 
			
		||||
    ../googlemock/docs/for_dummies.md#using-google-mock-with-any-testing-framework)
 | 
			
		||||
for instructions.
 | 
			
		||||
 | 
			
		||||
Google Mock depends on advanced C++ features and thus requires a more
 | 
			
		||||
modern compiler. The following are needed to use Google Mock:
 | 
			
		||||
 | 
			
		||||
#### Linux Requirements ####
 | 
			
		||||
 | 
			
		||||
  * GNU-compatible Make or "gmake"
 | 
			
		||||
  * POSIX-standard shell
 | 
			
		||||
  * POSIX(-2) Regular Expressions (regex.h)
 | 
			
		||||
  * C++98-standard-compliant compiler (e.g. GCC 3.4 or newer)
 | 
			
		||||
 | 
			
		||||
#### Windows Requirements ####
 | 
			
		||||
 | 
			
		||||
  * Microsoft Visual C++ 8.0 SP1 or newer
 | 
			
		||||
 | 
			
		||||
#### Mac OS X Requirements ####
 | 
			
		||||
 | 
			
		||||
  * Mac OS X 10.4 Tiger or newer
 | 
			
		||||
  * Developer Tools Installed
 | 
			
		||||
 | 
			
		||||
### Requirements for Contributors ###
 | 
			
		||||
 | 
			
		||||
We welcome patches. If you plan to contribute a patch, you need to
 | 
			
		||||
build Google Mock and its tests, which has further requirements:
 | 
			
		||||
 | 
			
		||||
  * Automake version 1.9 or newer
 | 
			
		||||
  * Autoconf version 2.59 or newer
 | 
			
		||||
  * Libtool / Libtoolize
 | 
			
		||||
  * Python version 2.3 or newer (for running some of the tests and
 | 
			
		||||
    re-generating certain source files from templates)
 | 
			
		||||
 | 
			
		||||
### Building Google Mock ###
 | 
			
		||||
 | 
			
		||||
#### Using CMake ####
 | 
			
		||||
 | 
			
		||||
If you have CMake available, it is recommended that you follow the
 | 
			
		||||
[build instructions][gtest_cmakebuild]
 | 
			
		||||
as described for Google Test.
 | 
			
		||||
 | 
			
		||||
If are using Google Mock with an
 | 
			
		||||
existing CMake project, the section
 | 
			
		||||
[Incorporating Into An Existing CMake Project][gtest_incorpcmake]
 | 
			
		||||
may be of particular interest.
 | 
			
		||||
To make it work for Google Mock you will need to change
 | 
			
		||||
 | 
			
		||||
    target_link_libraries(example gtest_main)
 | 
			
		||||
 | 
			
		||||
to
 | 
			
		||||
 | 
			
		||||
    target_link_libraries(example gmock_main)
 | 
			
		||||
 | 
			
		||||
This works because `gmock_main` library is compiled with Google Test.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
### Tweaking Google Mock ###
 | 
			
		||||
 | 
			
		||||
Google Mock can be used in diverse environments.  The default
 | 
			
		||||
configuration may not work (or may not work well) out of the box in
 | 
			
		||||
some environments.  However, you can easily tweak Google Mock by
 | 
			
		||||
defining control macros on the compiler command line.  Generally,
 | 
			
		||||
these macros are named like `GTEST_XYZ` and you define them to either 1
 | 
			
		||||
or 0 to enable or disable a certain feature.
 | 
			
		||||
 | 
			
		||||
We list the most frequently used macros below.  For a complete list,
 | 
			
		||||
see file [${GTEST\_DIR}/include/gtest/internal/gtest-port.h](
 | 
			
		||||
../googletest/include/gtest/internal/gtest-port.h).
 | 
			
		||||
 | 
			
		||||
### As a Shared Library (DLL) ###
 | 
			
		||||
 | 
			
		||||
Google Mock is compact, so most users can build and link it as a static
 | 
			
		||||
library for the simplicity.  Google Mock can be used as a DLL, but the
 | 
			
		||||
same DLL must contain Google Test as well.  See
 | 
			
		||||
[Google Test's README][gtest_readme]
 | 
			
		||||
for instructions on how to set up necessary compiler settings.
 | 
			
		||||
 | 
			
		||||
### Tweaking Google Mock ###
 | 
			
		||||
 | 
			
		||||
Most of Google Test's control macros apply to Google Mock as well.
 | 
			
		||||
Please see [Google Test's README][gtest_readme] for how to tweak them.
 | 
			
		||||
 | 
			
		||||
### Upgrading from an Earlier Version ###
 | 
			
		||||
 | 
			
		||||
We strive to keep Google Mock releases backward compatible.
 | 
			
		||||
Sometimes, though, we have to make some breaking changes for the
 | 
			
		||||
users' long-term benefits.  This section describes what you'll need to
 | 
			
		||||
do if you are upgrading from an earlier version of Google Mock.
 | 
			
		||||
 | 
			
		||||
#### Upgrading from 1.1.0 or Earlier ####
 | 
			
		||||
 | 
			
		||||
You may need to explicitly enable or disable Google Test's own TR1
 | 
			
		||||
tuple library.  See the instructions in section "[Choosing a TR1 Tuple
 | 
			
		||||
Library](#choosing-a-tr1-tuple-library)".
 | 
			
		||||
 | 
			
		||||
#### Upgrading from 1.4.0 or Earlier ####
 | 
			
		||||
 | 
			
		||||
On platforms where the pthread library is available, Google Test and
 | 
			
		||||
Google Mock use it in order to be thread-safe.  For this to work, you
 | 
			
		||||
may need to tweak your compiler and/or linker flags.  Please see the
 | 
			
		||||
"[Multi-threaded Tests](../googletest/README.md#multi-threaded-tests)" section in file Google Test's README for what you may need to do.
 | 
			
		||||
 | 
			
		||||
If you have custom matchers defined using `MatcherInterface` or
 | 
			
		||||
`MakePolymorphicMatcher()`, you'll need to update their definitions to
 | 
			
		||||
use the new matcher API (
 | 
			
		||||
[monomorphic](./docs/cook_book.md#writing-new-monomorphic-matchers),
 | 
			
		||||
[polymorphic](./docs/cook_book.md#writing-new-polymorphic-matchers)).
 | 
			
		||||
Matchers defined using `MATCHER()` or `MATCHER_P*()` aren't affected.
 | 
			
		||||
 | 
			
		||||
Happy testing!
 | 
			
		||||
 | 
			
		||||
[gtest_readme]: ../googletest/README.md "googletest"
 | 
			
		||||
[gtest_cmakebuild]:  ../googletest/README.md#using-cmake "Using CMake"
 | 
			
		||||
[gtest_incorpcmake]: ../googletest/README.md#incorporating-into-an-existing-cmake-project "Incorporating Into An Existing CMake Project"
 | 
			
		||||
Google Mock is a part of
 | 
			
		||||
[Google Test C++ testing framework](http://github.com/google/googletest/) and a
 | 
			
		||||
subject to the same requirements.
 | 
			
		||||
 
 | 
			
		||||
@@ -261,7 +261,7 @@ line number to jump right to the failed expectation.
 | 
			
		||||
**Tip 2:** If your mock objects are never deleted, the final verification won't
 | 
			
		||||
happen. Therefore it's a good idea to turn on the heap checker in your tests
 | 
			
		||||
when you allocate mocks on the heap. You get that automatically if you use the
 | 
			
		||||
`gunit_main` library already.
 | 
			
		||||
`gtest_main` library already.
 | 
			
		||||
 | 
			
		||||
**Important note:** gMock requires expectations to be set **before** the mock
 | 
			
		||||
functions are called, otherwise the behavior is **undefined**. In particular,
 | 
			
		||||
 
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -1,7 +1,7 @@
 | 
			
		||||
# Googletest Samples
 | 
			
		||||
# Googletest Samples {#samples}
 | 
			
		||||
 | 
			
		||||
If you're like us, you'd like to look at [googletest
 | 
			
		||||
samples.](https://github.com/google/googletest/tree/master/googletest/samples)
 | 
			
		||||
If you're like us, you'd like to look at
 | 
			
		||||
[googletest samples.](https://github.com/google/googletest/tree/master/googletest/samples)
 | 
			
		||||
The sample directory has a number of well-commented samples showing how to use a
 | 
			
		||||
variety of googletest features.
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user