Changeset View
Changeset View
Standalone View
Standalone View
google/googletest/dist/googletest/test/gtest_pred_impl_unittest.cc
- This file was added.
Property | Old Value | New Value |
---|---|---|
svn:eol-style | null | native \ No newline at end of property |
svn:keywords | null | FreeBSD=%H \ No newline at end of property |
svn:mime-type | null | text/plain \ No newline at end of property |
// Copyright 2006, Google Inc. | |||||
// All rights reserved. | |||||
// | |||||
// Redistribution and use in source and binary forms, with or without | |||||
// modification, are permitted provided that the following conditions are | |||||
// met: | |||||
// | |||||
// * Redistributions of source code must retain the above copyright | |||||
// notice, this list of conditions and the following disclaimer. | |||||
// * Redistributions in binary form must reproduce the above | |||||
// copyright notice, this list of conditions and the following disclaimer | |||||
// in the documentation and/or other materials provided with the | |||||
// distribution. | |||||
// * Neither the name of Google Inc. nor the names of its | |||||
// contributors may be used to endorse or promote products derived from | |||||
// this software without specific prior written permission. | |||||
// | |||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | |||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | |||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | |||||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | |||||
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||||
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||||
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | |||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | |||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||||
// This file is AUTOMATICALLY GENERATED on 01/02/2018 by command | |||||
// 'gen_gtest_pred_impl.py 5'. DO NOT EDIT BY HAND! | |||||
// Regression test for gtest_pred_impl.h | |||||
// | |||||
// This file is generated by a script and quite long. If you intend to | |||||
// learn how Google Test works by reading its unit tests, read | |||||
// gtest_unittest.cc instead. | |||||
// | |||||
// This is intended as a regression test for the Google Test predicate | |||||
// assertions. We compile it as part of the gtest_unittest target | |||||
// only to keep the implementation tidy and compact, as it is quite | |||||
// involved to set up the stage for testing Google Test using Google | |||||
// Test itself. | |||||
// | |||||
// Currently, gtest_unittest takes ~11 seconds to run in the testing | |||||
// daemon. In the future, if it grows too large and needs much more | |||||
// time to finish, we should consider separating this file into a | |||||
// stand-alone regression test. | |||||
#include <iostream> | |||||
#include "gtest/gtest.h" | |||||
#include "gtest/gtest-spi.h" | |||||
// A user-defined data type. | |||||
struct Bool { | |||||
explicit Bool(int val) : value(val != 0) {} | |||||
bool operator>(int n) const { return value > Bool(n).value; } | |||||
Bool operator+(const Bool& rhs) const { return Bool(value + rhs.value); } | |||||
bool operator==(const Bool& rhs) const { return value == rhs.value; } | |||||
bool value; | |||||
}; | |||||
// Enables Bool to be used in assertions. | |||||
std::ostream& operator<<(std::ostream& os, const Bool& x) { | |||||
return os << (x.value ? "true" : "false"); | |||||
} | |||||
// Sample functions/functors for testing unary predicate assertions. | |||||
// A unary predicate function. | |||||
template <typename T1> | |||||
bool PredFunction1(T1 v1) { | |||||
return v1 > 0; | |||||
} | |||||
// The following two functions are needed to circumvent a bug in | |||||
// gcc 2.95.3, which sometimes has problem with the above template | |||||
// function. | |||||
bool PredFunction1Int(int v1) { | |||||
return v1 > 0; | |||||
} | |||||
bool PredFunction1Bool(Bool v1) { | |||||
return v1 > 0; | |||||
} | |||||
// A unary predicate functor. | |||||
struct PredFunctor1 { | |||||
template <typename T1> | |||||
bool operator()(const T1& v1) { | |||||
return v1 > 0; | |||||
} | |||||
}; | |||||
// A unary predicate-formatter function. | |||||
template <typename T1> | |||||
testing::AssertionResult PredFormatFunction1(const char* e1, | |||||
const T1& v1) { | |||||
if (PredFunction1(v1)) | |||||
return testing::AssertionSuccess(); | |||||
return testing::AssertionFailure() | |||||
<< e1 | |||||
<< " is expected to be positive, but evaluates to " | |||||
<< v1 << "."; | |||||
} | |||||
// A unary predicate-formatter functor. | |||||
struct PredFormatFunctor1 { | |||||
template <typename T1> | |||||
testing::AssertionResult operator()(const char* e1, | |||||
const T1& v1) const { | |||||
return PredFormatFunction1(e1, v1); | |||||
} | |||||
}; | |||||
// Tests for {EXPECT|ASSERT}_PRED_FORMAT1. | |||||
class Predicate1Test : public testing::Test { | |||||
protected: | |||||
virtual void SetUp() { | |||||
expected_to_finish_ = true; | |||||
finished_ = false; | |||||
n1_ = 0; | |||||
} | |||||
virtual void TearDown() { | |||||
// Verifies that each of the predicate's arguments was evaluated | |||||
// exactly once. | |||||
EXPECT_EQ(1, n1_) << | |||||
"The predicate assertion didn't evaluate argument 2 " | |||||
"exactly once."; | |||||
// Verifies that the control flow in the test function is expected. | |||||
if (expected_to_finish_ && !finished_) { | |||||
FAIL() << "The predicate assertion unexpactedly aborted the test."; | |||||
} else if (!expected_to_finish_ && finished_) { | |||||
FAIL() << "The failed predicate assertion didn't abort the test " | |||||
"as expected."; | |||||
} | |||||
} | |||||
// true iff the test function is expected to run to finish. | |||||
static bool expected_to_finish_; | |||||
// true iff the test function did run to finish. | |||||
static bool finished_; | |||||
static int n1_; | |||||
}; | |||||
bool Predicate1Test::expected_to_finish_; | |||||
bool Predicate1Test::finished_; | |||||
int Predicate1Test::n1_; | |||||
typedef Predicate1Test EXPECT_PRED_FORMAT1Test; | |||||
typedef Predicate1Test ASSERT_PRED_FORMAT1Test; | |||||
typedef Predicate1Test EXPECT_PRED1Test; | |||||
typedef Predicate1Test ASSERT_PRED1Test; | |||||
// Tests a successful EXPECT_PRED1 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(EXPECT_PRED1Test, FunctionOnBuiltInTypeSuccess) { | |||||
EXPECT_PRED1(PredFunction1Int, | |||||
++n1_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful EXPECT_PRED1 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED1Test, FunctionOnUserTypeSuccess) { | |||||
EXPECT_PRED1(PredFunction1Bool, | |||||
Bool(++n1_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful EXPECT_PRED1 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(EXPECT_PRED1Test, FunctorOnBuiltInTypeSuccess) { | |||||
EXPECT_PRED1(PredFunctor1(), | |||||
++n1_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful EXPECT_PRED1 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED1Test, FunctorOnUserTypeSuccess) { | |||||
EXPECT_PRED1(PredFunctor1(), | |||||
Bool(++n1_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a failed EXPECT_PRED1 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(EXPECT_PRED1Test, FunctionOnBuiltInTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED1(PredFunction1Int, | |||||
n1_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed EXPECT_PRED1 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED1Test, FunctionOnUserTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED1(PredFunction1Bool, | |||||
Bool(n1_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed EXPECT_PRED1 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(EXPECT_PRED1Test, FunctorOnBuiltInTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED1(PredFunctor1(), | |||||
n1_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed EXPECT_PRED1 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED1Test, FunctorOnUserTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED1(PredFunctor1(), | |||||
Bool(n1_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a successful ASSERT_PRED1 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(ASSERT_PRED1Test, FunctionOnBuiltInTypeSuccess) { | |||||
ASSERT_PRED1(PredFunction1Int, | |||||
++n1_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful ASSERT_PRED1 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED1Test, FunctionOnUserTypeSuccess) { | |||||
ASSERT_PRED1(PredFunction1Bool, | |||||
Bool(++n1_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful ASSERT_PRED1 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(ASSERT_PRED1Test, FunctorOnBuiltInTypeSuccess) { | |||||
ASSERT_PRED1(PredFunctor1(), | |||||
++n1_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful ASSERT_PRED1 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED1Test, FunctorOnUserTypeSuccess) { | |||||
ASSERT_PRED1(PredFunctor1(), | |||||
Bool(++n1_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a failed ASSERT_PRED1 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(ASSERT_PRED1Test, FunctionOnBuiltInTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED1(PredFunction1Int, | |||||
n1_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed ASSERT_PRED1 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED1Test, FunctionOnUserTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED1(PredFunction1Bool, | |||||
Bool(n1_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed ASSERT_PRED1 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(ASSERT_PRED1Test, FunctorOnBuiltInTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED1(PredFunctor1(), | |||||
n1_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed ASSERT_PRED1 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED1Test, FunctorOnUserTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED1(PredFunctor1(), | |||||
Bool(n1_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a successful EXPECT_PRED_FORMAT1 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(EXPECT_PRED_FORMAT1Test, FunctionOnBuiltInTypeSuccess) { | |||||
EXPECT_PRED_FORMAT1(PredFormatFunction1, | |||||
++n1_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful EXPECT_PRED_FORMAT1 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED_FORMAT1Test, FunctionOnUserTypeSuccess) { | |||||
EXPECT_PRED_FORMAT1(PredFormatFunction1, | |||||
Bool(++n1_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful EXPECT_PRED_FORMAT1 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(EXPECT_PRED_FORMAT1Test, FunctorOnBuiltInTypeSuccess) { | |||||
EXPECT_PRED_FORMAT1(PredFormatFunctor1(), | |||||
++n1_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful EXPECT_PRED_FORMAT1 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED_FORMAT1Test, FunctorOnUserTypeSuccess) { | |||||
EXPECT_PRED_FORMAT1(PredFormatFunctor1(), | |||||
Bool(++n1_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a failed EXPECT_PRED_FORMAT1 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(EXPECT_PRED_FORMAT1Test, FunctionOnBuiltInTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED_FORMAT1(PredFormatFunction1, | |||||
n1_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed EXPECT_PRED_FORMAT1 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED_FORMAT1Test, FunctionOnUserTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED_FORMAT1(PredFormatFunction1, | |||||
Bool(n1_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed EXPECT_PRED_FORMAT1 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(EXPECT_PRED_FORMAT1Test, FunctorOnBuiltInTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED_FORMAT1(PredFormatFunctor1(), | |||||
n1_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed EXPECT_PRED_FORMAT1 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED_FORMAT1Test, FunctorOnUserTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED_FORMAT1(PredFormatFunctor1(), | |||||
Bool(n1_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a successful ASSERT_PRED_FORMAT1 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(ASSERT_PRED_FORMAT1Test, FunctionOnBuiltInTypeSuccess) { | |||||
ASSERT_PRED_FORMAT1(PredFormatFunction1, | |||||
++n1_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful ASSERT_PRED_FORMAT1 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED_FORMAT1Test, FunctionOnUserTypeSuccess) { | |||||
ASSERT_PRED_FORMAT1(PredFormatFunction1, | |||||
Bool(++n1_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful ASSERT_PRED_FORMAT1 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(ASSERT_PRED_FORMAT1Test, FunctorOnBuiltInTypeSuccess) { | |||||
ASSERT_PRED_FORMAT1(PredFormatFunctor1(), | |||||
++n1_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful ASSERT_PRED_FORMAT1 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED_FORMAT1Test, FunctorOnUserTypeSuccess) { | |||||
ASSERT_PRED_FORMAT1(PredFormatFunctor1(), | |||||
Bool(++n1_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a failed ASSERT_PRED_FORMAT1 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(ASSERT_PRED_FORMAT1Test, FunctionOnBuiltInTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED_FORMAT1(PredFormatFunction1, | |||||
n1_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed ASSERT_PRED_FORMAT1 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED_FORMAT1Test, FunctionOnUserTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED_FORMAT1(PredFormatFunction1, | |||||
Bool(n1_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed ASSERT_PRED_FORMAT1 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(ASSERT_PRED_FORMAT1Test, FunctorOnBuiltInTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED_FORMAT1(PredFormatFunctor1(), | |||||
n1_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed ASSERT_PRED_FORMAT1 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED_FORMAT1Test, FunctorOnUserTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED_FORMAT1(PredFormatFunctor1(), | |||||
Bool(n1_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Sample functions/functors for testing binary predicate assertions. | |||||
// A binary predicate function. | |||||
template <typename T1, typename T2> | |||||
bool PredFunction2(T1 v1, T2 v2) { | |||||
return v1 + v2 > 0; | |||||
} | |||||
// The following two functions are needed to circumvent a bug in | |||||
// gcc 2.95.3, which sometimes has problem with the above template | |||||
// function. | |||||
bool PredFunction2Int(int v1, int v2) { | |||||
return v1 + v2 > 0; | |||||
} | |||||
bool PredFunction2Bool(Bool v1, Bool v2) { | |||||
return v1 + v2 > 0; | |||||
} | |||||
// A binary predicate functor. | |||||
struct PredFunctor2 { | |||||
template <typename T1, typename T2> | |||||
bool operator()(const T1& v1, | |||||
const T2& v2) { | |||||
return v1 + v2 > 0; | |||||
} | |||||
}; | |||||
// A binary predicate-formatter function. | |||||
template <typename T1, typename T2> | |||||
testing::AssertionResult PredFormatFunction2(const char* e1, | |||||
const char* e2, | |||||
const T1& v1, | |||||
const T2& v2) { | |||||
if (PredFunction2(v1, v2)) | |||||
return testing::AssertionSuccess(); | |||||
return testing::AssertionFailure() | |||||
<< e1 << " + " << e2 | |||||
<< " is expected to be positive, but evaluates to " | |||||
<< v1 + v2 << "."; | |||||
} | |||||
// A binary predicate-formatter functor. | |||||
struct PredFormatFunctor2 { | |||||
template <typename T1, typename T2> | |||||
testing::AssertionResult operator()(const char* e1, | |||||
const char* e2, | |||||
const T1& v1, | |||||
const T2& v2) const { | |||||
return PredFormatFunction2(e1, e2, v1, v2); | |||||
} | |||||
}; | |||||
// Tests for {EXPECT|ASSERT}_PRED_FORMAT2. | |||||
class Predicate2Test : public testing::Test { | |||||
protected: | |||||
virtual void SetUp() { | |||||
expected_to_finish_ = true; | |||||
finished_ = false; | |||||
n1_ = n2_ = 0; | |||||
} | |||||
virtual void TearDown() { | |||||
// Verifies that each of the predicate's arguments was evaluated | |||||
// exactly once. | |||||
EXPECT_EQ(1, n1_) << | |||||
"The predicate assertion didn't evaluate argument 2 " | |||||
"exactly once."; | |||||
EXPECT_EQ(1, n2_) << | |||||
"The predicate assertion didn't evaluate argument 3 " | |||||
"exactly once."; | |||||
// Verifies that the control flow in the test function is expected. | |||||
if (expected_to_finish_ && !finished_) { | |||||
FAIL() << "The predicate assertion unexpactedly aborted the test."; | |||||
} else if (!expected_to_finish_ && finished_) { | |||||
FAIL() << "The failed predicate assertion didn't abort the test " | |||||
"as expected."; | |||||
} | |||||
} | |||||
// true iff the test function is expected to run to finish. | |||||
static bool expected_to_finish_; | |||||
// true iff the test function did run to finish. | |||||
static bool finished_; | |||||
static int n1_; | |||||
static int n2_; | |||||
}; | |||||
bool Predicate2Test::expected_to_finish_; | |||||
bool Predicate2Test::finished_; | |||||
int Predicate2Test::n1_; | |||||
int Predicate2Test::n2_; | |||||
typedef Predicate2Test EXPECT_PRED_FORMAT2Test; | |||||
typedef Predicate2Test ASSERT_PRED_FORMAT2Test; | |||||
typedef Predicate2Test EXPECT_PRED2Test; | |||||
typedef Predicate2Test ASSERT_PRED2Test; | |||||
// Tests a successful EXPECT_PRED2 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(EXPECT_PRED2Test, FunctionOnBuiltInTypeSuccess) { | |||||
EXPECT_PRED2(PredFunction2Int, | |||||
++n1_, | |||||
++n2_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful EXPECT_PRED2 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED2Test, FunctionOnUserTypeSuccess) { | |||||
EXPECT_PRED2(PredFunction2Bool, | |||||
Bool(++n1_), | |||||
Bool(++n2_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful EXPECT_PRED2 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(EXPECT_PRED2Test, FunctorOnBuiltInTypeSuccess) { | |||||
EXPECT_PRED2(PredFunctor2(), | |||||
++n1_, | |||||
++n2_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful EXPECT_PRED2 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED2Test, FunctorOnUserTypeSuccess) { | |||||
EXPECT_PRED2(PredFunctor2(), | |||||
Bool(++n1_), | |||||
Bool(++n2_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a failed EXPECT_PRED2 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(EXPECT_PRED2Test, FunctionOnBuiltInTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED2(PredFunction2Int, | |||||
n1_++, | |||||
n2_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed EXPECT_PRED2 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED2Test, FunctionOnUserTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED2(PredFunction2Bool, | |||||
Bool(n1_++), | |||||
Bool(n2_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed EXPECT_PRED2 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(EXPECT_PRED2Test, FunctorOnBuiltInTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED2(PredFunctor2(), | |||||
n1_++, | |||||
n2_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed EXPECT_PRED2 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED2Test, FunctorOnUserTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED2(PredFunctor2(), | |||||
Bool(n1_++), | |||||
Bool(n2_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a successful ASSERT_PRED2 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(ASSERT_PRED2Test, FunctionOnBuiltInTypeSuccess) { | |||||
ASSERT_PRED2(PredFunction2Int, | |||||
++n1_, | |||||
++n2_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful ASSERT_PRED2 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED2Test, FunctionOnUserTypeSuccess) { | |||||
ASSERT_PRED2(PredFunction2Bool, | |||||
Bool(++n1_), | |||||
Bool(++n2_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful ASSERT_PRED2 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(ASSERT_PRED2Test, FunctorOnBuiltInTypeSuccess) { | |||||
ASSERT_PRED2(PredFunctor2(), | |||||
++n1_, | |||||
++n2_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful ASSERT_PRED2 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED2Test, FunctorOnUserTypeSuccess) { | |||||
ASSERT_PRED2(PredFunctor2(), | |||||
Bool(++n1_), | |||||
Bool(++n2_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a failed ASSERT_PRED2 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(ASSERT_PRED2Test, FunctionOnBuiltInTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED2(PredFunction2Int, | |||||
n1_++, | |||||
n2_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed ASSERT_PRED2 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED2Test, FunctionOnUserTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED2(PredFunction2Bool, | |||||
Bool(n1_++), | |||||
Bool(n2_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed ASSERT_PRED2 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(ASSERT_PRED2Test, FunctorOnBuiltInTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED2(PredFunctor2(), | |||||
n1_++, | |||||
n2_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed ASSERT_PRED2 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED2Test, FunctorOnUserTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED2(PredFunctor2(), | |||||
Bool(n1_++), | |||||
Bool(n2_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a successful EXPECT_PRED_FORMAT2 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(EXPECT_PRED_FORMAT2Test, FunctionOnBuiltInTypeSuccess) { | |||||
EXPECT_PRED_FORMAT2(PredFormatFunction2, | |||||
++n1_, | |||||
++n2_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful EXPECT_PRED_FORMAT2 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED_FORMAT2Test, FunctionOnUserTypeSuccess) { | |||||
EXPECT_PRED_FORMAT2(PredFormatFunction2, | |||||
Bool(++n1_), | |||||
Bool(++n2_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful EXPECT_PRED_FORMAT2 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(EXPECT_PRED_FORMAT2Test, FunctorOnBuiltInTypeSuccess) { | |||||
EXPECT_PRED_FORMAT2(PredFormatFunctor2(), | |||||
++n1_, | |||||
++n2_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful EXPECT_PRED_FORMAT2 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED_FORMAT2Test, FunctorOnUserTypeSuccess) { | |||||
EXPECT_PRED_FORMAT2(PredFormatFunctor2(), | |||||
Bool(++n1_), | |||||
Bool(++n2_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a failed EXPECT_PRED_FORMAT2 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(EXPECT_PRED_FORMAT2Test, FunctionOnBuiltInTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED_FORMAT2(PredFormatFunction2, | |||||
n1_++, | |||||
n2_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed EXPECT_PRED_FORMAT2 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED_FORMAT2Test, FunctionOnUserTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED_FORMAT2(PredFormatFunction2, | |||||
Bool(n1_++), | |||||
Bool(n2_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed EXPECT_PRED_FORMAT2 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(EXPECT_PRED_FORMAT2Test, FunctorOnBuiltInTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED_FORMAT2(PredFormatFunctor2(), | |||||
n1_++, | |||||
n2_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed EXPECT_PRED_FORMAT2 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED_FORMAT2Test, FunctorOnUserTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED_FORMAT2(PredFormatFunctor2(), | |||||
Bool(n1_++), | |||||
Bool(n2_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a successful ASSERT_PRED_FORMAT2 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(ASSERT_PRED_FORMAT2Test, FunctionOnBuiltInTypeSuccess) { | |||||
ASSERT_PRED_FORMAT2(PredFormatFunction2, | |||||
++n1_, | |||||
++n2_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful ASSERT_PRED_FORMAT2 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED_FORMAT2Test, FunctionOnUserTypeSuccess) { | |||||
ASSERT_PRED_FORMAT2(PredFormatFunction2, | |||||
Bool(++n1_), | |||||
Bool(++n2_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful ASSERT_PRED_FORMAT2 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(ASSERT_PRED_FORMAT2Test, FunctorOnBuiltInTypeSuccess) { | |||||
ASSERT_PRED_FORMAT2(PredFormatFunctor2(), | |||||
++n1_, | |||||
++n2_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful ASSERT_PRED_FORMAT2 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED_FORMAT2Test, FunctorOnUserTypeSuccess) { | |||||
ASSERT_PRED_FORMAT2(PredFormatFunctor2(), | |||||
Bool(++n1_), | |||||
Bool(++n2_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a failed ASSERT_PRED_FORMAT2 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(ASSERT_PRED_FORMAT2Test, FunctionOnBuiltInTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED_FORMAT2(PredFormatFunction2, | |||||
n1_++, | |||||
n2_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed ASSERT_PRED_FORMAT2 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED_FORMAT2Test, FunctionOnUserTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED_FORMAT2(PredFormatFunction2, | |||||
Bool(n1_++), | |||||
Bool(n2_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed ASSERT_PRED_FORMAT2 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(ASSERT_PRED_FORMAT2Test, FunctorOnBuiltInTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED_FORMAT2(PredFormatFunctor2(), | |||||
n1_++, | |||||
n2_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed ASSERT_PRED_FORMAT2 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED_FORMAT2Test, FunctorOnUserTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED_FORMAT2(PredFormatFunctor2(), | |||||
Bool(n1_++), | |||||
Bool(n2_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Sample functions/functors for testing ternary predicate assertions. | |||||
// A ternary predicate function. | |||||
template <typename T1, typename T2, typename T3> | |||||
bool PredFunction3(T1 v1, T2 v2, T3 v3) { | |||||
return v1 + v2 + v3 > 0; | |||||
} | |||||
// The following two functions are needed to circumvent a bug in | |||||
// gcc 2.95.3, which sometimes has problem with the above template | |||||
// function. | |||||
bool PredFunction3Int(int v1, int v2, int v3) { | |||||
return v1 + v2 + v3 > 0; | |||||
} | |||||
bool PredFunction3Bool(Bool v1, Bool v2, Bool v3) { | |||||
return v1 + v2 + v3 > 0; | |||||
} | |||||
// A ternary predicate functor. | |||||
struct PredFunctor3 { | |||||
template <typename T1, typename T2, typename T3> | |||||
bool operator()(const T1& v1, | |||||
const T2& v2, | |||||
const T3& v3) { | |||||
return v1 + v2 + v3 > 0; | |||||
} | |||||
}; | |||||
// A ternary predicate-formatter function. | |||||
template <typename T1, typename T2, typename T3> | |||||
testing::AssertionResult PredFormatFunction3(const char* e1, | |||||
const char* e2, | |||||
const char* e3, | |||||
const T1& v1, | |||||
const T2& v2, | |||||
const T3& v3) { | |||||
if (PredFunction3(v1, v2, v3)) | |||||
return testing::AssertionSuccess(); | |||||
return testing::AssertionFailure() | |||||
<< e1 << " + " << e2 << " + " << e3 | |||||
<< " is expected to be positive, but evaluates to " | |||||
<< v1 + v2 + v3 << "."; | |||||
} | |||||
// A ternary predicate-formatter functor. | |||||
struct PredFormatFunctor3 { | |||||
template <typename T1, typename T2, typename T3> | |||||
testing::AssertionResult operator()(const char* e1, | |||||
const char* e2, | |||||
const char* e3, | |||||
const T1& v1, | |||||
const T2& v2, | |||||
const T3& v3) const { | |||||
return PredFormatFunction3(e1, e2, e3, v1, v2, v3); | |||||
} | |||||
}; | |||||
// Tests for {EXPECT|ASSERT}_PRED_FORMAT3. | |||||
class Predicate3Test : public testing::Test { | |||||
protected: | |||||
virtual void SetUp() { | |||||
expected_to_finish_ = true; | |||||
finished_ = false; | |||||
n1_ = n2_ = n3_ = 0; | |||||
} | |||||
virtual void TearDown() { | |||||
// Verifies that each of the predicate's arguments was evaluated | |||||
// exactly once. | |||||
EXPECT_EQ(1, n1_) << | |||||
"The predicate assertion didn't evaluate argument 2 " | |||||
"exactly once."; | |||||
EXPECT_EQ(1, n2_) << | |||||
"The predicate assertion didn't evaluate argument 3 " | |||||
"exactly once."; | |||||
EXPECT_EQ(1, n3_) << | |||||
"The predicate assertion didn't evaluate argument 4 " | |||||
"exactly once."; | |||||
// Verifies that the control flow in the test function is expected. | |||||
if (expected_to_finish_ && !finished_) { | |||||
FAIL() << "The predicate assertion unexpactedly aborted the test."; | |||||
} else if (!expected_to_finish_ && finished_) { | |||||
FAIL() << "The failed predicate assertion didn't abort the test " | |||||
"as expected."; | |||||
} | |||||
} | |||||
// true iff the test function is expected to run to finish. | |||||
static bool expected_to_finish_; | |||||
// true iff the test function did run to finish. | |||||
static bool finished_; | |||||
static int n1_; | |||||
static int n2_; | |||||
static int n3_; | |||||
}; | |||||
bool Predicate3Test::expected_to_finish_; | |||||
bool Predicate3Test::finished_; | |||||
int Predicate3Test::n1_; | |||||
int Predicate3Test::n2_; | |||||
int Predicate3Test::n3_; | |||||
typedef Predicate3Test EXPECT_PRED_FORMAT3Test; | |||||
typedef Predicate3Test ASSERT_PRED_FORMAT3Test; | |||||
typedef Predicate3Test EXPECT_PRED3Test; | |||||
typedef Predicate3Test ASSERT_PRED3Test; | |||||
// Tests a successful EXPECT_PRED3 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(EXPECT_PRED3Test, FunctionOnBuiltInTypeSuccess) { | |||||
EXPECT_PRED3(PredFunction3Int, | |||||
++n1_, | |||||
++n2_, | |||||
++n3_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful EXPECT_PRED3 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED3Test, FunctionOnUserTypeSuccess) { | |||||
EXPECT_PRED3(PredFunction3Bool, | |||||
Bool(++n1_), | |||||
Bool(++n2_), | |||||
Bool(++n3_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful EXPECT_PRED3 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(EXPECT_PRED3Test, FunctorOnBuiltInTypeSuccess) { | |||||
EXPECT_PRED3(PredFunctor3(), | |||||
++n1_, | |||||
++n2_, | |||||
++n3_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful EXPECT_PRED3 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED3Test, FunctorOnUserTypeSuccess) { | |||||
EXPECT_PRED3(PredFunctor3(), | |||||
Bool(++n1_), | |||||
Bool(++n2_), | |||||
Bool(++n3_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a failed EXPECT_PRED3 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(EXPECT_PRED3Test, FunctionOnBuiltInTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED3(PredFunction3Int, | |||||
n1_++, | |||||
n2_++, | |||||
n3_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed EXPECT_PRED3 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED3Test, FunctionOnUserTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED3(PredFunction3Bool, | |||||
Bool(n1_++), | |||||
Bool(n2_++), | |||||
Bool(n3_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed EXPECT_PRED3 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(EXPECT_PRED3Test, FunctorOnBuiltInTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED3(PredFunctor3(), | |||||
n1_++, | |||||
n2_++, | |||||
n3_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed EXPECT_PRED3 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED3Test, FunctorOnUserTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED3(PredFunctor3(), | |||||
Bool(n1_++), | |||||
Bool(n2_++), | |||||
Bool(n3_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a successful ASSERT_PRED3 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(ASSERT_PRED3Test, FunctionOnBuiltInTypeSuccess) { | |||||
ASSERT_PRED3(PredFunction3Int, | |||||
++n1_, | |||||
++n2_, | |||||
++n3_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful ASSERT_PRED3 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED3Test, FunctionOnUserTypeSuccess) { | |||||
ASSERT_PRED3(PredFunction3Bool, | |||||
Bool(++n1_), | |||||
Bool(++n2_), | |||||
Bool(++n3_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful ASSERT_PRED3 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(ASSERT_PRED3Test, FunctorOnBuiltInTypeSuccess) { | |||||
ASSERT_PRED3(PredFunctor3(), | |||||
++n1_, | |||||
++n2_, | |||||
++n3_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful ASSERT_PRED3 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED3Test, FunctorOnUserTypeSuccess) { | |||||
ASSERT_PRED3(PredFunctor3(), | |||||
Bool(++n1_), | |||||
Bool(++n2_), | |||||
Bool(++n3_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a failed ASSERT_PRED3 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(ASSERT_PRED3Test, FunctionOnBuiltInTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED3(PredFunction3Int, | |||||
n1_++, | |||||
n2_++, | |||||
n3_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed ASSERT_PRED3 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED3Test, FunctionOnUserTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED3(PredFunction3Bool, | |||||
Bool(n1_++), | |||||
Bool(n2_++), | |||||
Bool(n3_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed ASSERT_PRED3 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(ASSERT_PRED3Test, FunctorOnBuiltInTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED3(PredFunctor3(), | |||||
n1_++, | |||||
n2_++, | |||||
n3_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed ASSERT_PRED3 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED3Test, FunctorOnUserTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED3(PredFunctor3(), | |||||
Bool(n1_++), | |||||
Bool(n2_++), | |||||
Bool(n3_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a successful EXPECT_PRED_FORMAT3 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(EXPECT_PRED_FORMAT3Test, FunctionOnBuiltInTypeSuccess) { | |||||
EXPECT_PRED_FORMAT3(PredFormatFunction3, | |||||
++n1_, | |||||
++n2_, | |||||
++n3_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful EXPECT_PRED_FORMAT3 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED_FORMAT3Test, FunctionOnUserTypeSuccess) { | |||||
EXPECT_PRED_FORMAT3(PredFormatFunction3, | |||||
Bool(++n1_), | |||||
Bool(++n2_), | |||||
Bool(++n3_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful EXPECT_PRED_FORMAT3 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(EXPECT_PRED_FORMAT3Test, FunctorOnBuiltInTypeSuccess) { | |||||
EXPECT_PRED_FORMAT3(PredFormatFunctor3(), | |||||
++n1_, | |||||
++n2_, | |||||
++n3_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful EXPECT_PRED_FORMAT3 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED_FORMAT3Test, FunctorOnUserTypeSuccess) { | |||||
EXPECT_PRED_FORMAT3(PredFormatFunctor3(), | |||||
Bool(++n1_), | |||||
Bool(++n2_), | |||||
Bool(++n3_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a failed EXPECT_PRED_FORMAT3 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(EXPECT_PRED_FORMAT3Test, FunctionOnBuiltInTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED_FORMAT3(PredFormatFunction3, | |||||
n1_++, | |||||
n2_++, | |||||
n3_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed EXPECT_PRED_FORMAT3 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED_FORMAT3Test, FunctionOnUserTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED_FORMAT3(PredFormatFunction3, | |||||
Bool(n1_++), | |||||
Bool(n2_++), | |||||
Bool(n3_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed EXPECT_PRED_FORMAT3 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(EXPECT_PRED_FORMAT3Test, FunctorOnBuiltInTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED_FORMAT3(PredFormatFunctor3(), | |||||
n1_++, | |||||
n2_++, | |||||
n3_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed EXPECT_PRED_FORMAT3 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED_FORMAT3Test, FunctorOnUserTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED_FORMAT3(PredFormatFunctor3(), | |||||
Bool(n1_++), | |||||
Bool(n2_++), | |||||
Bool(n3_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a successful ASSERT_PRED_FORMAT3 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(ASSERT_PRED_FORMAT3Test, FunctionOnBuiltInTypeSuccess) { | |||||
ASSERT_PRED_FORMAT3(PredFormatFunction3, | |||||
++n1_, | |||||
++n2_, | |||||
++n3_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful ASSERT_PRED_FORMAT3 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED_FORMAT3Test, FunctionOnUserTypeSuccess) { | |||||
ASSERT_PRED_FORMAT3(PredFormatFunction3, | |||||
Bool(++n1_), | |||||
Bool(++n2_), | |||||
Bool(++n3_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful ASSERT_PRED_FORMAT3 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(ASSERT_PRED_FORMAT3Test, FunctorOnBuiltInTypeSuccess) { | |||||
ASSERT_PRED_FORMAT3(PredFormatFunctor3(), | |||||
++n1_, | |||||
++n2_, | |||||
++n3_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful ASSERT_PRED_FORMAT3 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED_FORMAT3Test, FunctorOnUserTypeSuccess) { | |||||
ASSERT_PRED_FORMAT3(PredFormatFunctor3(), | |||||
Bool(++n1_), | |||||
Bool(++n2_), | |||||
Bool(++n3_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a failed ASSERT_PRED_FORMAT3 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(ASSERT_PRED_FORMAT3Test, FunctionOnBuiltInTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED_FORMAT3(PredFormatFunction3, | |||||
n1_++, | |||||
n2_++, | |||||
n3_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed ASSERT_PRED_FORMAT3 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED_FORMAT3Test, FunctionOnUserTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED_FORMAT3(PredFormatFunction3, | |||||
Bool(n1_++), | |||||
Bool(n2_++), | |||||
Bool(n3_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed ASSERT_PRED_FORMAT3 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(ASSERT_PRED_FORMAT3Test, FunctorOnBuiltInTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED_FORMAT3(PredFormatFunctor3(), | |||||
n1_++, | |||||
n2_++, | |||||
n3_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed ASSERT_PRED_FORMAT3 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED_FORMAT3Test, FunctorOnUserTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED_FORMAT3(PredFormatFunctor3(), | |||||
Bool(n1_++), | |||||
Bool(n2_++), | |||||
Bool(n3_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Sample functions/functors for testing 4-ary predicate assertions. | |||||
// A 4-ary predicate function. | |||||
template <typename T1, typename T2, typename T3, typename T4> | |||||
bool PredFunction4(T1 v1, T2 v2, T3 v3, T4 v4) { | |||||
return v1 + v2 + v3 + v4 > 0; | |||||
} | |||||
// The following two functions are needed to circumvent a bug in | |||||
// gcc 2.95.3, which sometimes has problem with the above template | |||||
// function. | |||||
bool PredFunction4Int(int v1, int v2, int v3, int v4) { | |||||
return v1 + v2 + v3 + v4 > 0; | |||||
} | |||||
bool PredFunction4Bool(Bool v1, Bool v2, Bool v3, Bool v4) { | |||||
return v1 + v2 + v3 + v4 > 0; | |||||
} | |||||
// A 4-ary predicate functor. | |||||
struct PredFunctor4 { | |||||
template <typename T1, typename T2, typename T3, typename T4> | |||||
bool operator()(const T1& v1, | |||||
const T2& v2, | |||||
const T3& v3, | |||||
const T4& v4) { | |||||
return v1 + v2 + v3 + v4 > 0; | |||||
} | |||||
}; | |||||
// A 4-ary predicate-formatter function. | |||||
template <typename T1, typename T2, typename T3, typename T4> | |||||
testing::AssertionResult PredFormatFunction4(const char* e1, | |||||
const char* e2, | |||||
const char* e3, | |||||
const char* e4, | |||||
const T1& v1, | |||||
const T2& v2, | |||||
const T3& v3, | |||||
const T4& v4) { | |||||
if (PredFunction4(v1, v2, v3, v4)) | |||||
return testing::AssertionSuccess(); | |||||
return testing::AssertionFailure() | |||||
<< e1 << " + " << e2 << " + " << e3 << " + " << e4 | |||||
<< " is expected to be positive, but evaluates to " | |||||
<< v1 + v2 + v3 + v4 << "."; | |||||
} | |||||
// A 4-ary predicate-formatter functor. | |||||
struct PredFormatFunctor4 { | |||||
template <typename T1, typename T2, typename T3, typename T4> | |||||
testing::AssertionResult operator()(const char* e1, | |||||
const char* e2, | |||||
const char* e3, | |||||
const char* e4, | |||||
const T1& v1, | |||||
const T2& v2, | |||||
const T3& v3, | |||||
const T4& v4) const { | |||||
return PredFormatFunction4(e1, e2, e3, e4, v1, v2, v3, v4); | |||||
} | |||||
}; | |||||
// Tests for {EXPECT|ASSERT}_PRED_FORMAT4. | |||||
class Predicate4Test : public testing::Test { | |||||
protected: | |||||
virtual void SetUp() { | |||||
expected_to_finish_ = true; | |||||
finished_ = false; | |||||
n1_ = n2_ = n3_ = n4_ = 0; | |||||
} | |||||
virtual void TearDown() { | |||||
// Verifies that each of the predicate's arguments was evaluated | |||||
// exactly once. | |||||
EXPECT_EQ(1, n1_) << | |||||
"The predicate assertion didn't evaluate argument 2 " | |||||
"exactly once."; | |||||
EXPECT_EQ(1, n2_) << | |||||
"The predicate assertion didn't evaluate argument 3 " | |||||
"exactly once."; | |||||
EXPECT_EQ(1, n3_) << | |||||
"The predicate assertion didn't evaluate argument 4 " | |||||
"exactly once."; | |||||
EXPECT_EQ(1, n4_) << | |||||
"The predicate assertion didn't evaluate argument 5 " | |||||
"exactly once."; | |||||
// Verifies that the control flow in the test function is expected. | |||||
if (expected_to_finish_ && !finished_) { | |||||
FAIL() << "The predicate assertion unexpactedly aborted the test."; | |||||
} else if (!expected_to_finish_ && finished_) { | |||||
FAIL() << "The failed predicate assertion didn't abort the test " | |||||
"as expected."; | |||||
} | |||||
} | |||||
// true iff the test function is expected to run to finish. | |||||
static bool expected_to_finish_; | |||||
// true iff the test function did run to finish. | |||||
static bool finished_; | |||||
static int n1_; | |||||
static int n2_; | |||||
static int n3_; | |||||
static int n4_; | |||||
}; | |||||
bool Predicate4Test::expected_to_finish_; | |||||
bool Predicate4Test::finished_; | |||||
int Predicate4Test::n1_; | |||||
int Predicate4Test::n2_; | |||||
int Predicate4Test::n3_; | |||||
int Predicate4Test::n4_; | |||||
typedef Predicate4Test EXPECT_PRED_FORMAT4Test; | |||||
typedef Predicate4Test ASSERT_PRED_FORMAT4Test; | |||||
typedef Predicate4Test EXPECT_PRED4Test; | |||||
typedef Predicate4Test ASSERT_PRED4Test; | |||||
// Tests a successful EXPECT_PRED4 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(EXPECT_PRED4Test, FunctionOnBuiltInTypeSuccess) { | |||||
EXPECT_PRED4(PredFunction4Int, | |||||
++n1_, | |||||
++n2_, | |||||
++n3_, | |||||
++n4_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful EXPECT_PRED4 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED4Test, FunctionOnUserTypeSuccess) { | |||||
EXPECT_PRED4(PredFunction4Bool, | |||||
Bool(++n1_), | |||||
Bool(++n2_), | |||||
Bool(++n3_), | |||||
Bool(++n4_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful EXPECT_PRED4 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(EXPECT_PRED4Test, FunctorOnBuiltInTypeSuccess) { | |||||
EXPECT_PRED4(PredFunctor4(), | |||||
++n1_, | |||||
++n2_, | |||||
++n3_, | |||||
++n4_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful EXPECT_PRED4 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED4Test, FunctorOnUserTypeSuccess) { | |||||
EXPECT_PRED4(PredFunctor4(), | |||||
Bool(++n1_), | |||||
Bool(++n2_), | |||||
Bool(++n3_), | |||||
Bool(++n4_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a failed EXPECT_PRED4 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(EXPECT_PRED4Test, FunctionOnBuiltInTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED4(PredFunction4Int, | |||||
n1_++, | |||||
n2_++, | |||||
n3_++, | |||||
n4_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed EXPECT_PRED4 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED4Test, FunctionOnUserTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED4(PredFunction4Bool, | |||||
Bool(n1_++), | |||||
Bool(n2_++), | |||||
Bool(n3_++), | |||||
Bool(n4_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed EXPECT_PRED4 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(EXPECT_PRED4Test, FunctorOnBuiltInTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED4(PredFunctor4(), | |||||
n1_++, | |||||
n2_++, | |||||
n3_++, | |||||
n4_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed EXPECT_PRED4 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED4Test, FunctorOnUserTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED4(PredFunctor4(), | |||||
Bool(n1_++), | |||||
Bool(n2_++), | |||||
Bool(n3_++), | |||||
Bool(n4_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a successful ASSERT_PRED4 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(ASSERT_PRED4Test, FunctionOnBuiltInTypeSuccess) { | |||||
ASSERT_PRED4(PredFunction4Int, | |||||
++n1_, | |||||
++n2_, | |||||
++n3_, | |||||
++n4_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful ASSERT_PRED4 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED4Test, FunctionOnUserTypeSuccess) { | |||||
ASSERT_PRED4(PredFunction4Bool, | |||||
Bool(++n1_), | |||||
Bool(++n2_), | |||||
Bool(++n3_), | |||||
Bool(++n4_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful ASSERT_PRED4 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(ASSERT_PRED4Test, FunctorOnBuiltInTypeSuccess) { | |||||
ASSERT_PRED4(PredFunctor4(), | |||||
++n1_, | |||||
++n2_, | |||||
++n3_, | |||||
++n4_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful ASSERT_PRED4 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED4Test, FunctorOnUserTypeSuccess) { | |||||
ASSERT_PRED4(PredFunctor4(), | |||||
Bool(++n1_), | |||||
Bool(++n2_), | |||||
Bool(++n3_), | |||||
Bool(++n4_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a failed ASSERT_PRED4 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(ASSERT_PRED4Test, FunctionOnBuiltInTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED4(PredFunction4Int, | |||||
n1_++, | |||||
n2_++, | |||||
n3_++, | |||||
n4_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed ASSERT_PRED4 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED4Test, FunctionOnUserTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED4(PredFunction4Bool, | |||||
Bool(n1_++), | |||||
Bool(n2_++), | |||||
Bool(n3_++), | |||||
Bool(n4_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed ASSERT_PRED4 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(ASSERT_PRED4Test, FunctorOnBuiltInTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED4(PredFunctor4(), | |||||
n1_++, | |||||
n2_++, | |||||
n3_++, | |||||
n4_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed ASSERT_PRED4 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED4Test, FunctorOnUserTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED4(PredFunctor4(), | |||||
Bool(n1_++), | |||||
Bool(n2_++), | |||||
Bool(n3_++), | |||||
Bool(n4_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a successful EXPECT_PRED_FORMAT4 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(EXPECT_PRED_FORMAT4Test, FunctionOnBuiltInTypeSuccess) { | |||||
EXPECT_PRED_FORMAT4(PredFormatFunction4, | |||||
++n1_, | |||||
++n2_, | |||||
++n3_, | |||||
++n4_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful EXPECT_PRED_FORMAT4 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED_FORMAT4Test, FunctionOnUserTypeSuccess) { | |||||
EXPECT_PRED_FORMAT4(PredFormatFunction4, | |||||
Bool(++n1_), | |||||
Bool(++n2_), | |||||
Bool(++n3_), | |||||
Bool(++n4_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful EXPECT_PRED_FORMAT4 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(EXPECT_PRED_FORMAT4Test, FunctorOnBuiltInTypeSuccess) { | |||||
EXPECT_PRED_FORMAT4(PredFormatFunctor4(), | |||||
++n1_, | |||||
++n2_, | |||||
++n3_, | |||||
++n4_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful EXPECT_PRED_FORMAT4 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED_FORMAT4Test, FunctorOnUserTypeSuccess) { | |||||
EXPECT_PRED_FORMAT4(PredFormatFunctor4(), | |||||
Bool(++n1_), | |||||
Bool(++n2_), | |||||
Bool(++n3_), | |||||
Bool(++n4_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a failed EXPECT_PRED_FORMAT4 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(EXPECT_PRED_FORMAT4Test, FunctionOnBuiltInTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED_FORMAT4(PredFormatFunction4, | |||||
n1_++, | |||||
n2_++, | |||||
n3_++, | |||||
n4_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed EXPECT_PRED_FORMAT4 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED_FORMAT4Test, FunctionOnUserTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED_FORMAT4(PredFormatFunction4, | |||||
Bool(n1_++), | |||||
Bool(n2_++), | |||||
Bool(n3_++), | |||||
Bool(n4_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed EXPECT_PRED_FORMAT4 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(EXPECT_PRED_FORMAT4Test, FunctorOnBuiltInTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED_FORMAT4(PredFormatFunctor4(), | |||||
n1_++, | |||||
n2_++, | |||||
n3_++, | |||||
n4_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed EXPECT_PRED_FORMAT4 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED_FORMAT4Test, FunctorOnUserTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED_FORMAT4(PredFormatFunctor4(), | |||||
Bool(n1_++), | |||||
Bool(n2_++), | |||||
Bool(n3_++), | |||||
Bool(n4_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a successful ASSERT_PRED_FORMAT4 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(ASSERT_PRED_FORMAT4Test, FunctionOnBuiltInTypeSuccess) { | |||||
ASSERT_PRED_FORMAT4(PredFormatFunction4, | |||||
++n1_, | |||||
++n2_, | |||||
++n3_, | |||||
++n4_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful ASSERT_PRED_FORMAT4 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED_FORMAT4Test, FunctionOnUserTypeSuccess) { | |||||
ASSERT_PRED_FORMAT4(PredFormatFunction4, | |||||
Bool(++n1_), | |||||
Bool(++n2_), | |||||
Bool(++n3_), | |||||
Bool(++n4_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful ASSERT_PRED_FORMAT4 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(ASSERT_PRED_FORMAT4Test, FunctorOnBuiltInTypeSuccess) { | |||||
ASSERT_PRED_FORMAT4(PredFormatFunctor4(), | |||||
++n1_, | |||||
++n2_, | |||||
++n3_, | |||||
++n4_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful ASSERT_PRED_FORMAT4 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED_FORMAT4Test, FunctorOnUserTypeSuccess) { | |||||
ASSERT_PRED_FORMAT4(PredFormatFunctor4(), | |||||
Bool(++n1_), | |||||
Bool(++n2_), | |||||
Bool(++n3_), | |||||
Bool(++n4_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a failed ASSERT_PRED_FORMAT4 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(ASSERT_PRED_FORMAT4Test, FunctionOnBuiltInTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED_FORMAT4(PredFormatFunction4, | |||||
n1_++, | |||||
n2_++, | |||||
n3_++, | |||||
n4_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed ASSERT_PRED_FORMAT4 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED_FORMAT4Test, FunctionOnUserTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED_FORMAT4(PredFormatFunction4, | |||||
Bool(n1_++), | |||||
Bool(n2_++), | |||||
Bool(n3_++), | |||||
Bool(n4_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed ASSERT_PRED_FORMAT4 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(ASSERT_PRED_FORMAT4Test, FunctorOnBuiltInTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED_FORMAT4(PredFormatFunctor4(), | |||||
n1_++, | |||||
n2_++, | |||||
n3_++, | |||||
n4_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed ASSERT_PRED_FORMAT4 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED_FORMAT4Test, FunctorOnUserTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED_FORMAT4(PredFormatFunctor4(), | |||||
Bool(n1_++), | |||||
Bool(n2_++), | |||||
Bool(n3_++), | |||||
Bool(n4_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Sample functions/functors for testing 5-ary predicate assertions. | |||||
// A 5-ary predicate function. | |||||
template <typename T1, typename T2, typename T3, typename T4, typename T5> | |||||
bool PredFunction5(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5) { | |||||
return v1 + v2 + v3 + v4 + v5 > 0; | |||||
} | |||||
// The following two functions are needed to circumvent a bug in | |||||
// gcc 2.95.3, which sometimes has problem with the above template | |||||
// function. | |||||
bool PredFunction5Int(int v1, int v2, int v3, int v4, int v5) { | |||||
return v1 + v2 + v3 + v4 + v5 > 0; | |||||
} | |||||
bool PredFunction5Bool(Bool v1, Bool v2, Bool v3, Bool v4, Bool v5) { | |||||
return v1 + v2 + v3 + v4 + v5 > 0; | |||||
} | |||||
// A 5-ary predicate functor. | |||||
struct PredFunctor5 { | |||||
template <typename T1, typename T2, typename T3, typename T4, typename T5> | |||||
bool operator()(const T1& v1, | |||||
const T2& v2, | |||||
const T3& v3, | |||||
const T4& v4, | |||||
const T5& v5) { | |||||
return v1 + v2 + v3 + v4 + v5 > 0; | |||||
} | |||||
}; | |||||
// A 5-ary predicate-formatter function. | |||||
template <typename T1, typename T2, typename T3, typename T4, typename T5> | |||||
testing::AssertionResult PredFormatFunction5(const char* e1, | |||||
const char* e2, | |||||
const char* e3, | |||||
const char* e4, | |||||
const char* e5, | |||||
const T1& v1, | |||||
const T2& v2, | |||||
const T3& v3, | |||||
const T4& v4, | |||||
const T5& v5) { | |||||
if (PredFunction5(v1, v2, v3, v4, v5)) | |||||
return testing::AssertionSuccess(); | |||||
return testing::AssertionFailure() | |||||
<< e1 << " + " << e2 << " + " << e3 << " + " << e4 << " + " << e5 | |||||
<< " is expected to be positive, but evaluates to " | |||||
<< v1 + v2 + v3 + v4 + v5 << "."; | |||||
} | |||||
// A 5-ary predicate-formatter functor. | |||||
struct PredFormatFunctor5 { | |||||
template <typename T1, typename T2, typename T3, typename T4, typename T5> | |||||
testing::AssertionResult operator()(const char* e1, | |||||
const char* e2, | |||||
const char* e3, | |||||
const char* e4, | |||||
const char* e5, | |||||
const T1& v1, | |||||
const T2& v2, | |||||
const T3& v3, | |||||
const T4& v4, | |||||
const T5& v5) const { | |||||
return PredFormatFunction5(e1, e2, e3, e4, e5, v1, v2, v3, v4, v5); | |||||
} | |||||
}; | |||||
// Tests for {EXPECT|ASSERT}_PRED_FORMAT5. | |||||
class Predicate5Test : public testing::Test { | |||||
protected: | |||||
virtual void SetUp() { | |||||
expected_to_finish_ = true; | |||||
finished_ = false; | |||||
n1_ = n2_ = n3_ = n4_ = n5_ = 0; | |||||
} | |||||
virtual void TearDown() { | |||||
// Verifies that each of the predicate's arguments was evaluated | |||||
// exactly once. | |||||
EXPECT_EQ(1, n1_) << | |||||
"The predicate assertion didn't evaluate argument 2 " | |||||
"exactly once."; | |||||
EXPECT_EQ(1, n2_) << | |||||
"The predicate assertion didn't evaluate argument 3 " | |||||
"exactly once."; | |||||
EXPECT_EQ(1, n3_) << | |||||
"The predicate assertion didn't evaluate argument 4 " | |||||
"exactly once."; | |||||
EXPECT_EQ(1, n4_) << | |||||
"The predicate assertion didn't evaluate argument 5 " | |||||
"exactly once."; | |||||
EXPECT_EQ(1, n5_) << | |||||
"The predicate assertion didn't evaluate argument 6 " | |||||
"exactly once."; | |||||
// Verifies that the control flow in the test function is expected. | |||||
if (expected_to_finish_ && !finished_) { | |||||
FAIL() << "The predicate assertion unexpactedly aborted the test."; | |||||
} else if (!expected_to_finish_ && finished_) { | |||||
FAIL() << "The failed predicate assertion didn't abort the test " | |||||
"as expected."; | |||||
} | |||||
} | |||||
// true iff the test function is expected to run to finish. | |||||
static bool expected_to_finish_; | |||||
// true iff the test function did run to finish. | |||||
static bool finished_; | |||||
static int n1_; | |||||
static int n2_; | |||||
static int n3_; | |||||
static int n4_; | |||||
static int n5_; | |||||
}; | |||||
bool Predicate5Test::expected_to_finish_; | |||||
bool Predicate5Test::finished_; | |||||
int Predicate5Test::n1_; | |||||
int Predicate5Test::n2_; | |||||
int Predicate5Test::n3_; | |||||
int Predicate5Test::n4_; | |||||
int Predicate5Test::n5_; | |||||
typedef Predicate5Test EXPECT_PRED_FORMAT5Test; | |||||
typedef Predicate5Test ASSERT_PRED_FORMAT5Test; | |||||
typedef Predicate5Test EXPECT_PRED5Test; | |||||
typedef Predicate5Test ASSERT_PRED5Test; | |||||
// Tests a successful EXPECT_PRED5 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(EXPECT_PRED5Test, FunctionOnBuiltInTypeSuccess) { | |||||
EXPECT_PRED5(PredFunction5Int, | |||||
++n1_, | |||||
++n2_, | |||||
++n3_, | |||||
++n4_, | |||||
++n5_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful EXPECT_PRED5 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED5Test, FunctionOnUserTypeSuccess) { | |||||
EXPECT_PRED5(PredFunction5Bool, | |||||
Bool(++n1_), | |||||
Bool(++n2_), | |||||
Bool(++n3_), | |||||
Bool(++n4_), | |||||
Bool(++n5_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful EXPECT_PRED5 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(EXPECT_PRED5Test, FunctorOnBuiltInTypeSuccess) { | |||||
EXPECT_PRED5(PredFunctor5(), | |||||
++n1_, | |||||
++n2_, | |||||
++n3_, | |||||
++n4_, | |||||
++n5_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful EXPECT_PRED5 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED5Test, FunctorOnUserTypeSuccess) { | |||||
EXPECT_PRED5(PredFunctor5(), | |||||
Bool(++n1_), | |||||
Bool(++n2_), | |||||
Bool(++n3_), | |||||
Bool(++n4_), | |||||
Bool(++n5_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a failed EXPECT_PRED5 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(EXPECT_PRED5Test, FunctionOnBuiltInTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED5(PredFunction5Int, | |||||
n1_++, | |||||
n2_++, | |||||
n3_++, | |||||
n4_++, | |||||
n5_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed EXPECT_PRED5 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED5Test, FunctionOnUserTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED5(PredFunction5Bool, | |||||
Bool(n1_++), | |||||
Bool(n2_++), | |||||
Bool(n3_++), | |||||
Bool(n4_++), | |||||
Bool(n5_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed EXPECT_PRED5 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(EXPECT_PRED5Test, FunctorOnBuiltInTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED5(PredFunctor5(), | |||||
n1_++, | |||||
n2_++, | |||||
n3_++, | |||||
n4_++, | |||||
n5_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed EXPECT_PRED5 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED5Test, FunctorOnUserTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED5(PredFunctor5(), | |||||
Bool(n1_++), | |||||
Bool(n2_++), | |||||
Bool(n3_++), | |||||
Bool(n4_++), | |||||
Bool(n5_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a successful ASSERT_PRED5 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(ASSERT_PRED5Test, FunctionOnBuiltInTypeSuccess) { | |||||
ASSERT_PRED5(PredFunction5Int, | |||||
++n1_, | |||||
++n2_, | |||||
++n3_, | |||||
++n4_, | |||||
++n5_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful ASSERT_PRED5 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED5Test, FunctionOnUserTypeSuccess) { | |||||
ASSERT_PRED5(PredFunction5Bool, | |||||
Bool(++n1_), | |||||
Bool(++n2_), | |||||
Bool(++n3_), | |||||
Bool(++n4_), | |||||
Bool(++n5_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful ASSERT_PRED5 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(ASSERT_PRED5Test, FunctorOnBuiltInTypeSuccess) { | |||||
ASSERT_PRED5(PredFunctor5(), | |||||
++n1_, | |||||
++n2_, | |||||
++n3_, | |||||
++n4_, | |||||
++n5_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful ASSERT_PRED5 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED5Test, FunctorOnUserTypeSuccess) { | |||||
ASSERT_PRED5(PredFunctor5(), | |||||
Bool(++n1_), | |||||
Bool(++n2_), | |||||
Bool(++n3_), | |||||
Bool(++n4_), | |||||
Bool(++n5_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a failed ASSERT_PRED5 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(ASSERT_PRED5Test, FunctionOnBuiltInTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED5(PredFunction5Int, | |||||
n1_++, | |||||
n2_++, | |||||
n3_++, | |||||
n4_++, | |||||
n5_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed ASSERT_PRED5 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED5Test, FunctionOnUserTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED5(PredFunction5Bool, | |||||
Bool(n1_++), | |||||
Bool(n2_++), | |||||
Bool(n3_++), | |||||
Bool(n4_++), | |||||
Bool(n5_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed ASSERT_PRED5 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(ASSERT_PRED5Test, FunctorOnBuiltInTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED5(PredFunctor5(), | |||||
n1_++, | |||||
n2_++, | |||||
n3_++, | |||||
n4_++, | |||||
n5_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed ASSERT_PRED5 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED5Test, FunctorOnUserTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED5(PredFunctor5(), | |||||
Bool(n1_++), | |||||
Bool(n2_++), | |||||
Bool(n3_++), | |||||
Bool(n4_++), | |||||
Bool(n5_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a successful EXPECT_PRED_FORMAT5 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(EXPECT_PRED_FORMAT5Test, FunctionOnBuiltInTypeSuccess) { | |||||
EXPECT_PRED_FORMAT5(PredFormatFunction5, | |||||
++n1_, | |||||
++n2_, | |||||
++n3_, | |||||
++n4_, | |||||
++n5_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful EXPECT_PRED_FORMAT5 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED_FORMAT5Test, FunctionOnUserTypeSuccess) { | |||||
EXPECT_PRED_FORMAT5(PredFormatFunction5, | |||||
Bool(++n1_), | |||||
Bool(++n2_), | |||||
Bool(++n3_), | |||||
Bool(++n4_), | |||||
Bool(++n5_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful EXPECT_PRED_FORMAT5 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(EXPECT_PRED_FORMAT5Test, FunctorOnBuiltInTypeSuccess) { | |||||
EXPECT_PRED_FORMAT5(PredFormatFunctor5(), | |||||
++n1_, | |||||
++n2_, | |||||
++n3_, | |||||
++n4_, | |||||
++n5_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful EXPECT_PRED_FORMAT5 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED_FORMAT5Test, FunctorOnUserTypeSuccess) { | |||||
EXPECT_PRED_FORMAT5(PredFormatFunctor5(), | |||||
Bool(++n1_), | |||||
Bool(++n2_), | |||||
Bool(++n3_), | |||||
Bool(++n4_), | |||||
Bool(++n5_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a failed EXPECT_PRED_FORMAT5 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(EXPECT_PRED_FORMAT5Test, FunctionOnBuiltInTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED_FORMAT5(PredFormatFunction5, | |||||
n1_++, | |||||
n2_++, | |||||
n3_++, | |||||
n4_++, | |||||
n5_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed EXPECT_PRED_FORMAT5 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED_FORMAT5Test, FunctionOnUserTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED_FORMAT5(PredFormatFunction5, | |||||
Bool(n1_++), | |||||
Bool(n2_++), | |||||
Bool(n3_++), | |||||
Bool(n4_++), | |||||
Bool(n5_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed EXPECT_PRED_FORMAT5 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(EXPECT_PRED_FORMAT5Test, FunctorOnBuiltInTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED_FORMAT5(PredFormatFunctor5(), | |||||
n1_++, | |||||
n2_++, | |||||
n3_++, | |||||
n4_++, | |||||
n5_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed EXPECT_PRED_FORMAT5 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(EXPECT_PRED_FORMAT5Test, FunctorOnUserTypeFailure) { | |||||
EXPECT_NONFATAL_FAILURE({ // NOLINT | |||||
EXPECT_PRED_FORMAT5(PredFormatFunctor5(), | |||||
Bool(n1_++), | |||||
Bool(n2_++), | |||||
Bool(n3_++), | |||||
Bool(n4_++), | |||||
Bool(n5_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a successful ASSERT_PRED_FORMAT5 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(ASSERT_PRED_FORMAT5Test, FunctionOnBuiltInTypeSuccess) { | |||||
ASSERT_PRED_FORMAT5(PredFormatFunction5, | |||||
++n1_, | |||||
++n2_, | |||||
++n3_, | |||||
++n4_, | |||||
++n5_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful ASSERT_PRED_FORMAT5 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED_FORMAT5Test, FunctionOnUserTypeSuccess) { | |||||
ASSERT_PRED_FORMAT5(PredFormatFunction5, | |||||
Bool(++n1_), | |||||
Bool(++n2_), | |||||
Bool(++n3_), | |||||
Bool(++n4_), | |||||
Bool(++n5_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful ASSERT_PRED_FORMAT5 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(ASSERT_PRED_FORMAT5Test, FunctorOnBuiltInTypeSuccess) { | |||||
ASSERT_PRED_FORMAT5(PredFormatFunctor5(), | |||||
++n1_, | |||||
++n2_, | |||||
++n3_, | |||||
++n4_, | |||||
++n5_); | |||||
finished_ = true; | |||||
} | |||||
// Tests a successful ASSERT_PRED_FORMAT5 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED_FORMAT5Test, FunctorOnUserTypeSuccess) { | |||||
ASSERT_PRED_FORMAT5(PredFormatFunctor5(), | |||||
Bool(++n1_), | |||||
Bool(++n2_), | |||||
Bool(++n3_), | |||||
Bool(++n4_), | |||||
Bool(++n5_)); | |||||
finished_ = true; | |||||
} | |||||
// Tests a failed ASSERT_PRED_FORMAT5 where the | |||||
// predicate-formatter is a function on a built-in type (int). | |||||
TEST_F(ASSERT_PRED_FORMAT5Test, FunctionOnBuiltInTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED_FORMAT5(PredFormatFunction5, | |||||
n1_++, | |||||
n2_++, | |||||
n3_++, | |||||
n4_++, | |||||
n5_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed ASSERT_PRED_FORMAT5 where the | |||||
// predicate-formatter is a function on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED_FORMAT5Test, FunctionOnUserTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED_FORMAT5(PredFormatFunction5, | |||||
Bool(n1_++), | |||||
Bool(n2_++), | |||||
Bool(n3_++), | |||||
Bool(n4_++), | |||||
Bool(n5_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed ASSERT_PRED_FORMAT5 where the | |||||
// predicate-formatter is a functor on a built-in type (int). | |||||
TEST_F(ASSERT_PRED_FORMAT5Test, FunctorOnBuiltInTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED_FORMAT5(PredFormatFunctor5(), | |||||
n1_++, | |||||
n2_++, | |||||
n3_++, | |||||
n4_++, | |||||
n5_++); | |||||
finished_ = true; | |||||
}, ""); | |||||
} | |||||
// Tests a failed ASSERT_PRED_FORMAT5 where the | |||||
// predicate-formatter is a functor on a user-defined type (Bool). | |||||
TEST_F(ASSERT_PRED_FORMAT5Test, FunctorOnUserTypeFailure) { | |||||
expected_to_finish_ = false; | |||||
EXPECT_FATAL_FAILURE({ // NOLINT | |||||
ASSERT_PRED_FORMAT5(PredFormatFunctor5(), | |||||
Bool(n1_++), | |||||
Bool(n2_++), | |||||
Bool(n3_++), | |||||
Bool(n4_++), | |||||
Bool(n5_++)); | |||||
finished_ = true; | |||||
}, ""); | |||||
} |