This page lists all documentation wiki pages for Google Mock **(the SVN trunk version)**
- **if you use a released version of Google Mock, please read the documentation for that specific version instead.**

  * [ForDummies](V1_7_ForDummies.md) -- start here if you are new to Google Mock.
  * [CheatSheet](V1_7_CheatSheet.md) -- a quick reference.
  * [CookBook](V1_7_CookBook.md) -- recipes for doing various tasks using Google Mock.
  * [FrequentlyAskedQuestions](V1_7_FrequentlyAskedQuestions.md) -- check here before asking a question on the mailing list.

To contribute code to Google Mock, read:

  * [DevGuide](DevGuide.md) -- read this _before_ writing your first patch.
  * [Pump Manual](http://code.google.com/p/googletest/wiki/PumpManual) -- how we generate some of Google Mock's source files.