1e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// Copyright 2006, Google Inc.
2e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// All rights reserved.
3e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao//
4e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// Redistribution and use in source and binary forms, with or without
5e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// modification, are permitted provided that the following conditions are
6e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// met:
7e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao//
8e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao//     * Redistributions of source code must retain the above copyright
9e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// notice, this list of conditions and the following disclaimer.
10e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao//     * Redistributions in binary form must reproduce the above
11e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// copyright notice, this list of conditions and the following disclaimer
12e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// in the documentation and/or other materials provided with the
13e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// distribution.
14e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao//     * Neither the name of Google Inc. nor the names of its
15e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// contributors may be used to endorse or promote products derived from
16e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// this software without specific prior written permission.
17e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao//
18e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao//
30e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// Author: wan@google.com (Zhanyong Wan)
31e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao//
32e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// Google C++ Testing Framework definitions useful in production code.
33e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao
34e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao#ifndef GTEST_INCLUDE_GTEST_GTEST_PROD_H_
35e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao#define GTEST_INCLUDE_GTEST_GTEST_PROD_H_
36e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao
37e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// When you need to test the private or protected members of a class,
38e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// use the FRIEND_TEST macro to declare your tests as friends of the
39e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// class.  For example:
40e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao//
41e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// class MyClass {
42e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao//  private:
43e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao//   void MyMethod();
44e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao//   FRIEND_TEST(MyClassTest, MyMethod);
45e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// };
46e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao//
47e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// class MyClassTest : public testing::Test {
48e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao//   // ...
49e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// };
50e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao//
51e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// TEST_F(MyClassTest, MyMethod) {
52e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao//   // Can call MyClass::MyMethod() here.
53e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao// }
54e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao
55e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao#define FRIEND_TEST(test_case_name, test_name)\
56e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liaofriend class test_case_name##_##test_name##_Test
57e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao
58e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao#endif  // GTEST_INCLUDE_GTEST_GTEST_PROD_H_
59