tesseract v5.3.3.20231005
gmock-pp_test.cc
Go to the documentation of this file.
2
3// Used to test MSVC treating __VA_ARGS__ with a comma in it as one value
4#define GMOCK_TEST_REPLACE_comma_WITH_COMMA_I_comma ,
5#define GMOCK_TEST_REPLACE_comma_WITH_COMMA(x) \
6 GMOCK_PP_CAT(GMOCK_TEST_REPLACE_comma_WITH_COMMA_I_, x)
7
8// Static assertions.
9namespace testing {
10namespace internal {
11namespace gmockpp {
12
13static_assert(GMOCK_PP_CAT(1, 4) == 14, "");
14static_assert(GMOCK_PP_INTERNAL_INTERNAL_16TH(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
15 12, 13, 14, 15, 16, 17, 18) == 16,
16 "");
17static_assert(GMOCK_PP_NARG() == 1, "");
18static_assert(GMOCK_PP_NARG(x) == 1, "");
19static_assert(GMOCK_PP_NARG(x, y) == 2, "");
20static_assert(GMOCK_PP_NARG(x, y, z) == 3, "");
21static_assert(GMOCK_PP_NARG(x, y, z, w) == 4, "");
22static_assert(!GMOCK_PP_HAS_COMMA(), "");
23static_assert(GMOCK_PP_HAS_COMMA(b, ), "");
24static_assert(!GMOCK_PP_HAS_COMMA((, )), "");
26 "");
27static_assert(
29 "");
30static_assert(!GMOCK_PP_IS_EMPTY(, ), "");
31static_assert(!GMOCK_PP_IS_EMPTY(a), "");
32static_assert(!GMOCK_PP_IS_EMPTY(()), "");
33static_assert(GMOCK_PP_IF(1, 1, 2) == 1, "");
34static_assert(GMOCK_PP_IF(0, 1, 2) == 2, "");
35static_assert(GMOCK_PP_NARG0(x) == 1, "");
36static_assert(GMOCK_PP_NARG0(x, y) == 2, "");
37static_assert(GMOCK_PP_HEAD(1) == 1, "");
38static_assert(GMOCK_PP_HEAD(1, 2) == 1, "");
39static_assert(GMOCK_PP_HEAD(1, 2, 3) == 1, "");
40static_assert(GMOCK_PP_TAIL(1, 2) == 2, "");
41static_assert(GMOCK_PP_HEAD(GMOCK_PP_TAIL(1, 2, 3)) == 2, "");
42static_assert(!GMOCK_PP_IS_BEGIN_PARENS(sss), "");
43static_assert(!GMOCK_PP_IS_BEGIN_PARENS(sss()), "");
44static_assert(!GMOCK_PP_IS_BEGIN_PARENS(sss() sss), "");
45static_assert(GMOCK_PP_IS_BEGIN_PARENS((sss)), "");
46static_assert(GMOCK_PP_IS_BEGIN_PARENS((sss)ss), "");
47static_assert(!GMOCK_PP_IS_ENCLOSED_PARENS(sss), "");
48static_assert(!GMOCK_PP_IS_ENCLOSED_PARENS(sss()), "");
49static_assert(!GMOCK_PP_IS_ENCLOSED_PARENS(sss() sss), "");
50static_assert(!GMOCK_PP_IS_ENCLOSED_PARENS((sss)ss), "");
51static_assert(GMOCK_PP_REMOVE_PARENS((1 + 1)) * 2 == 3, "");
52static_assert(GMOCK_PP_INC(4) == 5, "");
53
54template <class... Args>
55struct Test {
56 static constexpr int kArgs = sizeof...(Args);
57};
58#define GMOCK_PP_INTERNAL_TYPE_TEST(_i, _Data, _element) \
59 GMOCK_PP_COMMA_IF(_i) _element
61 (int, float, double, char))>::kArgs == 4,
62 "");
63#define GMOCK_PP_INTERNAL_VAR_TEST_1(_x) 1
64#define GMOCK_PP_INTERNAL_VAR_TEST_2(_x, _y) 2
65#define GMOCK_PP_INTERNAL_VAR_TEST_3(_x, _y, _z) 3
66
67#define GMOCK_PP_INTERNAL_VAR_TEST(...) \
68 GMOCK_PP_VARIADIC_CALL(GMOCK_PP_INTERNAL_VAR_TEST_, __VA_ARGS__)
69static_assert(GMOCK_PP_INTERNAL_VAR_TEST(x, y) == 2, "");
70static_assert(GMOCK_PP_INTERNAL_VAR_TEST(silly) == 1, "");
71static_assert(GMOCK_PP_INTERNAL_VAR_TEST(x, y, z) == 3, "");
72
73// TODO(iserna): The following asserts fail in --config=lexan.
74#define GMOCK_PP_INTERNAL_IS_EMPTY_TEST_1
76static_assert(GMOCK_PP_IS_EMPTY(), "");
77static_assert(GMOCK_PP_IS_ENCLOSED_PARENS((sss)), "");
78static_assert(GMOCK_PP_IS_EMPTY(GMOCK_PP_TAIL(1)), "");
79static_assert(GMOCK_PP_NARG0() == 0, "");
80
81} // namespace gmockpp
82} // namespace internal
83} // namespace testing
#define GMOCK_PP_NARG0(...)
Definition: gmock-pp.h:110
#define GMOCK_PP_CAT(_1, _2)
Definition: gmock-pp.h:5
#define GMOCK_PP_IS_ENCLOSED_PARENS(...)
Definition: gmock-pp.h:120
#define GMOCK_PP_TAIL(...)
Definition: gmock-pp.h:44
#define GMOCK_PP_IS_EMPTY(...)
Definition: gmock-pp.h:79
#define GMOCK_PP_REMOVE_PARENS(...)
Definition: gmock-pp.h:125
#define GMOCK_PP_IS_BEGIN_PARENS(...)
Definition: gmock-pp.h:115
#define GMOCK_PP_IF(_Cond, _Then, _Else)
Definition: gmock-pp.h:86
#define GMOCK_PP_NARG(...)
Definition: gmock-pp.h:29
#define GMOCK_PP_HAS_COMMA(...)
Definition: gmock-pp.h:35
#define GMOCK_PP_FOR_EACH(_Macro, _Data, _Tuple)
Definition: gmock-pp.h:131
#define GMOCK_PP_INC(_i)
Definition: gmock-pp.h:144
#define GMOCK_PP_INTERNAL_INTERNAL_16TH(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, ...)
Definition: gmock-pp.h:167
#define GMOCK_PP_HEAD(...)
Definition: gmock-pp.h:40
#define GMOCK_TEST_REPLACE_comma_WITH_COMMA(x)
Definition: gmock-pp_test.cc:5
#define GMOCK_PP_INTERNAL_IS_EMPTY_TEST_1
#define GMOCK_PP_INTERNAL_TYPE_TEST(_i, _Data, _element)
#define GMOCK_PP_INTERNAL_VAR_TEST(...)
Uncopyable z
const double y