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