blob: 3050ae773414c2fdac7b458260d47e176434fc5b [file] [log] [blame]
John Park33858a32018-09-28 23:05:48 -07001#ifndef AOS_GTEST_PROD_H_
2#define AOS_GTEST_PROD_H_
brians2fdfc072013-02-26 05:35:15 +00003
brians2fdfc072013-02-26 05:35:15 +00004// These macros replace gtest's FRIEND_TEST if the test is in a different
5// namespace than the code that needs to make it a friend.
6// Example:
7// foo.h:
8// namespace bla {
9// namespace testing {
10//
11// FORWARD_DECLARE_TEST_CASE(FooTest, Bar);
12//
13// } // namespace testing
14//
15// class Foo {
16// FRIEND_TEST_NAMESPACE(FooTest, Bar, testing);
17// };
18//
19// } // namespace bla
20// foo_test.cc:
21// namespace bla {
22// namespace testing {
23//
24// TEST(FooTest, Bar) {
25// access private members of Foo
26// }
27//
28// } // namespace testing
29// } // namespace bla
30#define FORWARD_DECLARE_TEST_CASE(test_case_name, test_name) \
31 class test_case_name##_##test_name##_Test;
32#define FRIEND_TEST_NAMESPACE(test_case_name, test_name, namespace_name) \
33 friend class namespace_name::test_case_name##_##test_name##_Test
34
Brian Silvermanea542292015-09-13 02:24:45 -040035// Copied from googletest's gtest_prod.h. See that file for documentation.
36#define FRIEND_TEST(test_case_name, test_name) \
37 friend class test_case_name##_##test_name##_Test
38
John Park33858a32018-09-28 23:05:48 -070039#endif // AOS_GTEST_PROD_H_