gtest_pred_impl.h (googletest-release-1.11.0) | : | gtest_pred_impl.h (googletest-release-1.12.0) | ||
---|---|---|---|---|
skipping to change at line 29 | skipping to change at line 29 | |||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | |||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | |||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | |||
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | |||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | |||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
// This file is AUTOMATICALLY GENERATED on 01/02/2019 by command | ||||
// 'gen_gtest_pred_impl.py 5'. DO NOT EDIT BY HAND! | ||||
// | // | |||
// Implements a family of generic predicate assertion macros. | // Implements a family of generic predicate assertion macros. | |||
// GOOGLETEST_CM0001 DO NOT DELETE | ||||
// IWYU pragma: private, include "gtest/gtest.h" | ||||
// IWYU pragma: friend gtest/.* | ||||
// IWYU pragma: friend gmock/.* | ||||
#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_ | #ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_ | |||
#define GOOGLETEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_ | #define GOOGLETEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_ | |||
#include "gtest/gtest.h" | #include "gtest/gtest-assertion-result.h" | |||
#include "gtest/internal/gtest-internal.h" | ||||
#include "gtest/internal/gtest-port.h" | ||||
namespace testing { | namespace testing { | |||
// This header implements a family of generic predicate assertion | // This header implements a family of generic predicate assertion | |||
// macros: | // macros: | |||
// | // | |||
// ASSERT_PRED_FORMAT1(pred_format, v1) | // ASSERT_PRED_FORMAT1(pred_format, v1) | |||
// ASSERT_PRED_FORMAT2(pred_format, v1, v2) | // ASSERT_PRED_FORMAT2(pred_format, v1, v2) | |||
// ... | // ... | |||
// | // | |||
skipping to change at line 75 | skipping to change at line 77 | |||
// | // | |||
// We also define the EXPECT_* variations. | // We also define the EXPECT_* variations. | |||
// | // | |||
// For now we only support predicates whose arity is at most 5. | // For now we only support predicates whose arity is at most 5. | |||
// Please email googletestframework@googlegroups.com if you need | // Please email googletestframework@googlegroups.com if you need | |||
// support for higher arities. | // support for higher arities. | |||
// GTEST_ASSERT_ is the basic statement to which all of the assertions | // GTEST_ASSERT_ is the basic statement to which all of the assertions | |||
// in this file reduce. Don't use this in your code. | // in this file reduce. Don't use this in your code. | |||
#define GTEST_ASSERT_(expression, on_failure) \ | #define GTEST_ASSERT_(expression, on_failure) \ | |||
GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ | GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ | |||
if (const ::testing::AssertionResult gtest_ar = (expression)) \ | if (const ::testing::AssertionResult gtest_ar = (expression)) \ | |||
; \ | ; \ | |||
else \ | else \ | |||
on_failure(gtest_ar.failure_message()) | on_failure(gtest_ar.failure_message()) | |||
// Helper function for implementing {EXPECT|ASSERT}_PRED1. Don't use | // Helper function for implementing {EXPECT|ASSERT}_PRED1. Don't use | |||
// this in your code. | // this in your code. | |||
template <typename Pred, | template <typename Pred, typename T1> | |||
typename T1> | AssertionResult AssertPred1Helper(const char* pred_text, const char* e1, | |||
AssertionResult AssertPred1Helper(const char* pred_text, | Pred pred, const T1& v1) { | |||
const char* e1, | ||||
Pred pred, | ||||
const T1& v1) { | ||||
if (pred(v1)) return AssertionSuccess(); | if (pred(v1)) return AssertionSuccess(); | |||
return AssertionFailure() | return AssertionFailure() | |||
<< pred_text << "(" << e1 << ") evaluates to false, where" | << pred_text << "(" << e1 << ") evaluates to false, where" | |||
<< "\n" | << "\n" | |||
<< e1 << " evaluates to " << ::testing::PrintToString(v1); | << e1 << " evaluates to " << ::testing::PrintToString(v1); | |||
} | } | |||
// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT1. | // Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT1. | |||
// Don't use this in your code. | // Don't use this in your code. | |||
#define GTEST_PRED_FORMAT1_(pred_format, v1, on_failure)\ | #define GTEST_PRED_FORMAT1_(pred_format, v1, on_failure) \ | |||
GTEST_ASSERT_(pred_format(#v1, v1), \ | GTEST_ASSERT_(pred_format(#v1, v1), on_failure) | |||
on_failure) | ||||
// Internal macro for implementing {EXPECT|ASSERT}_PRED1. Don't use | // Internal macro for implementing {EXPECT|ASSERT}_PRED1. Don't use | |||
// this in your code. | // this in your code. | |||
#define GTEST_PRED1_(pred, v1, on_failure)\ | #define GTEST_PRED1_(pred, v1, on_failure) \ | |||
GTEST_ASSERT_(::testing::AssertPred1Helper(#pred, \ | GTEST_ASSERT_(::testing::AssertPred1Helper(#pred, #v1, pred, v1), on_failure) | |||
#v1, \ | ||||
pred, \ | ||||
v1), on_failure) | ||||
// Unary predicate assertion macros. | // Unary predicate assertion macros. | |||
#define EXPECT_PRED_FORMAT1(pred_format, v1) \ | #define EXPECT_PRED_FORMAT1(pred_format, v1) \ | |||
GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_NONFATAL_FAILURE_) | GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_NONFATAL_FAILURE_) | |||
#define EXPECT_PRED1(pred, v1) \ | #define EXPECT_PRED1(pred, v1) GTEST_PRED1_(pred, v1, GTEST_NONFATAL_FAILURE_) | |||
GTEST_PRED1_(pred, v1, GTEST_NONFATAL_FAILURE_) | ||||
#define ASSERT_PRED_FORMAT1(pred_format, v1) \ | #define ASSERT_PRED_FORMAT1(pred_format, v1) \ | |||
GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_FATAL_FAILURE_) | GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_FATAL_FAILURE_) | |||
#define ASSERT_PRED1(pred, v1) \ | #define ASSERT_PRED1(pred, v1) GTEST_PRED1_(pred, v1, GTEST_FATAL_FAILURE_) | |||
GTEST_PRED1_(pred, v1, GTEST_FATAL_FAILURE_) | ||||
// Helper function for implementing {EXPECT|ASSERT}_PRED2. Don't use | // Helper function for implementing {EXPECT|ASSERT}_PRED2. Don't use | |||
// this in your code. | // this in your code. | |||
template <typename Pred, | template <typename Pred, typename T1, typename T2> | |||
typename T1, | AssertionResult AssertPred2Helper(const char* pred_text, const char* e1, | |||
typename T2> | const char* e2, Pred pred, const T1& v1, | |||
AssertionResult AssertPred2Helper(const char* pred_text, | ||||
const char* e1, | ||||
const char* e2, | ||||
Pred pred, | ||||
const T1& v1, | ||||
const T2& v2) { | const T2& v2) { | |||
if (pred(v1, v2)) return AssertionSuccess(); | if (pred(v1, v2)) return AssertionSuccess(); | |||
return AssertionFailure() | return AssertionFailure() | |||
<< pred_text << "(" << e1 << ", " << e2 | << pred_text << "(" << e1 << ", " << e2 | |||
<< ") evaluates to false, where" | << ") evaluates to false, where" | |||
<< "\n" | << "\n" | |||
<< e1 << " evaluates to " << ::testing::PrintToString(v1) << "\n" | << e1 << " evaluates to " << ::testing::PrintToString(v1) << "\n" | |||
<< e2 << " evaluates to " << ::testing::PrintToString(v2); | << e2 << " evaluates to " << ::testing::PrintToString(v2); | |||
} | } | |||
// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT2. | // Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT2. | |||
// Don't use this in your code. | // Don't use this in your code. | |||
#define GTEST_PRED_FORMAT2_(pred_format, v1, v2, on_failure)\ | #define GTEST_PRED_FORMAT2_(pred_format, v1, v2, on_failure) \ | |||
GTEST_ASSERT_(pred_format(#v1, #v2, v1, v2), \ | GTEST_ASSERT_(pred_format(#v1, #v2, v1, v2), on_failure) | |||
on_failure) | ||||
// Internal macro for implementing {EXPECT|ASSERT}_PRED2. Don't use | // Internal macro for implementing {EXPECT|ASSERT}_PRED2. Don't use | |||
// this in your code. | // this in your code. | |||
#define GTEST_PRED2_(pred, v1, v2, on_failure)\ | #define GTEST_PRED2_(pred, v1, v2, on_failure) \ | |||
GTEST_ASSERT_(::testing::AssertPred2Helper(#pred, \ | GTEST_ASSERT_(::testing::AssertPred2Helper(#pred, #v1, #v2, pred, v1, v2), \ | |||
#v1, \ | on_failure) | |||
#v2, \ | ||||
pred, \ | ||||
v1, \ | ||||
v2), on_failure) | ||||
// Binary predicate assertion macros. | // Binary predicate assertion macros. | |||
#define EXPECT_PRED_FORMAT2(pred_format, v1, v2) \ | #define EXPECT_PRED_FORMAT2(pred_format, v1, v2) \ | |||
GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_NONFATAL_FAILURE_) | GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_NONFATAL_FAILURE_) | |||
#define EXPECT_PRED2(pred, v1, v2) \ | #define EXPECT_PRED2(pred, v1, v2) \ | |||
GTEST_PRED2_(pred, v1, v2, GTEST_NONFATAL_FAILURE_) | GTEST_PRED2_(pred, v1, v2, GTEST_NONFATAL_FAILURE_) | |||
#define ASSERT_PRED_FORMAT2(pred_format, v1, v2) \ | #define ASSERT_PRED_FORMAT2(pred_format, v1, v2) \ | |||
GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_FATAL_FAILURE_) | GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_FATAL_FAILURE_) | |||
#define ASSERT_PRED2(pred, v1, v2) \ | #define ASSERT_PRED2(pred, v1, v2) \ | |||
GTEST_PRED2_(pred, v1, v2, GTEST_FATAL_FAILURE_) | GTEST_PRED2_(pred, v1, v2, GTEST_FATAL_FAILURE_) | |||
// Helper function for implementing {EXPECT|ASSERT}_PRED3. Don't use | // Helper function for implementing {EXPECT|ASSERT}_PRED3. Don't use | |||
// this in your code. | // this in your code. | |||
template <typename Pred, | template <typename Pred, typename T1, typename T2, typename T3> | |||
typename T1, | AssertionResult AssertPred3Helper(const char* pred_text, const char* e1, | |||
typename T2, | const char* e2, const char* e3, Pred pred, | |||
typename T3> | const T1& v1, const T2& v2, const T3& v3) { | |||
AssertionResult 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) { | ||||
if (pred(v1, v2, v3)) return AssertionSuccess(); | if (pred(v1, v2, v3)) return AssertionSuccess(); | |||
return AssertionFailure() | return AssertionFailure() | |||
<< pred_text << "(" << e1 << ", " << e2 << ", " << e3 | << pred_text << "(" << e1 << ", " << e2 << ", " << e3 | |||
<< ") evaluates to false, where" | << ") evaluates to false, where" | |||
<< "\n" | << "\n" | |||
<< e1 << " evaluates to " << ::testing::PrintToString(v1) << "\n" | << e1 << " evaluates to " << ::testing::PrintToString(v1) << "\n" | |||
<< e2 << " evaluates to " << ::testing::PrintToString(v2) << "\n" | << e2 << " evaluates to " << ::testing::PrintToString(v2) << "\n" | |||
<< e3 << " evaluates to " << ::testing::PrintToString(v3); | << e3 << " evaluates to " << ::testing::PrintToString(v3); | |||
} | } | |||
// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT3. | // Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT3. | |||
// Don't use this in your code. | // Don't use this in your code. | |||
#define GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, on_failure)\ | #define GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, on_failure) \ | |||
GTEST_ASSERT_(pred_format(#v1, #v2, #v3, v1, v2, v3), \ | GTEST_ASSERT_(pred_format(#v1, #v2, #v3, v1, v2, v3), on_failure) | |||
on_failure) | ||||
// Internal macro for implementing {EXPECT|ASSERT}_PRED3. Don't use | // Internal macro for implementing {EXPECT|ASSERT}_PRED3. Don't use | |||
// this in your code. | // this in your code. | |||
#define GTEST_PRED3_(pred, v1, v2, v3, on_failure)\ | #define GTEST_PRED3_(pred, v1, v2, v3, on_failure) \ | |||
GTEST_ASSERT_(::testing::AssertPred3Helper(#pred, \ | GTEST_ASSERT_( \ | |||
#v1, \ | ::testing::AssertPred3Helper(#pred, #v1, #v2, #v3, pred, v1, v2, v3), \ | |||
#v2, \ | on_failure) | |||
#v3, \ | ||||
pred, \ | ||||
v1, \ | ||||
v2, \ | ||||
v3), on_failure) | ||||
// Ternary predicate assertion macros. | // Ternary predicate assertion macros. | |||
#define EXPECT_PRED_FORMAT3(pred_format, v1, v2, v3) \ | #define EXPECT_PRED_FORMAT3(pred_format, v1, v2, v3) \ | |||
GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_NONFATAL_FAILURE_) | GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_NONFATAL_FAILURE_) | |||
#define EXPECT_PRED3(pred, v1, v2, v3) \ | #define EXPECT_PRED3(pred, v1, v2, v3) \ | |||
GTEST_PRED3_(pred, v1, v2, v3, GTEST_NONFATAL_FAILURE_) | GTEST_PRED3_(pred, v1, v2, v3, GTEST_NONFATAL_FAILURE_) | |||
#define ASSERT_PRED_FORMAT3(pred_format, v1, v2, v3) \ | #define ASSERT_PRED_FORMAT3(pred_format, v1, v2, v3) \ | |||
GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_FATAL_FAILURE_) | GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_FATAL_FAILURE_) | |||
#define ASSERT_PRED3(pred, v1, v2, v3) \ | #define ASSERT_PRED3(pred, v1, v2, v3) \ | |||
GTEST_PRED3_(pred, v1, v2, v3, GTEST_FATAL_FAILURE_) | GTEST_PRED3_(pred, v1, v2, v3, GTEST_FATAL_FAILURE_) | |||
// Helper function for implementing {EXPECT|ASSERT}_PRED4. Don't use | // Helper function for implementing {EXPECT|ASSERT}_PRED4. Don't use | |||
// this in your code. | // this in your code. | |||
template <typename Pred, | template <typename Pred, typename T1, typename T2, typename T3, typename T4> | |||
typename T1, | AssertionResult AssertPred4Helper(const char* pred_text, const char* e1, | |||
typename T2, | const char* e2, const char* e3, | |||
typename T3, | const char* e4, Pred pred, const T1& v1, | |||
typename T4> | const T2& v2, const T3& v3, const T4& v4) { | |||
AssertionResult 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) { | ||||
if (pred(v1, v2, v3, v4)) return AssertionSuccess(); | if (pred(v1, v2, v3, v4)) return AssertionSuccess(); | |||
return AssertionFailure() | return AssertionFailure() | |||
<< pred_text << "(" << e1 << ", " << e2 << ", " << e3 << ", " << e4 | << pred_text << "(" << e1 << ", " << e2 << ", " << e3 << ", " << e4 | |||
<< ") evaluates to false, where" | << ") evaluates to false, where" | |||
<< "\n" | << "\n" | |||
<< e1 << " evaluates to " << ::testing::PrintToString(v1) << "\n" | << e1 << " evaluates to " << ::testing::PrintToString(v1) << "\n" | |||
<< e2 << " evaluates to " << ::testing::PrintToString(v2) << "\n" | << e2 << " evaluates to " << ::testing::PrintToString(v2) << "\n" | |||
<< e3 << " evaluates to " << ::testing::PrintToString(v3) << "\n" | << e3 << " evaluates to " << ::testing::PrintToString(v3) << "\n" | |||
<< e4 << " evaluates to " << ::testing::PrintToString(v4); | << e4 << " evaluates to " << ::testing::PrintToString(v4); | |||
} | } | |||
// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT4. | // Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT4. | |||
// Don't use this in your code. | // Don't use this in your code. | |||
#define GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, on_failure)\ | #define GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, on_failure) \ | |||
GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, v1, v2, v3, v4), \ | GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, v1, v2, v3, v4), on_failure) | |||
on_failure) | ||||
// Internal macro for implementing {EXPECT|ASSERT}_PRED4. Don't use | // Internal macro for implementing {EXPECT|ASSERT}_PRED4. Don't use | |||
// this in your code. | // this in your code. | |||
#define GTEST_PRED4_(pred, v1, v2, v3, v4, on_failure)\ | #define GTEST_PRED4_(pred, v1, v2, v3, v4, on_failure) \ | |||
GTEST_ASSERT_(::testing::AssertPred4Helper(#pred, \ | GTEST_ASSERT_(::testing::AssertPred4Helper(#pred, #v1, #v2, #v3, #v4, pred, \ | |||
#v1, \ | v1, v2, v3, v4), \ | |||
#v2, \ | on_failure) | |||
#v3, \ | ||||
#v4, \ | ||||
pred, \ | ||||
v1, \ | ||||
v2, \ | ||||
v3, \ | ||||
v4), on_failure) | ||||
// 4-ary predicate assertion macros. | // 4-ary predicate assertion macros. | |||
#define EXPECT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \ | #define EXPECT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \ | |||
GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_) | GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_) | |||
#define EXPECT_PRED4(pred, v1, v2, v3, v4) \ | #define EXPECT_PRED4(pred, v1, v2, v3, v4) \ | |||
GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_) | GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_) | |||
#define ASSERT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \ | #define ASSERT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \ | |||
GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_FATAL_FAILURE_) | GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_FATAL_FAILURE_) | |||
#define ASSERT_PRED4(pred, v1, v2, v3, v4) \ | #define ASSERT_PRED4(pred, v1, v2, v3, v4) \ | |||
GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_FATAL_FAILURE_) | GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_FATAL_FAILURE_) | |||
// Helper function for implementing {EXPECT|ASSERT}_PRED5. Don't use | // Helper function for implementing {EXPECT|ASSERT}_PRED5. Don't use | |||
// this in your code. | // this in your code. | |||
template <typename Pred, | template <typename Pred, typename T1, typename T2, typename T3, typename T4, | |||
typename T1, | ||||
typename T2, | ||||
typename T3, | ||||
typename T4, | ||||
typename T5> | typename T5> | |||
AssertionResult AssertPred5Helper(const char* pred_text, | AssertionResult AssertPred5Helper(const char* pred_text, const char* e1, | |||
const char* e1, | const char* e2, const char* e3, | |||
const char* e2, | const char* e4, const char* e5, Pred pred, | |||
const char* e3, | const T1& v1, const T2& v2, const T3& v3, | |||
const char* e4, | const T4& v4, const T5& v5) { | |||
const char* e5, | ||||
Pred pred, | ||||
const T1& v1, | ||||
const T2& v2, | ||||
const T3& v3, | ||||
const T4& v4, | ||||
const T5& v5) { | ||||
if (pred(v1, v2, v3, v4, v5)) return AssertionSuccess(); | if (pred(v1, v2, v3, v4, v5)) return AssertionSuccess(); | |||
return AssertionFailure() | return AssertionFailure() | |||
<< pred_text << "(" << e1 << ", " << e2 << ", " << e3 << ", " << e4 | << pred_text << "(" << e1 << ", " << e2 << ", " << e3 << ", " << e4 | |||
<< ", " << e5 << ") evaluates to false, where" | << ", " << e5 << ") evaluates to false, where" | |||
<< "\n" | << "\n" | |||
<< e1 << " evaluates to " << ::testing::PrintToString(v1) << "\n" | << e1 << " evaluates to " << ::testing::PrintToString(v1) << "\n" | |||
<< e2 << " evaluates to " << ::testing::PrintToString(v2) << "\n" | << e2 << " evaluates to " << ::testing::PrintToString(v2) << "\n" | |||
<< e3 << " evaluates to " << ::testing::PrintToString(v3) << "\n" | << e3 << " evaluates to " << ::testing::PrintToString(v3) << "\n" | |||
<< e4 << " evaluates to " << ::testing::PrintToString(v4) << "\n" | << e4 << " evaluates to " << ::testing::PrintToString(v4) << "\n" | |||
<< e5 << " evaluates to " << ::testing::PrintToString(v5); | << e5 << " evaluates to " << ::testing::PrintToString(v5); | |||
} | } | |||
// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT5. | // Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT5. | |||
// Don't use this in your code. | // Don't use this in your code. | |||
#define GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, on_failure)\ | #define GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, on_failure) \ | |||
GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, #v5, v1, v2, v3, v4, v5), \ | GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, #v5, v1, v2, v3, v4, v5), \ | |||
on_failure) | on_failure) | |||
// Internal macro for implementing {EXPECT|ASSERT}_PRED5. Don't use | // Internal macro for implementing {EXPECT|ASSERT}_PRED5. Don't use | |||
// this in your code. | // this in your code. | |||
#define GTEST_PRED5_(pred, v1, v2, v3, v4, v5, on_failure)\ | #define GTEST_PRED5_(pred, v1, v2, v3, v4, v5, on_failure) \ | |||
GTEST_ASSERT_(::testing::AssertPred5Helper(#pred, \ | GTEST_ASSERT_(::testing::AssertPred5Helper(#pred, #v1, #v2, #v3, #v4, #v5, \ | |||
#v1, \ | pred, v1, v2, v3, v4, v5), \ | |||
#v2, \ | on_failure) | |||
#v3, \ | ||||
#v4, \ | ||||
#v5, \ | ||||
pred, \ | ||||
v1, \ | ||||
v2, \ | ||||
v3, \ | ||||
v4, \ | ||||
v5), on_failure) | ||||
// 5-ary predicate assertion macros. | // 5-ary predicate assertion macros. | |||
#define EXPECT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \ | #define EXPECT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \ | |||
GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_) | GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_) | |||
#define EXPECT_PRED5(pred, v1, v2, v3, v4, v5) \ | #define EXPECT_PRED5(pred, v1, v2, v3, v4, v5) \ | |||
GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_) | GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_) | |||
#define ASSERT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \ | #define ASSERT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \ | |||
GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_) | GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_) | |||
#define ASSERT_PRED5(pred, v1, v2, v3, v4, v5) \ | #define ASSERT_PRED5(pred, v1, v2, v3, v4, v5) \ | |||
GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_) | GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_) | |||
End of changes. 23 change blocks. | ||||
129 lines changed or deleted | 60 lines changed or added |