1 /*
2  *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3  *
4  *  Use of this source code is governed by a BSD-style license
5  *  that can be found in the LICENSE file in the root of the source
6  *  tree. An additional intellectual property rights grant can be found
7  *  in the file PATENTS.  All contributing project authors may
8  *  be found in the AUTHORS file in the root of the source tree.
9  */
10 
11 #ifndef WEBRTC_TEST_TESTSUPPORT_GTEST_PROD_UTIL_H_
12 #define WEBRTC_TEST_TESTSUPPORT_GTEST_PROD_UTIL_H_
13 
14 // Define our own version of FRIEND_TEST here rather than including
15 // gtest_prod.h to avoid depending on any part of GTest in production code.
16 #define FRIEND_TEST_WEBRTC(test_case_name, test_name)\
17 friend class test_case_name##_##test_name##_Test
18 
19 // This file is a plain copy of Chromium's base/gtest_prod_util.h.
20 //
21 // This is a wrapper for gtest's FRIEND_TEST macro that friends
22 // test with all possible prefixes. This is very helpful when changing the test
23 // prefix, because the friend declarations don't need to be updated.
24 //
25 // Example usage:
26 //
27 // class MyClass {
28 //  private:
29 //   void MyMethod();
30 //   FRIEND_TEST_ALL_PREFIXES(MyClassTest, MyMethod);
31 // };
32 #define FRIEND_TEST_ALL_PREFIXES(test_case_name, test_name) \
33   FRIEND_TEST_WEBRTC(test_case_name, test_name); \
34   FRIEND_TEST_WEBRTC(test_case_name, DISABLED_##test_name); \
35   FRIEND_TEST_WEBRTC(test_case_name, FLAKY_##test_name); \
36   FRIEND_TEST_WEBRTC(test_case_name, FAILS_##test_name)
37 
38 #endif  // WEBRTC_TEST_TESTSUPPORT_GTEST_PROD_UTIL_H_
39