106f32e7eSjoerg // Copyright 2006, Google Inc.
206f32e7eSjoerg // All rights reserved.
306f32e7eSjoerg //
406f32e7eSjoerg // Redistribution and use in source and binary forms, with or without
506f32e7eSjoerg // modification, are permitted provided that the following conditions are
606f32e7eSjoerg // met:
706f32e7eSjoerg //
806f32e7eSjoerg //     * Redistributions of source code must retain the above copyright
906f32e7eSjoerg // notice, this list of conditions and the following disclaimer.
1006f32e7eSjoerg //     * Redistributions in binary form must reproduce the above
1106f32e7eSjoerg // copyright notice, this list of conditions and the following disclaimer
1206f32e7eSjoerg // in the documentation and/or other materials provided with the
1306f32e7eSjoerg // distribution.
1406f32e7eSjoerg //     * Neither the name of Google Inc. nor the names of its
1506f32e7eSjoerg // contributors may be used to endorse or promote products derived from
1606f32e7eSjoerg // this software without specific prior written permission.
1706f32e7eSjoerg //
1806f32e7eSjoerg // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1906f32e7eSjoerg // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
2006f32e7eSjoerg // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
2106f32e7eSjoerg // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
2206f32e7eSjoerg // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
2306f32e7eSjoerg // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
2406f32e7eSjoerg // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2506f32e7eSjoerg // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2606f32e7eSjoerg // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2706f32e7eSjoerg // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
2806f32e7eSjoerg // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2906f32e7eSjoerg 
30*da58b97aSjoerg // This file is AUTOMATICALLY GENERATED on 01/02/2019 by command
3106f32e7eSjoerg // 'gen_gtest_pred_impl.py 5'.  DO NOT EDIT BY HAND!
3206f32e7eSjoerg //
3306f32e7eSjoerg // Implements a family of generic predicate assertion macros.
34*da58b97aSjoerg // GOOGLETEST_CM0001 DO NOT DELETE
3506f32e7eSjoerg 
3606f32e7eSjoerg #ifndef GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
3706f32e7eSjoerg #define GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
3806f32e7eSjoerg 
39*da58b97aSjoerg #include "gtest/gtest.h"
40*da58b97aSjoerg 
41*da58b97aSjoerg namespace testing {
4206f32e7eSjoerg 
4306f32e7eSjoerg // This header implements a family of generic predicate assertion
4406f32e7eSjoerg // macros:
4506f32e7eSjoerg //
4606f32e7eSjoerg //   ASSERT_PRED_FORMAT1(pred_format, v1)
4706f32e7eSjoerg //   ASSERT_PRED_FORMAT2(pred_format, v1, v2)
4806f32e7eSjoerg //   ...
4906f32e7eSjoerg //
5006f32e7eSjoerg // where pred_format is a function or functor that takes n (in the
5106f32e7eSjoerg // case of ASSERT_PRED_FORMATn) values and their source expression
5206f32e7eSjoerg // text, and returns a testing::AssertionResult.  See the definition
5306f32e7eSjoerg // of ASSERT_EQ in gtest.h for an example.
5406f32e7eSjoerg //
5506f32e7eSjoerg // If you don't care about formatting, you can use the more
5606f32e7eSjoerg // restrictive version:
5706f32e7eSjoerg //
5806f32e7eSjoerg //   ASSERT_PRED1(pred, v1)
5906f32e7eSjoerg //   ASSERT_PRED2(pred, v1, v2)
6006f32e7eSjoerg //   ...
6106f32e7eSjoerg //
6206f32e7eSjoerg // where pred is an n-ary function or functor that returns bool,
6306f32e7eSjoerg // and the values v1, v2, ..., must support the << operator for
6406f32e7eSjoerg // streaming to std::ostream.
6506f32e7eSjoerg //
6606f32e7eSjoerg // We also define the EXPECT_* variations.
6706f32e7eSjoerg //
6806f32e7eSjoerg // For now we only support predicates whose arity is at most 5.
6906f32e7eSjoerg // Please email googletestframework@googlegroups.com if you need
7006f32e7eSjoerg // support for higher arities.
7106f32e7eSjoerg 
7206f32e7eSjoerg // GTEST_ASSERT_ is the basic statement to which all of the assertions
7306f32e7eSjoerg // in this file reduce.  Don't use this in your code.
7406f32e7eSjoerg 
7506f32e7eSjoerg #define GTEST_ASSERT_(expression, on_failure) \
7606f32e7eSjoerg   GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
7706f32e7eSjoerg   if (const ::testing::AssertionResult gtest_ar = (expression)) \
7806f32e7eSjoerg     ; \
7906f32e7eSjoerg   else \
8006f32e7eSjoerg     on_failure(gtest_ar.failure_message())
8106f32e7eSjoerg 
8206f32e7eSjoerg 
8306f32e7eSjoerg // Helper function for implementing {EXPECT|ASSERT}_PRED1.  Don't use
8406f32e7eSjoerg // this in your code.
8506f32e7eSjoerg template <typename Pred,
8606f32e7eSjoerg           typename T1>
AssertPred1Helper(const char * pred_text,const char * e1,Pred pred,const T1 & v1)8706f32e7eSjoerg AssertionResult AssertPred1Helper(const char* pred_text,
8806f32e7eSjoerg                                   const char* e1,
8906f32e7eSjoerg                                   Pred pred,
9006f32e7eSjoerg                                   const T1& v1) {
9106f32e7eSjoerg   if (pred(v1)) return AssertionSuccess();
9206f32e7eSjoerg 
93*da58b97aSjoerg   return AssertionFailure()
94*da58b97aSjoerg          << pred_text << "(" << e1 << ") evaluates to false, where"
95*da58b97aSjoerg          << "\n"
96*da58b97aSjoerg          << e1 << " evaluates to " << ::testing::PrintToString(v1);
9706f32e7eSjoerg }
9806f32e7eSjoerg 
9906f32e7eSjoerg // Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT1.
10006f32e7eSjoerg // Don't use this in your code.
10106f32e7eSjoerg #define GTEST_PRED_FORMAT1_(pred_format, v1, on_failure)\
10206f32e7eSjoerg   GTEST_ASSERT_(pred_format(#v1, v1), \
10306f32e7eSjoerg                 on_failure)
10406f32e7eSjoerg 
10506f32e7eSjoerg // Internal macro for implementing {EXPECT|ASSERT}_PRED1.  Don't use
10606f32e7eSjoerg // this in your code.
10706f32e7eSjoerg #define GTEST_PRED1_(pred, v1, on_failure)\
10806f32e7eSjoerg   GTEST_ASSERT_(::testing::AssertPred1Helper(#pred, \
10906f32e7eSjoerg                                              #v1, \
11006f32e7eSjoerg                                              pred, \
11106f32e7eSjoerg                                              v1), on_failure)
11206f32e7eSjoerg 
11306f32e7eSjoerg // Unary predicate assertion macros.
11406f32e7eSjoerg #define EXPECT_PRED_FORMAT1(pred_format, v1) \
11506f32e7eSjoerg   GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_NONFATAL_FAILURE_)
11606f32e7eSjoerg #define EXPECT_PRED1(pred, v1) \
11706f32e7eSjoerg   GTEST_PRED1_(pred, v1, GTEST_NONFATAL_FAILURE_)
11806f32e7eSjoerg #define ASSERT_PRED_FORMAT1(pred_format, v1) \
11906f32e7eSjoerg   GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_FATAL_FAILURE_)
12006f32e7eSjoerg #define ASSERT_PRED1(pred, v1) \
12106f32e7eSjoerg   GTEST_PRED1_(pred, v1, GTEST_FATAL_FAILURE_)
12206f32e7eSjoerg 
12306f32e7eSjoerg 
12406f32e7eSjoerg 
12506f32e7eSjoerg // Helper function for implementing {EXPECT|ASSERT}_PRED2.  Don't use
12606f32e7eSjoerg // this in your code.
12706f32e7eSjoerg template <typename Pred,
12806f32e7eSjoerg           typename T1,
12906f32e7eSjoerg           typename T2>
AssertPred2Helper(const char * pred_text,const char * e1,const char * e2,Pred pred,const T1 & v1,const T2 & v2)13006f32e7eSjoerg AssertionResult AssertPred2Helper(const char* pred_text,
13106f32e7eSjoerg                                   const char* e1,
13206f32e7eSjoerg                                   const char* e2,
13306f32e7eSjoerg                                   Pred pred,
13406f32e7eSjoerg                                   const T1& v1,
13506f32e7eSjoerg                                   const T2& v2) {
13606f32e7eSjoerg   if (pred(v1, v2)) return AssertionSuccess();
13706f32e7eSjoerg 
138*da58b97aSjoerg   return AssertionFailure()
139*da58b97aSjoerg          << pred_text << "(" << e1 << ", " << e2
140*da58b97aSjoerg          << ") evaluates to false, where"
141*da58b97aSjoerg          << "\n"
142*da58b97aSjoerg          << e1 << " evaluates to " << ::testing::PrintToString(v1) << "\n"
143*da58b97aSjoerg          << e2 << " evaluates to " << ::testing::PrintToString(v2);
14406f32e7eSjoerg }
14506f32e7eSjoerg 
14606f32e7eSjoerg // Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT2.
14706f32e7eSjoerg // Don't use this in your code.
14806f32e7eSjoerg #define GTEST_PRED_FORMAT2_(pred_format, v1, v2, on_failure)\
14906f32e7eSjoerg   GTEST_ASSERT_(pred_format(#v1, #v2, v1, v2), \
15006f32e7eSjoerg                 on_failure)
15106f32e7eSjoerg 
15206f32e7eSjoerg // Internal macro for implementing {EXPECT|ASSERT}_PRED2.  Don't use
15306f32e7eSjoerg // this in your code.
15406f32e7eSjoerg #define GTEST_PRED2_(pred, v1, v2, on_failure)\
15506f32e7eSjoerg   GTEST_ASSERT_(::testing::AssertPred2Helper(#pred, \
15606f32e7eSjoerg                                              #v1, \
15706f32e7eSjoerg                                              #v2, \
15806f32e7eSjoerg                                              pred, \
15906f32e7eSjoerg                                              v1, \
16006f32e7eSjoerg                                              v2), on_failure)
16106f32e7eSjoerg 
16206f32e7eSjoerg // Binary predicate assertion macros.
16306f32e7eSjoerg #define EXPECT_PRED_FORMAT2(pred_format, v1, v2) \
16406f32e7eSjoerg   GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_NONFATAL_FAILURE_)
16506f32e7eSjoerg #define EXPECT_PRED2(pred, v1, v2) \
16606f32e7eSjoerg   GTEST_PRED2_(pred, v1, v2, GTEST_NONFATAL_FAILURE_)
16706f32e7eSjoerg #define ASSERT_PRED_FORMAT2(pred_format, v1, v2) \
16806f32e7eSjoerg   GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_FATAL_FAILURE_)
16906f32e7eSjoerg #define ASSERT_PRED2(pred, v1, v2) \
17006f32e7eSjoerg   GTEST_PRED2_(pred, v1, v2, GTEST_FATAL_FAILURE_)
17106f32e7eSjoerg 
17206f32e7eSjoerg 
17306f32e7eSjoerg 
17406f32e7eSjoerg // Helper function for implementing {EXPECT|ASSERT}_PRED3.  Don't use
17506f32e7eSjoerg // this in your code.
17606f32e7eSjoerg template <typename Pred,
17706f32e7eSjoerg           typename T1,
17806f32e7eSjoerg           typename T2,
17906f32e7eSjoerg           typename T3>
AssertPred3Helper(const char * pred_text,const char * e1,const char * e2,const char * e3,Pred pred,const T1 & v1,const T2 & v2,const T3 & v3)18006f32e7eSjoerg AssertionResult AssertPred3Helper(const char* pred_text,
18106f32e7eSjoerg                                   const char* e1,
18206f32e7eSjoerg                                   const char* e2,
18306f32e7eSjoerg                                   const char* e3,
18406f32e7eSjoerg                                   Pred pred,
18506f32e7eSjoerg                                   const T1& v1,
18606f32e7eSjoerg                                   const T2& v2,
18706f32e7eSjoerg                                   const T3& v3) {
18806f32e7eSjoerg   if (pred(v1, v2, v3)) return AssertionSuccess();
18906f32e7eSjoerg 
190*da58b97aSjoerg   return AssertionFailure()
191*da58b97aSjoerg          << pred_text << "(" << e1 << ", " << e2 << ", " << e3
192*da58b97aSjoerg          << ") evaluates to false, where"
193*da58b97aSjoerg          << "\n"
194*da58b97aSjoerg          << e1 << " evaluates to " << ::testing::PrintToString(v1) << "\n"
195*da58b97aSjoerg          << e2 << " evaluates to " << ::testing::PrintToString(v2) << "\n"
196*da58b97aSjoerg          << e3 << " evaluates to " << ::testing::PrintToString(v3);
19706f32e7eSjoerg }
19806f32e7eSjoerg 
19906f32e7eSjoerg // Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT3.
20006f32e7eSjoerg // Don't use this in your code.
20106f32e7eSjoerg #define GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, on_failure)\
20206f32e7eSjoerg   GTEST_ASSERT_(pred_format(#v1, #v2, #v3, v1, v2, v3), \
20306f32e7eSjoerg                 on_failure)
20406f32e7eSjoerg 
20506f32e7eSjoerg // Internal macro for implementing {EXPECT|ASSERT}_PRED3.  Don't use
20606f32e7eSjoerg // this in your code.
20706f32e7eSjoerg #define GTEST_PRED3_(pred, v1, v2, v3, on_failure)\
20806f32e7eSjoerg   GTEST_ASSERT_(::testing::AssertPred3Helper(#pred, \
20906f32e7eSjoerg                                              #v1, \
21006f32e7eSjoerg                                              #v2, \
21106f32e7eSjoerg                                              #v3, \
21206f32e7eSjoerg                                              pred, \
21306f32e7eSjoerg                                              v1, \
21406f32e7eSjoerg                                              v2, \
21506f32e7eSjoerg                                              v3), on_failure)
21606f32e7eSjoerg 
21706f32e7eSjoerg // Ternary predicate assertion macros.
21806f32e7eSjoerg #define EXPECT_PRED_FORMAT3(pred_format, v1, v2, v3) \
21906f32e7eSjoerg   GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_NONFATAL_FAILURE_)
22006f32e7eSjoerg #define EXPECT_PRED3(pred, v1, v2, v3) \
22106f32e7eSjoerg   GTEST_PRED3_(pred, v1, v2, v3, GTEST_NONFATAL_FAILURE_)
22206f32e7eSjoerg #define ASSERT_PRED_FORMAT3(pred_format, v1, v2, v3) \
22306f32e7eSjoerg   GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_FATAL_FAILURE_)
22406f32e7eSjoerg #define ASSERT_PRED3(pred, v1, v2, v3) \
22506f32e7eSjoerg   GTEST_PRED3_(pred, v1, v2, v3, GTEST_FATAL_FAILURE_)
22606f32e7eSjoerg 
22706f32e7eSjoerg 
22806f32e7eSjoerg 
22906f32e7eSjoerg // Helper function for implementing {EXPECT|ASSERT}_PRED4.  Don't use
23006f32e7eSjoerg // this in your code.
23106f32e7eSjoerg template <typename Pred,
23206f32e7eSjoerg           typename T1,
23306f32e7eSjoerg           typename T2,
23406f32e7eSjoerg           typename T3,
23506f32e7eSjoerg           typename T4>
AssertPred4Helper(const char * pred_text,const char * e1,const char * e2,const char * e3,const char * e4,Pred pred,const T1 & v1,const T2 & v2,const T3 & v3,const T4 & v4)23606f32e7eSjoerg AssertionResult AssertPred4Helper(const char* pred_text,
23706f32e7eSjoerg                                   const char* e1,
23806f32e7eSjoerg                                   const char* e2,
23906f32e7eSjoerg                                   const char* e3,
24006f32e7eSjoerg                                   const char* e4,
24106f32e7eSjoerg                                   Pred pred,
24206f32e7eSjoerg                                   const T1& v1,
24306f32e7eSjoerg                                   const T2& v2,
24406f32e7eSjoerg                                   const T3& v3,
24506f32e7eSjoerg                                   const T4& v4) {
24606f32e7eSjoerg   if (pred(v1, v2, v3, v4)) return AssertionSuccess();
24706f32e7eSjoerg 
248*da58b97aSjoerg   return AssertionFailure()
249*da58b97aSjoerg          << pred_text << "(" << e1 << ", " << e2 << ", " << e3 << ", " << e4
250*da58b97aSjoerg          << ") evaluates to false, where"
251*da58b97aSjoerg          << "\n"
252*da58b97aSjoerg          << e1 << " evaluates to " << ::testing::PrintToString(v1) << "\n"
253*da58b97aSjoerg          << e2 << " evaluates to " << ::testing::PrintToString(v2) << "\n"
254*da58b97aSjoerg          << e3 << " evaluates to " << ::testing::PrintToString(v3) << "\n"
255*da58b97aSjoerg          << e4 << " evaluates to " << ::testing::PrintToString(v4);
25606f32e7eSjoerg }
25706f32e7eSjoerg 
25806f32e7eSjoerg // Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT4.
25906f32e7eSjoerg // Don't use this in your code.
26006f32e7eSjoerg #define GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, on_failure)\
26106f32e7eSjoerg   GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, v1, v2, v3, v4), \
26206f32e7eSjoerg                 on_failure)
26306f32e7eSjoerg 
26406f32e7eSjoerg // Internal macro for implementing {EXPECT|ASSERT}_PRED4.  Don't use
26506f32e7eSjoerg // this in your code.
26606f32e7eSjoerg #define GTEST_PRED4_(pred, v1, v2, v3, v4, on_failure)\
26706f32e7eSjoerg   GTEST_ASSERT_(::testing::AssertPred4Helper(#pred, \
26806f32e7eSjoerg                                              #v1, \
26906f32e7eSjoerg                                              #v2, \
27006f32e7eSjoerg                                              #v3, \
27106f32e7eSjoerg                                              #v4, \
27206f32e7eSjoerg                                              pred, \
27306f32e7eSjoerg                                              v1, \
27406f32e7eSjoerg                                              v2, \
27506f32e7eSjoerg                                              v3, \
27606f32e7eSjoerg                                              v4), on_failure)
27706f32e7eSjoerg 
27806f32e7eSjoerg // 4-ary predicate assertion macros.
27906f32e7eSjoerg #define EXPECT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \
28006f32e7eSjoerg   GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_)
28106f32e7eSjoerg #define EXPECT_PRED4(pred, v1, v2, v3, v4) \
28206f32e7eSjoerg   GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_)
28306f32e7eSjoerg #define ASSERT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \
28406f32e7eSjoerg   GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_FATAL_FAILURE_)
28506f32e7eSjoerg #define ASSERT_PRED4(pred, v1, v2, v3, v4) \
28606f32e7eSjoerg   GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_FATAL_FAILURE_)
28706f32e7eSjoerg 
28806f32e7eSjoerg 
28906f32e7eSjoerg 
29006f32e7eSjoerg // Helper function for implementing {EXPECT|ASSERT}_PRED5.  Don't use
29106f32e7eSjoerg // this in your code.
29206f32e7eSjoerg template <typename Pred,
29306f32e7eSjoerg           typename T1,
29406f32e7eSjoerg           typename T2,
29506f32e7eSjoerg           typename T3,
29606f32e7eSjoerg           typename T4,
29706f32e7eSjoerg           typename T5>
AssertPred5Helper(const char * pred_text,const char * e1,const char * e2,const char * e3,const char * e4,const char * e5,Pred pred,const T1 & v1,const T2 & v2,const T3 & v3,const T4 & v4,const T5 & v5)29806f32e7eSjoerg AssertionResult AssertPred5Helper(const char* pred_text,
29906f32e7eSjoerg                                   const char* e1,
30006f32e7eSjoerg                                   const char* e2,
30106f32e7eSjoerg                                   const char* e3,
30206f32e7eSjoerg                                   const char* e4,
30306f32e7eSjoerg                                   const char* e5,
30406f32e7eSjoerg                                   Pred pred,
30506f32e7eSjoerg                                   const T1& v1,
30606f32e7eSjoerg                                   const T2& v2,
30706f32e7eSjoerg                                   const T3& v3,
30806f32e7eSjoerg                                   const T4& v4,
30906f32e7eSjoerg                                   const T5& v5) {
31006f32e7eSjoerg   if (pred(v1, v2, v3, v4, v5)) return AssertionSuccess();
31106f32e7eSjoerg 
312*da58b97aSjoerg   return AssertionFailure()
313*da58b97aSjoerg          << pred_text << "(" << e1 << ", " << e2 << ", " << e3 << ", " << e4
314*da58b97aSjoerg          << ", " << e5 << ") evaluates to false, where"
315*da58b97aSjoerg          << "\n"
316*da58b97aSjoerg          << e1 << " evaluates to " << ::testing::PrintToString(v1) << "\n"
317*da58b97aSjoerg          << e2 << " evaluates to " << ::testing::PrintToString(v2) << "\n"
318*da58b97aSjoerg          << e3 << " evaluates to " << ::testing::PrintToString(v3) << "\n"
319*da58b97aSjoerg          << e4 << " evaluates to " << ::testing::PrintToString(v4) << "\n"
320*da58b97aSjoerg          << e5 << " evaluates to " << ::testing::PrintToString(v5);
32106f32e7eSjoerg }
32206f32e7eSjoerg 
32306f32e7eSjoerg // Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT5.
32406f32e7eSjoerg // Don't use this in your code.
32506f32e7eSjoerg #define GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, on_failure)\
32606f32e7eSjoerg   GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, #v5, v1, v2, v3, v4, v5), \
32706f32e7eSjoerg                 on_failure)
32806f32e7eSjoerg 
32906f32e7eSjoerg // Internal macro for implementing {EXPECT|ASSERT}_PRED5.  Don't use
33006f32e7eSjoerg // this in your code.
33106f32e7eSjoerg #define GTEST_PRED5_(pred, v1, v2, v3, v4, v5, on_failure)\
33206f32e7eSjoerg   GTEST_ASSERT_(::testing::AssertPred5Helper(#pred, \
33306f32e7eSjoerg                                              #v1, \
33406f32e7eSjoerg                                              #v2, \
33506f32e7eSjoerg                                              #v3, \
33606f32e7eSjoerg                                              #v4, \
33706f32e7eSjoerg                                              #v5, \
33806f32e7eSjoerg                                              pred, \
33906f32e7eSjoerg                                              v1, \
34006f32e7eSjoerg                                              v2, \
34106f32e7eSjoerg                                              v3, \
34206f32e7eSjoerg                                              v4, \
34306f32e7eSjoerg                                              v5), on_failure)
34406f32e7eSjoerg 
34506f32e7eSjoerg // 5-ary predicate assertion macros.
34606f32e7eSjoerg #define EXPECT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \
34706f32e7eSjoerg   GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_)
34806f32e7eSjoerg #define EXPECT_PRED5(pred, v1, v2, v3, v4, v5) \
34906f32e7eSjoerg   GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_)
35006f32e7eSjoerg #define ASSERT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \
35106f32e7eSjoerg   GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_)
35206f32e7eSjoerg #define ASSERT_PRED5(pred, v1, v2, v3, v4, v5) \
35306f32e7eSjoerg   GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_)
35406f32e7eSjoerg 
35506f32e7eSjoerg 
35606f32e7eSjoerg 
357*da58b97aSjoerg }  // namespace testing
358*da58b97aSjoerg 
35906f32e7eSjoerg #endif  // GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
360