11b362b15af34006e6a11974088a46d42b903418eJohann// Copyright 2006, Google Inc. 21b362b15af34006e6a11974088a46d42b903418eJohann// All rights reserved. 31b362b15af34006e6a11974088a46d42b903418eJohann// 41b362b15af34006e6a11974088a46d42b903418eJohann// Redistribution and use in source and binary forms, with or without 51b362b15af34006e6a11974088a46d42b903418eJohann// modification, are permitted provided that the following conditions are 61b362b15af34006e6a11974088a46d42b903418eJohann// met: 71b362b15af34006e6a11974088a46d42b903418eJohann// 81b362b15af34006e6a11974088a46d42b903418eJohann// * Redistributions of source code must retain the above copyright 91b362b15af34006e6a11974088a46d42b903418eJohann// notice, this list of conditions and the following disclaimer. 101b362b15af34006e6a11974088a46d42b903418eJohann// * Redistributions in binary form must reproduce the above 111b362b15af34006e6a11974088a46d42b903418eJohann// copyright notice, this list of conditions and the following disclaimer 121b362b15af34006e6a11974088a46d42b903418eJohann// in the documentation and/or other materials provided with the 131b362b15af34006e6a11974088a46d42b903418eJohann// distribution. 141b362b15af34006e6a11974088a46d42b903418eJohann// * Neither the name of Google Inc. nor the names of its 151b362b15af34006e6a11974088a46d42b903418eJohann// contributors may be used to endorse or promote products derived from 161b362b15af34006e6a11974088a46d42b903418eJohann// this software without specific prior written permission. 171b362b15af34006e6a11974088a46d42b903418eJohann// 181b362b15af34006e6a11974088a46d42b903418eJohann// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 191b362b15af34006e6a11974088a46d42b903418eJohann// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 201b362b15af34006e6a11974088a46d42b903418eJohann// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 211b362b15af34006e6a11974088a46d42b903418eJohann// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 221b362b15af34006e6a11974088a46d42b903418eJohann// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 231b362b15af34006e6a11974088a46d42b903418eJohann// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 241b362b15af34006e6a11974088a46d42b903418eJohann// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 251b362b15af34006e6a11974088a46d42b903418eJohann// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 261b362b15af34006e6a11974088a46d42b903418eJohann// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 271b362b15af34006e6a11974088a46d42b903418eJohann// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 281b362b15af34006e6a11974088a46d42b903418eJohann// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 291b362b15af34006e6a11974088a46d42b903418eJohann 301b362b15af34006e6a11974088a46d42b903418eJohann// This file is AUTOMATICALLY GENERATED on 09/24/2010 by command 311b362b15af34006e6a11974088a46d42b903418eJohann// 'gen_gtest_pred_impl.py 5'. DO NOT EDIT BY HAND! 321b362b15af34006e6a11974088a46d42b903418eJohann 331b362b15af34006e6a11974088a46d42b903418eJohann// Regression test for gtest_pred_impl.h 341b362b15af34006e6a11974088a46d42b903418eJohann// 351b362b15af34006e6a11974088a46d42b903418eJohann// This file is generated by a script and quite long. If you intend to 361b362b15af34006e6a11974088a46d42b903418eJohann// learn how Google Test works by reading its unit tests, read 371b362b15af34006e6a11974088a46d42b903418eJohann// gtest_unittest.cc instead. 381b362b15af34006e6a11974088a46d42b903418eJohann// 391b362b15af34006e6a11974088a46d42b903418eJohann// This is intended as a regression test for the Google Test predicate 401b362b15af34006e6a11974088a46d42b903418eJohann// assertions. We compile it as part of the gtest_unittest target 411b362b15af34006e6a11974088a46d42b903418eJohann// only to keep the implementation tidy and compact, as it is quite 421b362b15af34006e6a11974088a46d42b903418eJohann// involved to set up the stage for testing Google Test using Google 431b362b15af34006e6a11974088a46d42b903418eJohann// Test itself. 441b362b15af34006e6a11974088a46d42b903418eJohann// 451b362b15af34006e6a11974088a46d42b903418eJohann// Currently, gtest_unittest takes ~11 seconds to run in the testing 461b362b15af34006e6a11974088a46d42b903418eJohann// daemon. In the future, if it grows too large and needs much more 471b362b15af34006e6a11974088a46d42b903418eJohann// time to finish, we should consider separating this file into a 481b362b15af34006e6a11974088a46d42b903418eJohann// stand-alone regression test. 491b362b15af34006e6a11974088a46d42b903418eJohann 501b362b15af34006e6a11974088a46d42b903418eJohann#include <iostream> 511b362b15af34006e6a11974088a46d42b903418eJohann 521b362b15af34006e6a11974088a46d42b903418eJohann#include "gtest/gtest.h" 531b362b15af34006e6a11974088a46d42b903418eJohann#include "gtest/gtest-spi.h" 541b362b15af34006e6a11974088a46d42b903418eJohann 551b362b15af34006e6a11974088a46d42b903418eJohann// A user-defined data type. 561b362b15af34006e6a11974088a46d42b903418eJohannstruct Bool { 571b362b15af34006e6a11974088a46d42b903418eJohann explicit Bool(int val) : value(val != 0) {} 581b362b15af34006e6a11974088a46d42b903418eJohann 591b362b15af34006e6a11974088a46d42b903418eJohann bool operator>(int n) const { return value > Bool(n).value; } 601b362b15af34006e6a11974088a46d42b903418eJohann 611b362b15af34006e6a11974088a46d42b903418eJohann Bool operator+(const Bool& rhs) const { return Bool(value + rhs.value); } 621b362b15af34006e6a11974088a46d42b903418eJohann 631b362b15af34006e6a11974088a46d42b903418eJohann bool operator==(const Bool& rhs) const { return value == rhs.value; } 641b362b15af34006e6a11974088a46d42b903418eJohann 651b362b15af34006e6a11974088a46d42b903418eJohann bool value; 661b362b15af34006e6a11974088a46d42b903418eJohann}; 671b362b15af34006e6a11974088a46d42b903418eJohann 681b362b15af34006e6a11974088a46d42b903418eJohann// Enables Bool to be used in assertions. 691b362b15af34006e6a11974088a46d42b903418eJohannstd::ostream& operator<<(std::ostream& os, const Bool& x) { 701b362b15af34006e6a11974088a46d42b903418eJohann return os << (x.value ? "true" : "false"); 711b362b15af34006e6a11974088a46d42b903418eJohann} 721b362b15af34006e6a11974088a46d42b903418eJohann 731b362b15af34006e6a11974088a46d42b903418eJohann// Sample functions/functors for testing unary predicate assertions. 741b362b15af34006e6a11974088a46d42b903418eJohann 751b362b15af34006e6a11974088a46d42b903418eJohann// A unary predicate function. 761b362b15af34006e6a11974088a46d42b903418eJohanntemplate <typename T1> 771b362b15af34006e6a11974088a46d42b903418eJohannbool PredFunction1(T1 v1) { 781b362b15af34006e6a11974088a46d42b903418eJohann return v1 > 0; 791b362b15af34006e6a11974088a46d42b903418eJohann} 801b362b15af34006e6a11974088a46d42b903418eJohann 811b362b15af34006e6a11974088a46d42b903418eJohann// The following two functions are needed to circumvent a bug in 821b362b15af34006e6a11974088a46d42b903418eJohann// gcc 2.95.3, which sometimes has problem with the above template 831b362b15af34006e6a11974088a46d42b903418eJohann// function. 841b362b15af34006e6a11974088a46d42b903418eJohannbool PredFunction1Int(int v1) { 851b362b15af34006e6a11974088a46d42b903418eJohann return v1 > 0; 861b362b15af34006e6a11974088a46d42b903418eJohann} 871b362b15af34006e6a11974088a46d42b903418eJohannbool PredFunction1Bool(Bool v1) { 881b362b15af34006e6a11974088a46d42b903418eJohann return v1 > 0; 891b362b15af34006e6a11974088a46d42b903418eJohann} 901b362b15af34006e6a11974088a46d42b903418eJohann 911b362b15af34006e6a11974088a46d42b903418eJohann// A unary predicate functor. 921b362b15af34006e6a11974088a46d42b903418eJohannstruct PredFunctor1 { 931b362b15af34006e6a11974088a46d42b903418eJohann template <typename T1> 941b362b15af34006e6a11974088a46d42b903418eJohann bool operator()(const T1& v1) { 951b362b15af34006e6a11974088a46d42b903418eJohann return v1 > 0; 961b362b15af34006e6a11974088a46d42b903418eJohann } 971b362b15af34006e6a11974088a46d42b903418eJohann}; 981b362b15af34006e6a11974088a46d42b903418eJohann 991b362b15af34006e6a11974088a46d42b903418eJohann// A unary predicate-formatter function. 1001b362b15af34006e6a11974088a46d42b903418eJohanntemplate <typename T1> 1011b362b15af34006e6a11974088a46d42b903418eJohanntesting::AssertionResult PredFormatFunction1(const char* e1, 1021b362b15af34006e6a11974088a46d42b903418eJohann const T1& v1) { 1031b362b15af34006e6a11974088a46d42b903418eJohann if (PredFunction1(v1)) 1041b362b15af34006e6a11974088a46d42b903418eJohann return testing::AssertionSuccess(); 1051b362b15af34006e6a11974088a46d42b903418eJohann 1061b362b15af34006e6a11974088a46d42b903418eJohann return testing::AssertionFailure() 1071b362b15af34006e6a11974088a46d42b903418eJohann << e1 1081b362b15af34006e6a11974088a46d42b903418eJohann << " is expected to be positive, but evaluates to " 1091b362b15af34006e6a11974088a46d42b903418eJohann << v1 << "."; 1101b362b15af34006e6a11974088a46d42b903418eJohann} 1111b362b15af34006e6a11974088a46d42b903418eJohann 1121b362b15af34006e6a11974088a46d42b903418eJohann// A unary predicate-formatter functor. 1131b362b15af34006e6a11974088a46d42b903418eJohannstruct PredFormatFunctor1 { 1141b362b15af34006e6a11974088a46d42b903418eJohann template <typename T1> 1151b362b15af34006e6a11974088a46d42b903418eJohann testing::AssertionResult operator()(const char* e1, 1161b362b15af34006e6a11974088a46d42b903418eJohann const T1& v1) const { 1171b362b15af34006e6a11974088a46d42b903418eJohann return PredFormatFunction1(e1, v1); 1181b362b15af34006e6a11974088a46d42b903418eJohann } 1191b362b15af34006e6a11974088a46d42b903418eJohann}; 1201b362b15af34006e6a11974088a46d42b903418eJohann 1211b362b15af34006e6a11974088a46d42b903418eJohann// Tests for {EXPECT|ASSERT}_PRED_FORMAT1. 1221b362b15af34006e6a11974088a46d42b903418eJohann 1231b362b15af34006e6a11974088a46d42b903418eJohannclass Predicate1Test : public testing::Test { 1241b362b15af34006e6a11974088a46d42b903418eJohann protected: 1251b362b15af34006e6a11974088a46d42b903418eJohann virtual void SetUp() { 1261b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = true; 1271b362b15af34006e6a11974088a46d42b903418eJohann finished_ = false; 1281b362b15af34006e6a11974088a46d42b903418eJohann n1_ = 0; 1291b362b15af34006e6a11974088a46d42b903418eJohann } 1301b362b15af34006e6a11974088a46d42b903418eJohann 1311b362b15af34006e6a11974088a46d42b903418eJohann virtual void TearDown() { 1321b362b15af34006e6a11974088a46d42b903418eJohann // Verifies that each of the predicate's arguments was evaluated 1331b362b15af34006e6a11974088a46d42b903418eJohann // exactly once. 1341b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_EQ(1, n1_) << 1351b362b15af34006e6a11974088a46d42b903418eJohann "The predicate assertion didn't evaluate argument 2 " 1361b362b15af34006e6a11974088a46d42b903418eJohann "exactly once."; 1371b362b15af34006e6a11974088a46d42b903418eJohann 1381b362b15af34006e6a11974088a46d42b903418eJohann // Verifies that the control flow in the test function is expected. 1391b362b15af34006e6a11974088a46d42b903418eJohann if (expected_to_finish_ && !finished_) { 1401b362b15af34006e6a11974088a46d42b903418eJohann FAIL() << "The predicate assertion unexpactedly aborted the test."; 1411b362b15af34006e6a11974088a46d42b903418eJohann } else if (!expected_to_finish_ && finished_) { 1421b362b15af34006e6a11974088a46d42b903418eJohann FAIL() << "The failed predicate assertion didn't abort the test " 1431b362b15af34006e6a11974088a46d42b903418eJohann "as expected."; 1441b362b15af34006e6a11974088a46d42b903418eJohann } 1451b362b15af34006e6a11974088a46d42b903418eJohann } 1461b362b15af34006e6a11974088a46d42b903418eJohann 1471b362b15af34006e6a11974088a46d42b903418eJohann // true iff the test function is expected to run to finish. 1481b362b15af34006e6a11974088a46d42b903418eJohann static bool expected_to_finish_; 1491b362b15af34006e6a11974088a46d42b903418eJohann 1501b362b15af34006e6a11974088a46d42b903418eJohann // true iff the test function did run to finish. 1511b362b15af34006e6a11974088a46d42b903418eJohann static bool finished_; 1521b362b15af34006e6a11974088a46d42b903418eJohann 1531b362b15af34006e6a11974088a46d42b903418eJohann static int n1_; 1541b362b15af34006e6a11974088a46d42b903418eJohann}; 1551b362b15af34006e6a11974088a46d42b903418eJohann 1561b362b15af34006e6a11974088a46d42b903418eJohannbool Predicate1Test::expected_to_finish_; 1571b362b15af34006e6a11974088a46d42b903418eJohannbool Predicate1Test::finished_; 1581b362b15af34006e6a11974088a46d42b903418eJohannint Predicate1Test::n1_; 1591b362b15af34006e6a11974088a46d42b903418eJohann 1601b362b15af34006e6a11974088a46d42b903418eJohanntypedef Predicate1Test EXPECT_PRED_FORMAT1Test; 1611b362b15af34006e6a11974088a46d42b903418eJohanntypedef Predicate1Test ASSERT_PRED_FORMAT1Test; 1621b362b15af34006e6a11974088a46d42b903418eJohanntypedef Predicate1Test EXPECT_PRED1Test; 1631b362b15af34006e6a11974088a46d42b903418eJohanntypedef Predicate1Test ASSERT_PRED1Test; 1641b362b15af34006e6a11974088a46d42b903418eJohann 1651b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED1 where the 1661b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 1671b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED1Test, FunctionOnBuiltInTypeSuccess) { 1681b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED1(PredFunction1Int, 1691b362b15af34006e6a11974088a46d42b903418eJohann ++n1_); 1701b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 1711b362b15af34006e6a11974088a46d42b903418eJohann} 1721b362b15af34006e6a11974088a46d42b903418eJohann 1731b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED1 where the 1741b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 1751b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED1Test, FunctionOnUserTypeSuccess) { 1761b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED1(PredFunction1Bool, 1771b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_)); 1781b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 1791b362b15af34006e6a11974088a46d42b903418eJohann} 1801b362b15af34006e6a11974088a46d42b903418eJohann 1811b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED1 where the 1821b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 1831b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED1Test, FunctorOnBuiltInTypeSuccess) { 1841b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED1(PredFunctor1(), 1851b362b15af34006e6a11974088a46d42b903418eJohann ++n1_); 1861b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 1871b362b15af34006e6a11974088a46d42b903418eJohann} 1881b362b15af34006e6a11974088a46d42b903418eJohann 1891b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED1 where the 1901b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 1911b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED1Test, FunctorOnUserTypeSuccess) { 1921b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED1(PredFunctor1(), 1931b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_)); 1941b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 1951b362b15af34006e6a11974088a46d42b903418eJohann} 1961b362b15af34006e6a11974088a46d42b903418eJohann 1971b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED1 where the 1981b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 1991b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED1Test, FunctionOnBuiltInTypeFailure) { 2001b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 2011b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED1(PredFunction1Int, 2021b362b15af34006e6a11974088a46d42b903418eJohann n1_++); 2031b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 2041b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 2051b362b15af34006e6a11974088a46d42b903418eJohann} 2061b362b15af34006e6a11974088a46d42b903418eJohann 2071b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED1 where the 2081b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 2091b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED1Test, FunctionOnUserTypeFailure) { 2101b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 2111b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED1(PredFunction1Bool, 2121b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++)); 2131b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 2141b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 2151b362b15af34006e6a11974088a46d42b903418eJohann} 2161b362b15af34006e6a11974088a46d42b903418eJohann 2171b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED1 where the 2181b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 2191b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED1Test, FunctorOnBuiltInTypeFailure) { 2201b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 2211b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED1(PredFunctor1(), 2221b362b15af34006e6a11974088a46d42b903418eJohann n1_++); 2231b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 2241b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 2251b362b15af34006e6a11974088a46d42b903418eJohann} 2261b362b15af34006e6a11974088a46d42b903418eJohann 2271b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED1 where the 2281b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 2291b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED1Test, FunctorOnUserTypeFailure) { 2301b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 2311b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED1(PredFunctor1(), 2321b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++)); 2331b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 2341b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 2351b362b15af34006e6a11974088a46d42b903418eJohann} 2361b362b15af34006e6a11974088a46d42b903418eJohann 2371b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED1 where the 2381b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 2391b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED1Test, FunctionOnBuiltInTypeSuccess) { 2401b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED1(PredFunction1Int, 2411b362b15af34006e6a11974088a46d42b903418eJohann ++n1_); 2421b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 2431b362b15af34006e6a11974088a46d42b903418eJohann} 2441b362b15af34006e6a11974088a46d42b903418eJohann 2451b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED1 where the 2461b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 2471b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED1Test, FunctionOnUserTypeSuccess) { 2481b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED1(PredFunction1Bool, 2491b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_)); 2501b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 2511b362b15af34006e6a11974088a46d42b903418eJohann} 2521b362b15af34006e6a11974088a46d42b903418eJohann 2531b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED1 where the 2541b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 2551b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED1Test, FunctorOnBuiltInTypeSuccess) { 2561b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED1(PredFunctor1(), 2571b362b15af34006e6a11974088a46d42b903418eJohann ++n1_); 2581b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 2591b362b15af34006e6a11974088a46d42b903418eJohann} 2601b362b15af34006e6a11974088a46d42b903418eJohann 2611b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED1 where the 2621b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 2631b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED1Test, FunctorOnUserTypeSuccess) { 2641b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED1(PredFunctor1(), 2651b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_)); 2661b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 2671b362b15af34006e6a11974088a46d42b903418eJohann} 2681b362b15af34006e6a11974088a46d42b903418eJohann 2691b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED1 where the 2701b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 2711b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED1Test, FunctionOnBuiltInTypeFailure) { 2721b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 2731b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 2741b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED1(PredFunction1Int, 2751b362b15af34006e6a11974088a46d42b903418eJohann n1_++); 2761b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 2771b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 2781b362b15af34006e6a11974088a46d42b903418eJohann} 2791b362b15af34006e6a11974088a46d42b903418eJohann 2801b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED1 where the 2811b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 2821b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED1Test, FunctionOnUserTypeFailure) { 2831b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 2841b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 2851b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED1(PredFunction1Bool, 2861b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++)); 2871b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 2881b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 2891b362b15af34006e6a11974088a46d42b903418eJohann} 2901b362b15af34006e6a11974088a46d42b903418eJohann 2911b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED1 where the 2921b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 2931b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED1Test, FunctorOnBuiltInTypeFailure) { 2941b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 2951b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 2961b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED1(PredFunctor1(), 2971b362b15af34006e6a11974088a46d42b903418eJohann n1_++); 2981b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 2991b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 3001b362b15af34006e6a11974088a46d42b903418eJohann} 3011b362b15af34006e6a11974088a46d42b903418eJohann 3021b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED1 where the 3031b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 3041b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED1Test, FunctorOnUserTypeFailure) { 3051b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 3061b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 3071b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED1(PredFunctor1(), 3081b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++)); 3091b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 3101b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 3111b362b15af34006e6a11974088a46d42b903418eJohann} 3121b362b15af34006e6a11974088a46d42b903418eJohann 3131b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED_FORMAT1 where the 3141b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 3151b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT1Test, FunctionOnBuiltInTypeSuccess) { 3161b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT1(PredFormatFunction1, 3171b362b15af34006e6a11974088a46d42b903418eJohann ++n1_); 3181b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 3191b362b15af34006e6a11974088a46d42b903418eJohann} 3201b362b15af34006e6a11974088a46d42b903418eJohann 3211b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED_FORMAT1 where the 3221b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 3231b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT1Test, FunctionOnUserTypeSuccess) { 3241b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT1(PredFormatFunction1, 3251b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_)); 3261b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 3271b362b15af34006e6a11974088a46d42b903418eJohann} 3281b362b15af34006e6a11974088a46d42b903418eJohann 3291b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED_FORMAT1 where the 3301b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 3311b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT1Test, FunctorOnBuiltInTypeSuccess) { 3321b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT1(PredFormatFunctor1(), 3331b362b15af34006e6a11974088a46d42b903418eJohann ++n1_); 3341b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 3351b362b15af34006e6a11974088a46d42b903418eJohann} 3361b362b15af34006e6a11974088a46d42b903418eJohann 3371b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED_FORMAT1 where the 3381b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 3391b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT1Test, FunctorOnUserTypeSuccess) { 3401b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT1(PredFormatFunctor1(), 3411b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_)); 3421b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 3431b362b15af34006e6a11974088a46d42b903418eJohann} 3441b362b15af34006e6a11974088a46d42b903418eJohann 3451b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED_FORMAT1 where the 3461b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 3471b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT1Test, FunctionOnBuiltInTypeFailure) { 3481b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 3491b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT1(PredFormatFunction1, 3501b362b15af34006e6a11974088a46d42b903418eJohann n1_++); 3511b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 3521b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 3531b362b15af34006e6a11974088a46d42b903418eJohann} 3541b362b15af34006e6a11974088a46d42b903418eJohann 3551b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED_FORMAT1 where the 3561b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 3571b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT1Test, FunctionOnUserTypeFailure) { 3581b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 3591b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT1(PredFormatFunction1, 3601b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++)); 3611b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 3621b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 3631b362b15af34006e6a11974088a46d42b903418eJohann} 3641b362b15af34006e6a11974088a46d42b903418eJohann 3651b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED_FORMAT1 where the 3661b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 3671b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT1Test, FunctorOnBuiltInTypeFailure) { 3681b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 3691b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT1(PredFormatFunctor1(), 3701b362b15af34006e6a11974088a46d42b903418eJohann n1_++); 3711b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 3721b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 3731b362b15af34006e6a11974088a46d42b903418eJohann} 3741b362b15af34006e6a11974088a46d42b903418eJohann 3751b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED_FORMAT1 where the 3761b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 3771b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT1Test, FunctorOnUserTypeFailure) { 3781b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 3791b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT1(PredFormatFunctor1(), 3801b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++)); 3811b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 3821b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 3831b362b15af34006e6a11974088a46d42b903418eJohann} 3841b362b15af34006e6a11974088a46d42b903418eJohann 3851b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED_FORMAT1 where the 3861b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 3871b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT1Test, FunctionOnBuiltInTypeSuccess) { 3881b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT1(PredFormatFunction1, 3891b362b15af34006e6a11974088a46d42b903418eJohann ++n1_); 3901b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 3911b362b15af34006e6a11974088a46d42b903418eJohann} 3921b362b15af34006e6a11974088a46d42b903418eJohann 3931b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED_FORMAT1 where the 3941b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 3951b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT1Test, FunctionOnUserTypeSuccess) { 3961b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT1(PredFormatFunction1, 3971b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_)); 3981b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 3991b362b15af34006e6a11974088a46d42b903418eJohann} 4001b362b15af34006e6a11974088a46d42b903418eJohann 4011b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED_FORMAT1 where the 4021b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 4031b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT1Test, FunctorOnBuiltInTypeSuccess) { 4041b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT1(PredFormatFunctor1(), 4051b362b15af34006e6a11974088a46d42b903418eJohann ++n1_); 4061b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 4071b362b15af34006e6a11974088a46d42b903418eJohann} 4081b362b15af34006e6a11974088a46d42b903418eJohann 4091b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED_FORMAT1 where the 4101b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 4111b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT1Test, FunctorOnUserTypeSuccess) { 4121b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT1(PredFormatFunctor1(), 4131b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_)); 4141b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 4151b362b15af34006e6a11974088a46d42b903418eJohann} 4161b362b15af34006e6a11974088a46d42b903418eJohann 4171b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED_FORMAT1 where the 4181b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 4191b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT1Test, FunctionOnBuiltInTypeFailure) { 4201b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 4211b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 4221b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT1(PredFormatFunction1, 4231b362b15af34006e6a11974088a46d42b903418eJohann n1_++); 4241b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 4251b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 4261b362b15af34006e6a11974088a46d42b903418eJohann} 4271b362b15af34006e6a11974088a46d42b903418eJohann 4281b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED_FORMAT1 where the 4291b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 4301b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT1Test, FunctionOnUserTypeFailure) { 4311b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 4321b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 4331b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT1(PredFormatFunction1, 4341b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++)); 4351b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 4361b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 4371b362b15af34006e6a11974088a46d42b903418eJohann} 4381b362b15af34006e6a11974088a46d42b903418eJohann 4391b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED_FORMAT1 where the 4401b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 4411b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT1Test, FunctorOnBuiltInTypeFailure) { 4421b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 4431b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 4441b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT1(PredFormatFunctor1(), 4451b362b15af34006e6a11974088a46d42b903418eJohann n1_++); 4461b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 4471b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 4481b362b15af34006e6a11974088a46d42b903418eJohann} 4491b362b15af34006e6a11974088a46d42b903418eJohann 4501b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED_FORMAT1 where the 4511b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 4521b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT1Test, FunctorOnUserTypeFailure) { 4531b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 4541b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 4551b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT1(PredFormatFunctor1(), 4561b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++)); 4571b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 4581b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 4591b362b15af34006e6a11974088a46d42b903418eJohann} 4601b362b15af34006e6a11974088a46d42b903418eJohann// Sample functions/functors for testing binary predicate assertions. 4611b362b15af34006e6a11974088a46d42b903418eJohann 4621b362b15af34006e6a11974088a46d42b903418eJohann// A binary predicate function. 4631b362b15af34006e6a11974088a46d42b903418eJohanntemplate <typename T1, typename T2> 4641b362b15af34006e6a11974088a46d42b903418eJohannbool PredFunction2(T1 v1, T2 v2) { 4651b362b15af34006e6a11974088a46d42b903418eJohann return v1 + v2 > 0; 4661b362b15af34006e6a11974088a46d42b903418eJohann} 4671b362b15af34006e6a11974088a46d42b903418eJohann 4681b362b15af34006e6a11974088a46d42b903418eJohann// The following two functions are needed to circumvent a bug in 4691b362b15af34006e6a11974088a46d42b903418eJohann// gcc 2.95.3, which sometimes has problem with the above template 4701b362b15af34006e6a11974088a46d42b903418eJohann// function. 4711b362b15af34006e6a11974088a46d42b903418eJohannbool PredFunction2Int(int v1, int v2) { 4721b362b15af34006e6a11974088a46d42b903418eJohann return v1 + v2 > 0; 4731b362b15af34006e6a11974088a46d42b903418eJohann} 4741b362b15af34006e6a11974088a46d42b903418eJohannbool PredFunction2Bool(Bool v1, Bool v2) { 4751b362b15af34006e6a11974088a46d42b903418eJohann return v1 + v2 > 0; 4761b362b15af34006e6a11974088a46d42b903418eJohann} 4771b362b15af34006e6a11974088a46d42b903418eJohann 4781b362b15af34006e6a11974088a46d42b903418eJohann// A binary predicate functor. 4791b362b15af34006e6a11974088a46d42b903418eJohannstruct PredFunctor2 { 4801b362b15af34006e6a11974088a46d42b903418eJohann template <typename T1, typename T2> 4811b362b15af34006e6a11974088a46d42b903418eJohann bool operator()(const T1& v1, 4821b362b15af34006e6a11974088a46d42b903418eJohann const T2& v2) { 4831b362b15af34006e6a11974088a46d42b903418eJohann return v1 + v2 > 0; 4841b362b15af34006e6a11974088a46d42b903418eJohann } 4851b362b15af34006e6a11974088a46d42b903418eJohann}; 4861b362b15af34006e6a11974088a46d42b903418eJohann 4871b362b15af34006e6a11974088a46d42b903418eJohann// A binary predicate-formatter function. 4881b362b15af34006e6a11974088a46d42b903418eJohanntemplate <typename T1, typename T2> 4891b362b15af34006e6a11974088a46d42b903418eJohanntesting::AssertionResult PredFormatFunction2(const char* e1, 4901b362b15af34006e6a11974088a46d42b903418eJohann const char* e2, 4911b362b15af34006e6a11974088a46d42b903418eJohann const T1& v1, 4921b362b15af34006e6a11974088a46d42b903418eJohann const T2& v2) { 4931b362b15af34006e6a11974088a46d42b903418eJohann if (PredFunction2(v1, v2)) 4941b362b15af34006e6a11974088a46d42b903418eJohann return testing::AssertionSuccess(); 4951b362b15af34006e6a11974088a46d42b903418eJohann 4961b362b15af34006e6a11974088a46d42b903418eJohann return testing::AssertionFailure() 4971b362b15af34006e6a11974088a46d42b903418eJohann << e1 << " + " << e2 4981b362b15af34006e6a11974088a46d42b903418eJohann << " is expected to be positive, but evaluates to " 4991b362b15af34006e6a11974088a46d42b903418eJohann << v1 + v2 << "."; 5001b362b15af34006e6a11974088a46d42b903418eJohann} 5011b362b15af34006e6a11974088a46d42b903418eJohann 5021b362b15af34006e6a11974088a46d42b903418eJohann// A binary predicate-formatter functor. 5031b362b15af34006e6a11974088a46d42b903418eJohannstruct PredFormatFunctor2 { 5041b362b15af34006e6a11974088a46d42b903418eJohann template <typename T1, typename T2> 5051b362b15af34006e6a11974088a46d42b903418eJohann testing::AssertionResult operator()(const char* e1, 5061b362b15af34006e6a11974088a46d42b903418eJohann const char* e2, 5071b362b15af34006e6a11974088a46d42b903418eJohann const T1& v1, 5081b362b15af34006e6a11974088a46d42b903418eJohann const T2& v2) const { 5091b362b15af34006e6a11974088a46d42b903418eJohann return PredFormatFunction2(e1, e2, v1, v2); 5101b362b15af34006e6a11974088a46d42b903418eJohann } 5111b362b15af34006e6a11974088a46d42b903418eJohann}; 5121b362b15af34006e6a11974088a46d42b903418eJohann 5131b362b15af34006e6a11974088a46d42b903418eJohann// Tests for {EXPECT|ASSERT}_PRED_FORMAT2. 5141b362b15af34006e6a11974088a46d42b903418eJohann 5151b362b15af34006e6a11974088a46d42b903418eJohannclass Predicate2Test : public testing::Test { 5161b362b15af34006e6a11974088a46d42b903418eJohann protected: 5171b362b15af34006e6a11974088a46d42b903418eJohann virtual void SetUp() { 5181b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = true; 5191b362b15af34006e6a11974088a46d42b903418eJohann finished_ = false; 5201b362b15af34006e6a11974088a46d42b903418eJohann n1_ = n2_ = 0; 5211b362b15af34006e6a11974088a46d42b903418eJohann } 5221b362b15af34006e6a11974088a46d42b903418eJohann 5231b362b15af34006e6a11974088a46d42b903418eJohann virtual void TearDown() { 5241b362b15af34006e6a11974088a46d42b903418eJohann // Verifies that each of the predicate's arguments was evaluated 5251b362b15af34006e6a11974088a46d42b903418eJohann // exactly once. 5261b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_EQ(1, n1_) << 5271b362b15af34006e6a11974088a46d42b903418eJohann "The predicate assertion didn't evaluate argument 2 " 5281b362b15af34006e6a11974088a46d42b903418eJohann "exactly once."; 5291b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_EQ(1, n2_) << 5301b362b15af34006e6a11974088a46d42b903418eJohann "The predicate assertion didn't evaluate argument 3 " 5311b362b15af34006e6a11974088a46d42b903418eJohann "exactly once."; 5321b362b15af34006e6a11974088a46d42b903418eJohann 5331b362b15af34006e6a11974088a46d42b903418eJohann // Verifies that the control flow in the test function is expected. 5341b362b15af34006e6a11974088a46d42b903418eJohann if (expected_to_finish_ && !finished_) { 5351b362b15af34006e6a11974088a46d42b903418eJohann FAIL() << "The predicate assertion unexpactedly aborted the test."; 5361b362b15af34006e6a11974088a46d42b903418eJohann } else if (!expected_to_finish_ && finished_) { 5371b362b15af34006e6a11974088a46d42b903418eJohann FAIL() << "The failed predicate assertion didn't abort the test " 5381b362b15af34006e6a11974088a46d42b903418eJohann "as expected."; 5391b362b15af34006e6a11974088a46d42b903418eJohann } 5401b362b15af34006e6a11974088a46d42b903418eJohann } 5411b362b15af34006e6a11974088a46d42b903418eJohann 5421b362b15af34006e6a11974088a46d42b903418eJohann // true iff the test function is expected to run to finish. 5431b362b15af34006e6a11974088a46d42b903418eJohann static bool expected_to_finish_; 5441b362b15af34006e6a11974088a46d42b903418eJohann 5451b362b15af34006e6a11974088a46d42b903418eJohann // true iff the test function did run to finish. 5461b362b15af34006e6a11974088a46d42b903418eJohann static bool finished_; 5471b362b15af34006e6a11974088a46d42b903418eJohann 5481b362b15af34006e6a11974088a46d42b903418eJohann static int n1_; 5491b362b15af34006e6a11974088a46d42b903418eJohann static int n2_; 5501b362b15af34006e6a11974088a46d42b903418eJohann}; 5511b362b15af34006e6a11974088a46d42b903418eJohann 5521b362b15af34006e6a11974088a46d42b903418eJohannbool Predicate2Test::expected_to_finish_; 5531b362b15af34006e6a11974088a46d42b903418eJohannbool Predicate2Test::finished_; 5541b362b15af34006e6a11974088a46d42b903418eJohannint Predicate2Test::n1_; 5551b362b15af34006e6a11974088a46d42b903418eJohannint Predicate2Test::n2_; 5561b362b15af34006e6a11974088a46d42b903418eJohann 5571b362b15af34006e6a11974088a46d42b903418eJohanntypedef Predicate2Test EXPECT_PRED_FORMAT2Test; 5581b362b15af34006e6a11974088a46d42b903418eJohanntypedef Predicate2Test ASSERT_PRED_FORMAT2Test; 5591b362b15af34006e6a11974088a46d42b903418eJohanntypedef Predicate2Test EXPECT_PRED2Test; 5601b362b15af34006e6a11974088a46d42b903418eJohanntypedef Predicate2Test ASSERT_PRED2Test; 5611b362b15af34006e6a11974088a46d42b903418eJohann 5621b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED2 where the 5631b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 5641b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED2Test, FunctionOnBuiltInTypeSuccess) { 5651b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED2(PredFunction2Int, 5661b362b15af34006e6a11974088a46d42b903418eJohann ++n1_, 5671b362b15af34006e6a11974088a46d42b903418eJohann ++n2_); 5681b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 5691b362b15af34006e6a11974088a46d42b903418eJohann} 5701b362b15af34006e6a11974088a46d42b903418eJohann 5711b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED2 where the 5721b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 5731b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED2Test, FunctionOnUserTypeSuccess) { 5741b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED2(PredFunction2Bool, 5751b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_), 5761b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n2_)); 5771b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 5781b362b15af34006e6a11974088a46d42b903418eJohann} 5791b362b15af34006e6a11974088a46d42b903418eJohann 5801b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED2 where the 5811b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 5821b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED2Test, FunctorOnBuiltInTypeSuccess) { 5831b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED2(PredFunctor2(), 5841b362b15af34006e6a11974088a46d42b903418eJohann ++n1_, 5851b362b15af34006e6a11974088a46d42b903418eJohann ++n2_); 5861b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 5871b362b15af34006e6a11974088a46d42b903418eJohann} 5881b362b15af34006e6a11974088a46d42b903418eJohann 5891b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED2 where the 5901b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 5911b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED2Test, FunctorOnUserTypeSuccess) { 5921b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED2(PredFunctor2(), 5931b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_), 5941b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n2_)); 5951b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 5961b362b15af34006e6a11974088a46d42b903418eJohann} 5971b362b15af34006e6a11974088a46d42b903418eJohann 5981b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED2 where the 5991b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 6001b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED2Test, FunctionOnBuiltInTypeFailure) { 6011b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 6021b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED2(PredFunction2Int, 6031b362b15af34006e6a11974088a46d42b903418eJohann n1_++, 6041b362b15af34006e6a11974088a46d42b903418eJohann n2_++); 6051b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 6061b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 6071b362b15af34006e6a11974088a46d42b903418eJohann} 6081b362b15af34006e6a11974088a46d42b903418eJohann 6091b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED2 where the 6101b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 6111b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED2Test, FunctionOnUserTypeFailure) { 6121b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 6131b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED2(PredFunction2Bool, 6141b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++), 6151b362b15af34006e6a11974088a46d42b903418eJohann Bool(n2_++)); 6161b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 6171b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 6181b362b15af34006e6a11974088a46d42b903418eJohann} 6191b362b15af34006e6a11974088a46d42b903418eJohann 6201b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED2 where the 6211b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 6221b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED2Test, FunctorOnBuiltInTypeFailure) { 6231b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 6241b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED2(PredFunctor2(), 6251b362b15af34006e6a11974088a46d42b903418eJohann n1_++, 6261b362b15af34006e6a11974088a46d42b903418eJohann n2_++); 6271b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 6281b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 6291b362b15af34006e6a11974088a46d42b903418eJohann} 6301b362b15af34006e6a11974088a46d42b903418eJohann 6311b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED2 where the 6321b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 6331b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED2Test, FunctorOnUserTypeFailure) { 6341b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 6351b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED2(PredFunctor2(), 6361b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++), 6371b362b15af34006e6a11974088a46d42b903418eJohann Bool(n2_++)); 6381b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 6391b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 6401b362b15af34006e6a11974088a46d42b903418eJohann} 6411b362b15af34006e6a11974088a46d42b903418eJohann 6421b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED2 where the 6431b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 6441b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED2Test, FunctionOnBuiltInTypeSuccess) { 6451b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED2(PredFunction2Int, 6461b362b15af34006e6a11974088a46d42b903418eJohann ++n1_, 6471b362b15af34006e6a11974088a46d42b903418eJohann ++n2_); 6481b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 6491b362b15af34006e6a11974088a46d42b903418eJohann} 6501b362b15af34006e6a11974088a46d42b903418eJohann 6511b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED2 where the 6521b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 6531b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED2Test, FunctionOnUserTypeSuccess) { 6541b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED2(PredFunction2Bool, 6551b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_), 6561b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n2_)); 6571b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 6581b362b15af34006e6a11974088a46d42b903418eJohann} 6591b362b15af34006e6a11974088a46d42b903418eJohann 6601b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED2 where the 6611b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 6621b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED2Test, FunctorOnBuiltInTypeSuccess) { 6631b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED2(PredFunctor2(), 6641b362b15af34006e6a11974088a46d42b903418eJohann ++n1_, 6651b362b15af34006e6a11974088a46d42b903418eJohann ++n2_); 6661b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 6671b362b15af34006e6a11974088a46d42b903418eJohann} 6681b362b15af34006e6a11974088a46d42b903418eJohann 6691b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED2 where the 6701b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 6711b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED2Test, FunctorOnUserTypeSuccess) { 6721b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED2(PredFunctor2(), 6731b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_), 6741b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n2_)); 6751b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 6761b362b15af34006e6a11974088a46d42b903418eJohann} 6771b362b15af34006e6a11974088a46d42b903418eJohann 6781b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED2 where the 6791b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 6801b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED2Test, FunctionOnBuiltInTypeFailure) { 6811b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 6821b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 6831b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED2(PredFunction2Int, 6841b362b15af34006e6a11974088a46d42b903418eJohann n1_++, 6851b362b15af34006e6a11974088a46d42b903418eJohann n2_++); 6861b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 6871b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 6881b362b15af34006e6a11974088a46d42b903418eJohann} 6891b362b15af34006e6a11974088a46d42b903418eJohann 6901b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED2 where the 6911b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 6921b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED2Test, FunctionOnUserTypeFailure) { 6931b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 6941b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 6951b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED2(PredFunction2Bool, 6961b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++), 6971b362b15af34006e6a11974088a46d42b903418eJohann Bool(n2_++)); 6981b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 6991b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 7001b362b15af34006e6a11974088a46d42b903418eJohann} 7011b362b15af34006e6a11974088a46d42b903418eJohann 7021b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED2 where the 7031b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 7041b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED2Test, FunctorOnBuiltInTypeFailure) { 7051b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 7061b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 7071b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED2(PredFunctor2(), 7081b362b15af34006e6a11974088a46d42b903418eJohann n1_++, 7091b362b15af34006e6a11974088a46d42b903418eJohann n2_++); 7101b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 7111b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 7121b362b15af34006e6a11974088a46d42b903418eJohann} 7131b362b15af34006e6a11974088a46d42b903418eJohann 7141b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED2 where the 7151b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 7161b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED2Test, FunctorOnUserTypeFailure) { 7171b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 7181b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 7191b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED2(PredFunctor2(), 7201b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++), 7211b362b15af34006e6a11974088a46d42b903418eJohann Bool(n2_++)); 7221b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 7231b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 7241b362b15af34006e6a11974088a46d42b903418eJohann} 7251b362b15af34006e6a11974088a46d42b903418eJohann 7261b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED_FORMAT2 where the 7271b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 7281b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT2Test, FunctionOnBuiltInTypeSuccess) { 7291b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT2(PredFormatFunction2, 7301b362b15af34006e6a11974088a46d42b903418eJohann ++n1_, 7311b362b15af34006e6a11974088a46d42b903418eJohann ++n2_); 7321b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 7331b362b15af34006e6a11974088a46d42b903418eJohann} 7341b362b15af34006e6a11974088a46d42b903418eJohann 7351b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED_FORMAT2 where the 7361b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 7371b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT2Test, FunctionOnUserTypeSuccess) { 7381b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT2(PredFormatFunction2, 7391b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_), 7401b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n2_)); 7411b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 7421b362b15af34006e6a11974088a46d42b903418eJohann} 7431b362b15af34006e6a11974088a46d42b903418eJohann 7441b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED_FORMAT2 where the 7451b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 7461b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT2Test, FunctorOnBuiltInTypeSuccess) { 7471b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT2(PredFormatFunctor2(), 7481b362b15af34006e6a11974088a46d42b903418eJohann ++n1_, 7491b362b15af34006e6a11974088a46d42b903418eJohann ++n2_); 7501b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 7511b362b15af34006e6a11974088a46d42b903418eJohann} 7521b362b15af34006e6a11974088a46d42b903418eJohann 7531b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED_FORMAT2 where the 7541b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 7551b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT2Test, FunctorOnUserTypeSuccess) { 7561b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT2(PredFormatFunctor2(), 7571b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_), 7581b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n2_)); 7591b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 7601b362b15af34006e6a11974088a46d42b903418eJohann} 7611b362b15af34006e6a11974088a46d42b903418eJohann 7621b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED_FORMAT2 where the 7631b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 7641b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT2Test, FunctionOnBuiltInTypeFailure) { 7651b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 7661b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT2(PredFormatFunction2, 7671b362b15af34006e6a11974088a46d42b903418eJohann n1_++, 7681b362b15af34006e6a11974088a46d42b903418eJohann n2_++); 7691b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 7701b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 7711b362b15af34006e6a11974088a46d42b903418eJohann} 7721b362b15af34006e6a11974088a46d42b903418eJohann 7731b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED_FORMAT2 where the 7741b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 7751b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT2Test, FunctionOnUserTypeFailure) { 7761b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 7771b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT2(PredFormatFunction2, 7781b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++), 7791b362b15af34006e6a11974088a46d42b903418eJohann Bool(n2_++)); 7801b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 7811b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 7821b362b15af34006e6a11974088a46d42b903418eJohann} 7831b362b15af34006e6a11974088a46d42b903418eJohann 7841b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED_FORMAT2 where the 7851b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 7861b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT2Test, FunctorOnBuiltInTypeFailure) { 7871b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 7881b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT2(PredFormatFunctor2(), 7891b362b15af34006e6a11974088a46d42b903418eJohann n1_++, 7901b362b15af34006e6a11974088a46d42b903418eJohann n2_++); 7911b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 7921b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 7931b362b15af34006e6a11974088a46d42b903418eJohann} 7941b362b15af34006e6a11974088a46d42b903418eJohann 7951b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED_FORMAT2 where the 7961b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 7971b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT2Test, FunctorOnUserTypeFailure) { 7981b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 7991b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT2(PredFormatFunctor2(), 8001b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++), 8011b362b15af34006e6a11974088a46d42b903418eJohann Bool(n2_++)); 8021b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 8031b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 8041b362b15af34006e6a11974088a46d42b903418eJohann} 8051b362b15af34006e6a11974088a46d42b903418eJohann 8061b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED_FORMAT2 where the 8071b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 8081b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT2Test, FunctionOnBuiltInTypeSuccess) { 8091b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT2(PredFormatFunction2, 8101b362b15af34006e6a11974088a46d42b903418eJohann ++n1_, 8111b362b15af34006e6a11974088a46d42b903418eJohann ++n2_); 8121b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 8131b362b15af34006e6a11974088a46d42b903418eJohann} 8141b362b15af34006e6a11974088a46d42b903418eJohann 8151b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED_FORMAT2 where the 8161b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 8171b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT2Test, FunctionOnUserTypeSuccess) { 8181b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT2(PredFormatFunction2, 8191b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_), 8201b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n2_)); 8211b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 8221b362b15af34006e6a11974088a46d42b903418eJohann} 8231b362b15af34006e6a11974088a46d42b903418eJohann 8241b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED_FORMAT2 where the 8251b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 8261b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT2Test, FunctorOnBuiltInTypeSuccess) { 8271b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT2(PredFormatFunctor2(), 8281b362b15af34006e6a11974088a46d42b903418eJohann ++n1_, 8291b362b15af34006e6a11974088a46d42b903418eJohann ++n2_); 8301b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 8311b362b15af34006e6a11974088a46d42b903418eJohann} 8321b362b15af34006e6a11974088a46d42b903418eJohann 8331b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED_FORMAT2 where the 8341b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 8351b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT2Test, FunctorOnUserTypeSuccess) { 8361b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT2(PredFormatFunctor2(), 8371b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_), 8381b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n2_)); 8391b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 8401b362b15af34006e6a11974088a46d42b903418eJohann} 8411b362b15af34006e6a11974088a46d42b903418eJohann 8421b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED_FORMAT2 where the 8431b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 8441b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT2Test, FunctionOnBuiltInTypeFailure) { 8451b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 8461b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 8471b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT2(PredFormatFunction2, 8481b362b15af34006e6a11974088a46d42b903418eJohann n1_++, 8491b362b15af34006e6a11974088a46d42b903418eJohann n2_++); 8501b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 8511b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 8521b362b15af34006e6a11974088a46d42b903418eJohann} 8531b362b15af34006e6a11974088a46d42b903418eJohann 8541b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED_FORMAT2 where the 8551b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 8561b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT2Test, FunctionOnUserTypeFailure) { 8571b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 8581b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 8591b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT2(PredFormatFunction2, 8601b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++), 8611b362b15af34006e6a11974088a46d42b903418eJohann Bool(n2_++)); 8621b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 8631b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 8641b362b15af34006e6a11974088a46d42b903418eJohann} 8651b362b15af34006e6a11974088a46d42b903418eJohann 8661b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED_FORMAT2 where the 8671b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 8681b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT2Test, FunctorOnBuiltInTypeFailure) { 8691b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 8701b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 8711b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT2(PredFormatFunctor2(), 8721b362b15af34006e6a11974088a46d42b903418eJohann n1_++, 8731b362b15af34006e6a11974088a46d42b903418eJohann n2_++); 8741b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 8751b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 8761b362b15af34006e6a11974088a46d42b903418eJohann} 8771b362b15af34006e6a11974088a46d42b903418eJohann 8781b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED_FORMAT2 where the 8791b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 8801b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT2Test, FunctorOnUserTypeFailure) { 8811b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 8821b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 8831b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT2(PredFormatFunctor2(), 8841b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++), 8851b362b15af34006e6a11974088a46d42b903418eJohann Bool(n2_++)); 8861b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 8871b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 8881b362b15af34006e6a11974088a46d42b903418eJohann} 8891b362b15af34006e6a11974088a46d42b903418eJohann// Sample functions/functors for testing ternary predicate assertions. 8901b362b15af34006e6a11974088a46d42b903418eJohann 8911b362b15af34006e6a11974088a46d42b903418eJohann// A ternary predicate function. 8921b362b15af34006e6a11974088a46d42b903418eJohanntemplate <typename T1, typename T2, typename T3> 8931b362b15af34006e6a11974088a46d42b903418eJohannbool PredFunction3(T1 v1, T2 v2, T3 v3) { 8941b362b15af34006e6a11974088a46d42b903418eJohann return v1 + v2 + v3 > 0; 8951b362b15af34006e6a11974088a46d42b903418eJohann} 8961b362b15af34006e6a11974088a46d42b903418eJohann 8971b362b15af34006e6a11974088a46d42b903418eJohann// The following two functions are needed to circumvent a bug in 8981b362b15af34006e6a11974088a46d42b903418eJohann// gcc 2.95.3, which sometimes has problem with the above template 8991b362b15af34006e6a11974088a46d42b903418eJohann// function. 9001b362b15af34006e6a11974088a46d42b903418eJohannbool PredFunction3Int(int v1, int v2, int v3) { 9011b362b15af34006e6a11974088a46d42b903418eJohann return v1 + v2 + v3 > 0; 9021b362b15af34006e6a11974088a46d42b903418eJohann} 9031b362b15af34006e6a11974088a46d42b903418eJohannbool PredFunction3Bool(Bool v1, Bool v2, Bool v3) { 9041b362b15af34006e6a11974088a46d42b903418eJohann return v1 + v2 + v3 > 0; 9051b362b15af34006e6a11974088a46d42b903418eJohann} 9061b362b15af34006e6a11974088a46d42b903418eJohann 9071b362b15af34006e6a11974088a46d42b903418eJohann// A ternary predicate functor. 9081b362b15af34006e6a11974088a46d42b903418eJohannstruct PredFunctor3 { 9091b362b15af34006e6a11974088a46d42b903418eJohann template <typename T1, typename T2, typename T3> 9101b362b15af34006e6a11974088a46d42b903418eJohann bool operator()(const T1& v1, 9111b362b15af34006e6a11974088a46d42b903418eJohann const T2& v2, 9121b362b15af34006e6a11974088a46d42b903418eJohann const T3& v3) { 9131b362b15af34006e6a11974088a46d42b903418eJohann return v1 + v2 + v3 > 0; 9141b362b15af34006e6a11974088a46d42b903418eJohann } 9151b362b15af34006e6a11974088a46d42b903418eJohann}; 9161b362b15af34006e6a11974088a46d42b903418eJohann 9171b362b15af34006e6a11974088a46d42b903418eJohann// A ternary predicate-formatter function. 9181b362b15af34006e6a11974088a46d42b903418eJohanntemplate <typename T1, typename T2, typename T3> 9191b362b15af34006e6a11974088a46d42b903418eJohanntesting::AssertionResult PredFormatFunction3(const char* e1, 9201b362b15af34006e6a11974088a46d42b903418eJohann const char* e2, 9211b362b15af34006e6a11974088a46d42b903418eJohann const char* e3, 9221b362b15af34006e6a11974088a46d42b903418eJohann const T1& v1, 9231b362b15af34006e6a11974088a46d42b903418eJohann const T2& v2, 9241b362b15af34006e6a11974088a46d42b903418eJohann const T3& v3) { 9251b362b15af34006e6a11974088a46d42b903418eJohann if (PredFunction3(v1, v2, v3)) 9261b362b15af34006e6a11974088a46d42b903418eJohann return testing::AssertionSuccess(); 9271b362b15af34006e6a11974088a46d42b903418eJohann 9281b362b15af34006e6a11974088a46d42b903418eJohann return testing::AssertionFailure() 9291b362b15af34006e6a11974088a46d42b903418eJohann << e1 << " + " << e2 << " + " << e3 9301b362b15af34006e6a11974088a46d42b903418eJohann << " is expected to be positive, but evaluates to " 9311b362b15af34006e6a11974088a46d42b903418eJohann << v1 + v2 + v3 << "."; 9321b362b15af34006e6a11974088a46d42b903418eJohann} 9331b362b15af34006e6a11974088a46d42b903418eJohann 9341b362b15af34006e6a11974088a46d42b903418eJohann// A ternary predicate-formatter functor. 9351b362b15af34006e6a11974088a46d42b903418eJohannstruct PredFormatFunctor3 { 9361b362b15af34006e6a11974088a46d42b903418eJohann template <typename T1, typename T2, typename T3> 9371b362b15af34006e6a11974088a46d42b903418eJohann testing::AssertionResult operator()(const char* e1, 9381b362b15af34006e6a11974088a46d42b903418eJohann const char* e2, 9391b362b15af34006e6a11974088a46d42b903418eJohann const char* e3, 9401b362b15af34006e6a11974088a46d42b903418eJohann const T1& v1, 9411b362b15af34006e6a11974088a46d42b903418eJohann const T2& v2, 9421b362b15af34006e6a11974088a46d42b903418eJohann const T3& v3) const { 9431b362b15af34006e6a11974088a46d42b903418eJohann return PredFormatFunction3(e1, e2, e3, v1, v2, v3); 9441b362b15af34006e6a11974088a46d42b903418eJohann } 9451b362b15af34006e6a11974088a46d42b903418eJohann}; 9461b362b15af34006e6a11974088a46d42b903418eJohann 9471b362b15af34006e6a11974088a46d42b903418eJohann// Tests for {EXPECT|ASSERT}_PRED_FORMAT3. 9481b362b15af34006e6a11974088a46d42b903418eJohann 9491b362b15af34006e6a11974088a46d42b903418eJohannclass Predicate3Test : public testing::Test { 9501b362b15af34006e6a11974088a46d42b903418eJohann protected: 9511b362b15af34006e6a11974088a46d42b903418eJohann virtual void SetUp() { 9521b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = true; 9531b362b15af34006e6a11974088a46d42b903418eJohann finished_ = false; 9541b362b15af34006e6a11974088a46d42b903418eJohann n1_ = n2_ = n3_ = 0; 9551b362b15af34006e6a11974088a46d42b903418eJohann } 9561b362b15af34006e6a11974088a46d42b903418eJohann 9571b362b15af34006e6a11974088a46d42b903418eJohann virtual void TearDown() { 9581b362b15af34006e6a11974088a46d42b903418eJohann // Verifies that each of the predicate's arguments was evaluated 9591b362b15af34006e6a11974088a46d42b903418eJohann // exactly once. 9601b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_EQ(1, n1_) << 9611b362b15af34006e6a11974088a46d42b903418eJohann "The predicate assertion didn't evaluate argument 2 " 9621b362b15af34006e6a11974088a46d42b903418eJohann "exactly once."; 9631b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_EQ(1, n2_) << 9641b362b15af34006e6a11974088a46d42b903418eJohann "The predicate assertion didn't evaluate argument 3 " 9651b362b15af34006e6a11974088a46d42b903418eJohann "exactly once."; 9661b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_EQ(1, n3_) << 9671b362b15af34006e6a11974088a46d42b903418eJohann "The predicate assertion didn't evaluate argument 4 " 9681b362b15af34006e6a11974088a46d42b903418eJohann "exactly once."; 9691b362b15af34006e6a11974088a46d42b903418eJohann 9701b362b15af34006e6a11974088a46d42b903418eJohann // Verifies that the control flow in the test function is expected. 9711b362b15af34006e6a11974088a46d42b903418eJohann if (expected_to_finish_ && !finished_) { 9721b362b15af34006e6a11974088a46d42b903418eJohann FAIL() << "The predicate assertion unexpactedly aborted the test."; 9731b362b15af34006e6a11974088a46d42b903418eJohann } else if (!expected_to_finish_ && finished_) { 9741b362b15af34006e6a11974088a46d42b903418eJohann FAIL() << "The failed predicate assertion didn't abort the test " 9751b362b15af34006e6a11974088a46d42b903418eJohann "as expected."; 9761b362b15af34006e6a11974088a46d42b903418eJohann } 9771b362b15af34006e6a11974088a46d42b903418eJohann } 9781b362b15af34006e6a11974088a46d42b903418eJohann 9791b362b15af34006e6a11974088a46d42b903418eJohann // true iff the test function is expected to run to finish. 9801b362b15af34006e6a11974088a46d42b903418eJohann static bool expected_to_finish_; 9811b362b15af34006e6a11974088a46d42b903418eJohann 9821b362b15af34006e6a11974088a46d42b903418eJohann // true iff the test function did run to finish. 9831b362b15af34006e6a11974088a46d42b903418eJohann static bool finished_; 9841b362b15af34006e6a11974088a46d42b903418eJohann 9851b362b15af34006e6a11974088a46d42b903418eJohann static int n1_; 9861b362b15af34006e6a11974088a46d42b903418eJohann static int n2_; 9871b362b15af34006e6a11974088a46d42b903418eJohann static int n3_; 9881b362b15af34006e6a11974088a46d42b903418eJohann}; 9891b362b15af34006e6a11974088a46d42b903418eJohann 9901b362b15af34006e6a11974088a46d42b903418eJohannbool Predicate3Test::expected_to_finish_; 9911b362b15af34006e6a11974088a46d42b903418eJohannbool Predicate3Test::finished_; 9921b362b15af34006e6a11974088a46d42b903418eJohannint Predicate3Test::n1_; 9931b362b15af34006e6a11974088a46d42b903418eJohannint Predicate3Test::n2_; 9941b362b15af34006e6a11974088a46d42b903418eJohannint Predicate3Test::n3_; 9951b362b15af34006e6a11974088a46d42b903418eJohann 9961b362b15af34006e6a11974088a46d42b903418eJohanntypedef Predicate3Test EXPECT_PRED_FORMAT3Test; 9971b362b15af34006e6a11974088a46d42b903418eJohanntypedef Predicate3Test ASSERT_PRED_FORMAT3Test; 9981b362b15af34006e6a11974088a46d42b903418eJohanntypedef Predicate3Test EXPECT_PRED3Test; 9991b362b15af34006e6a11974088a46d42b903418eJohanntypedef Predicate3Test ASSERT_PRED3Test; 10001b362b15af34006e6a11974088a46d42b903418eJohann 10011b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED3 where the 10021b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 10031b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED3Test, FunctionOnBuiltInTypeSuccess) { 10041b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED3(PredFunction3Int, 10051b362b15af34006e6a11974088a46d42b903418eJohann ++n1_, 10061b362b15af34006e6a11974088a46d42b903418eJohann ++n2_, 10071b362b15af34006e6a11974088a46d42b903418eJohann ++n3_); 10081b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 10091b362b15af34006e6a11974088a46d42b903418eJohann} 10101b362b15af34006e6a11974088a46d42b903418eJohann 10111b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED3 where the 10121b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 10131b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED3Test, FunctionOnUserTypeSuccess) { 10141b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED3(PredFunction3Bool, 10151b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_), 10161b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n2_), 10171b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n3_)); 10181b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 10191b362b15af34006e6a11974088a46d42b903418eJohann} 10201b362b15af34006e6a11974088a46d42b903418eJohann 10211b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED3 where the 10221b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 10231b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED3Test, FunctorOnBuiltInTypeSuccess) { 10241b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED3(PredFunctor3(), 10251b362b15af34006e6a11974088a46d42b903418eJohann ++n1_, 10261b362b15af34006e6a11974088a46d42b903418eJohann ++n2_, 10271b362b15af34006e6a11974088a46d42b903418eJohann ++n3_); 10281b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 10291b362b15af34006e6a11974088a46d42b903418eJohann} 10301b362b15af34006e6a11974088a46d42b903418eJohann 10311b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED3 where the 10321b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 10331b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED3Test, FunctorOnUserTypeSuccess) { 10341b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED3(PredFunctor3(), 10351b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_), 10361b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n2_), 10371b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n3_)); 10381b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 10391b362b15af34006e6a11974088a46d42b903418eJohann} 10401b362b15af34006e6a11974088a46d42b903418eJohann 10411b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED3 where the 10421b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 10431b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED3Test, FunctionOnBuiltInTypeFailure) { 10441b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 10451b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED3(PredFunction3Int, 10461b362b15af34006e6a11974088a46d42b903418eJohann n1_++, 10471b362b15af34006e6a11974088a46d42b903418eJohann n2_++, 10481b362b15af34006e6a11974088a46d42b903418eJohann n3_++); 10491b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 10501b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 10511b362b15af34006e6a11974088a46d42b903418eJohann} 10521b362b15af34006e6a11974088a46d42b903418eJohann 10531b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED3 where the 10541b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 10551b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED3Test, FunctionOnUserTypeFailure) { 10561b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 10571b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED3(PredFunction3Bool, 10581b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++), 10591b362b15af34006e6a11974088a46d42b903418eJohann Bool(n2_++), 10601b362b15af34006e6a11974088a46d42b903418eJohann Bool(n3_++)); 10611b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 10621b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 10631b362b15af34006e6a11974088a46d42b903418eJohann} 10641b362b15af34006e6a11974088a46d42b903418eJohann 10651b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED3 where the 10661b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 10671b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED3Test, FunctorOnBuiltInTypeFailure) { 10681b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 10691b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED3(PredFunctor3(), 10701b362b15af34006e6a11974088a46d42b903418eJohann n1_++, 10711b362b15af34006e6a11974088a46d42b903418eJohann n2_++, 10721b362b15af34006e6a11974088a46d42b903418eJohann n3_++); 10731b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 10741b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 10751b362b15af34006e6a11974088a46d42b903418eJohann} 10761b362b15af34006e6a11974088a46d42b903418eJohann 10771b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED3 where the 10781b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 10791b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED3Test, FunctorOnUserTypeFailure) { 10801b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 10811b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED3(PredFunctor3(), 10821b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++), 10831b362b15af34006e6a11974088a46d42b903418eJohann Bool(n2_++), 10841b362b15af34006e6a11974088a46d42b903418eJohann Bool(n3_++)); 10851b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 10861b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 10871b362b15af34006e6a11974088a46d42b903418eJohann} 10881b362b15af34006e6a11974088a46d42b903418eJohann 10891b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED3 where the 10901b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 10911b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED3Test, FunctionOnBuiltInTypeSuccess) { 10921b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED3(PredFunction3Int, 10931b362b15af34006e6a11974088a46d42b903418eJohann ++n1_, 10941b362b15af34006e6a11974088a46d42b903418eJohann ++n2_, 10951b362b15af34006e6a11974088a46d42b903418eJohann ++n3_); 10961b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 10971b362b15af34006e6a11974088a46d42b903418eJohann} 10981b362b15af34006e6a11974088a46d42b903418eJohann 10991b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED3 where the 11001b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 11011b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED3Test, FunctionOnUserTypeSuccess) { 11021b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED3(PredFunction3Bool, 11031b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_), 11041b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n2_), 11051b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n3_)); 11061b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 11071b362b15af34006e6a11974088a46d42b903418eJohann} 11081b362b15af34006e6a11974088a46d42b903418eJohann 11091b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED3 where the 11101b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 11111b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED3Test, FunctorOnBuiltInTypeSuccess) { 11121b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED3(PredFunctor3(), 11131b362b15af34006e6a11974088a46d42b903418eJohann ++n1_, 11141b362b15af34006e6a11974088a46d42b903418eJohann ++n2_, 11151b362b15af34006e6a11974088a46d42b903418eJohann ++n3_); 11161b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 11171b362b15af34006e6a11974088a46d42b903418eJohann} 11181b362b15af34006e6a11974088a46d42b903418eJohann 11191b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED3 where the 11201b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 11211b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED3Test, FunctorOnUserTypeSuccess) { 11221b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED3(PredFunctor3(), 11231b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_), 11241b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n2_), 11251b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n3_)); 11261b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 11271b362b15af34006e6a11974088a46d42b903418eJohann} 11281b362b15af34006e6a11974088a46d42b903418eJohann 11291b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED3 where the 11301b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 11311b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED3Test, FunctionOnBuiltInTypeFailure) { 11321b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 11331b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 11341b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED3(PredFunction3Int, 11351b362b15af34006e6a11974088a46d42b903418eJohann n1_++, 11361b362b15af34006e6a11974088a46d42b903418eJohann n2_++, 11371b362b15af34006e6a11974088a46d42b903418eJohann n3_++); 11381b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 11391b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 11401b362b15af34006e6a11974088a46d42b903418eJohann} 11411b362b15af34006e6a11974088a46d42b903418eJohann 11421b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED3 where the 11431b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 11441b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED3Test, FunctionOnUserTypeFailure) { 11451b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 11461b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 11471b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED3(PredFunction3Bool, 11481b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++), 11491b362b15af34006e6a11974088a46d42b903418eJohann Bool(n2_++), 11501b362b15af34006e6a11974088a46d42b903418eJohann Bool(n3_++)); 11511b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 11521b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 11531b362b15af34006e6a11974088a46d42b903418eJohann} 11541b362b15af34006e6a11974088a46d42b903418eJohann 11551b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED3 where the 11561b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 11571b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED3Test, FunctorOnBuiltInTypeFailure) { 11581b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 11591b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 11601b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED3(PredFunctor3(), 11611b362b15af34006e6a11974088a46d42b903418eJohann n1_++, 11621b362b15af34006e6a11974088a46d42b903418eJohann n2_++, 11631b362b15af34006e6a11974088a46d42b903418eJohann n3_++); 11641b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 11651b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 11661b362b15af34006e6a11974088a46d42b903418eJohann} 11671b362b15af34006e6a11974088a46d42b903418eJohann 11681b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED3 where the 11691b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 11701b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED3Test, FunctorOnUserTypeFailure) { 11711b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 11721b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 11731b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED3(PredFunctor3(), 11741b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++), 11751b362b15af34006e6a11974088a46d42b903418eJohann Bool(n2_++), 11761b362b15af34006e6a11974088a46d42b903418eJohann Bool(n3_++)); 11771b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 11781b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 11791b362b15af34006e6a11974088a46d42b903418eJohann} 11801b362b15af34006e6a11974088a46d42b903418eJohann 11811b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED_FORMAT3 where the 11821b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 11831b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT3Test, FunctionOnBuiltInTypeSuccess) { 11841b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT3(PredFormatFunction3, 11851b362b15af34006e6a11974088a46d42b903418eJohann ++n1_, 11861b362b15af34006e6a11974088a46d42b903418eJohann ++n2_, 11871b362b15af34006e6a11974088a46d42b903418eJohann ++n3_); 11881b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 11891b362b15af34006e6a11974088a46d42b903418eJohann} 11901b362b15af34006e6a11974088a46d42b903418eJohann 11911b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED_FORMAT3 where the 11921b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 11931b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT3Test, FunctionOnUserTypeSuccess) { 11941b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT3(PredFormatFunction3, 11951b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_), 11961b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n2_), 11971b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n3_)); 11981b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 11991b362b15af34006e6a11974088a46d42b903418eJohann} 12001b362b15af34006e6a11974088a46d42b903418eJohann 12011b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED_FORMAT3 where the 12021b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 12031b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT3Test, FunctorOnBuiltInTypeSuccess) { 12041b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT3(PredFormatFunctor3(), 12051b362b15af34006e6a11974088a46d42b903418eJohann ++n1_, 12061b362b15af34006e6a11974088a46d42b903418eJohann ++n2_, 12071b362b15af34006e6a11974088a46d42b903418eJohann ++n3_); 12081b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 12091b362b15af34006e6a11974088a46d42b903418eJohann} 12101b362b15af34006e6a11974088a46d42b903418eJohann 12111b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED_FORMAT3 where the 12121b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 12131b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT3Test, FunctorOnUserTypeSuccess) { 12141b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT3(PredFormatFunctor3(), 12151b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_), 12161b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n2_), 12171b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n3_)); 12181b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 12191b362b15af34006e6a11974088a46d42b903418eJohann} 12201b362b15af34006e6a11974088a46d42b903418eJohann 12211b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED_FORMAT3 where the 12221b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 12231b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT3Test, FunctionOnBuiltInTypeFailure) { 12241b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 12251b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT3(PredFormatFunction3, 12261b362b15af34006e6a11974088a46d42b903418eJohann n1_++, 12271b362b15af34006e6a11974088a46d42b903418eJohann n2_++, 12281b362b15af34006e6a11974088a46d42b903418eJohann n3_++); 12291b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 12301b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 12311b362b15af34006e6a11974088a46d42b903418eJohann} 12321b362b15af34006e6a11974088a46d42b903418eJohann 12331b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED_FORMAT3 where the 12341b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 12351b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT3Test, FunctionOnUserTypeFailure) { 12361b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 12371b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT3(PredFormatFunction3, 12381b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++), 12391b362b15af34006e6a11974088a46d42b903418eJohann Bool(n2_++), 12401b362b15af34006e6a11974088a46d42b903418eJohann Bool(n3_++)); 12411b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 12421b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 12431b362b15af34006e6a11974088a46d42b903418eJohann} 12441b362b15af34006e6a11974088a46d42b903418eJohann 12451b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED_FORMAT3 where the 12461b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 12471b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT3Test, FunctorOnBuiltInTypeFailure) { 12481b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 12491b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT3(PredFormatFunctor3(), 12501b362b15af34006e6a11974088a46d42b903418eJohann n1_++, 12511b362b15af34006e6a11974088a46d42b903418eJohann n2_++, 12521b362b15af34006e6a11974088a46d42b903418eJohann n3_++); 12531b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 12541b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 12551b362b15af34006e6a11974088a46d42b903418eJohann} 12561b362b15af34006e6a11974088a46d42b903418eJohann 12571b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED_FORMAT3 where the 12581b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 12591b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT3Test, FunctorOnUserTypeFailure) { 12601b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 12611b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT3(PredFormatFunctor3(), 12621b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++), 12631b362b15af34006e6a11974088a46d42b903418eJohann Bool(n2_++), 12641b362b15af34006e6a11974088a46d42b903418eJohann Bool(n3_++)); 12651b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 12661b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 12671b362b15af34006e6a11974088a46d42b903418eJohann} 12681b362b15af34006e6a11974088a46d42b903418eJohann 12691b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED_FORMAT3 where the 12701b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 12711b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT3Test, FunctionOnBuiltInTypeSuccess) { 12721b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT3(PredFormatFunction3, 12731b362b15af34006e6a11974088a46d42b903418eJohann ++n1_, 12741b362b15af34006e6a11974088a46d42b903418eJohann ++n2_, 12751b362b15af34006e6a11974088a46d42b903418eJohann ++n3_); 12761b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 12771b362b15af34006e6a11974088a46d42b903418eJohann} 12781b362b15af34006e6a11974088a46d42b903418eJohann 12791b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED_FORMAT3 where the 12801b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 12811b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT3Test, FunctionOnUserTypeSuccess) { 12821b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT3(PredFormatFunction3, 12831b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_), 12841b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n2_), 12851b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n3_)); 12861b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 12871b362b15af34006e6a11974088a46d42b903418eJohann} 12881b362b15af34006e6a11974088a46d42b903418eJohann 12891b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED_FORMAT3 where the 12901b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 12911b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT3Test, FunctorOnBuiltInTypeSuccess) { 12921b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT3(PredFormatFunctor3(), 12931b362b15af34006e6a11974088a46d42b903418eJohann ++n1_, 12941b362b15af34006e6a11974088a46d42b903418eJohann ++n2_, 12951b362b15af34006e6a11974088a46d42b903418eJohann ++n3_); 12961b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 12971b362b15af34006e6a11974088a46d42b903418eJohann} 12981b362b15af34006e6a11974088a46d42b903418eJohann 12991b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED_FORMAT3 where the 13001b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 13011b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT3Test, FunctorOnUserTypeSuccess) { 13021b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT3(PredFormatFunctor3(), 13031b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_), 13041b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n2_), 13051b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n3_)); 13061b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 13071b362b15af34006e6a11974088a46d42b903418eJohann} 13081b362b15af34006e6a11974088a46d42b903418eJohann 13091b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED_FORMAT3 where the 13101b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 13111b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT3Test, FunctionOnBuiltInTypeFailure) { 13121b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 13131b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 13141b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT3(PredFormatFunction3, 13151b362b15af34006e6a11974088a46d42b903418eJohann n1_++, 13161b362b15af34006e6a11974088a46d42b903418eJohann n2_++, 13171b362b15af34006e6a11974088a46d42b903418eJohann n3_++); 13181b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 13191b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 13201b362b15af34006e6a11974088a46d42b903418eJohann} 13211b362b15af34006e6a11974088a46d42b903418eJohann 13221b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED_FORMAT3 where the 13231b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 13241b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT3Test, FunctionOnUserTypeFailure) { 13251b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 13261b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 13271b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT3(PredFormatFunction3, 13281b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++), 13291b362b15af34006e6a11974088a46d42b903418eJohann Bool(n2_++), 13301b362b15af34006e6a11974088a46d42b903418eJohann Bool(n3_++)); 13311b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 13321b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 13331b362b15af34006e6a11974088a46d42b903418eJohann} 13341b362b15af34006e6a11974088a46d42b903418eJohann 13351b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED_FORMAT3 where the 13361b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 13371b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT3Test, FunctorOnBuiltInTypeFailure) { 13381b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 13391b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 13401b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT3(PredFormatFunctor3(), 13411b362b15af34006e6a11974088a46d42b903418eJohann n1_++, 13421b362b15af34006e6a11974088a46d42b903418eJohann n2_++, 13431b362b15af34006e6a11974088a46d42b903418eJohann n3_++); 13441b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 13451b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 13461b362b15af34006e6a11974088a46d42b903418eJohann} 13471b362b15af34006e6a11974088a46d42b903418eJohann 13481b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED_FORMAT3 where the 13491b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 13501b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT3Test, FunctorOnUserTypeFailure) { 13511b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 13521b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 13531b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT3(PredFormatFunctor3(), 13541b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++), 13551b362b15af34006e6a11974088a46d42b903418eJohann Bool(n2_++), 13561b362b15af34006e6a11974088a46d42b903418eJohann Bool(n3_++)); 13571b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 13581b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 13591b362b15af34006e6a11974088a46d42b903418eJohann} 13601b362b15af34006e6a11974088a46d42b903418eJohann// Sample functions/functors for testing 4-ary predicate assertions. 13611b362b15af34006e6a11974088a46d42b903418eJohann 13621b362b15af34006e6a11974088a46d42b903418eJohann// A 4-ary predicate function. 13631b362b15af34006e6a11974088a46d42b903418eJohanntemplate <typename T1, typename T2, typename T3, typename T4> 13641b362b15af34006e6a11974088a46d42b903418eJohannbool PredFunction4(T1 v1, T2 v2, T3 v3, T4 v4) { 13651b362b15af34006e6a11974088a46d42b903418eJohann return v1 + v2 + v3 + v4 > 0; 13661b362b15af34006e6a11974088a46d42b903418eJohann} 13671b362b15af34006e6a11974088a46d42b903418eJohann 13681b362b15af34006e6a11974088a46d42b903418eJohann// The following two functions are needed to circumvent a bug in 13691b362b15af34006e6a11974088a46d42b903418eJohann// gcc 2.95.3, which sometimes has problem with the above template 13701b362b15af34006e6a11974088a46d42b903418eJohann// function. 13711b362b15af34006e6a11974088a46d42b903418eJohannbool PredFunction4Int(int v1, int v2, int v3, int v4) { 13721b362b15af34006e6a11974088a46d42b903418eJohann return v1 + v2 + v3 + v4 > 0; 13731b362b15af34006e6a11974088a46d42b903418eJohann} 13741b362b15af34006e6a11974088a46d42b903418eJohannbool PredFunction4Bool(Bool v1, Bool v2, Bool v3, Bool v4) { 13751b362b15af34006e6a11974088a46d42b903418eJohann return v1 + v2 + v3 + v4 > 0; 13761b362b15af34006e6a11974088a46d42b903418eJohann} 13771b362b15af34006e6a11974088a46d42b903418eJohann 13781b362b15af34006e6a11974088a46d42b903418eJohann// A 4-ary predicate functor. 13791b362b15af34006e6a11974088a46d42b903418eJohannstruct PredFunctor4 { 13801b362b15af34006e6a11974088a46d42b903418eJohann template <typename T1, typename T2, typename T3, typename T4> 13811b362b15af34006e6a11974088a46d42b903418eJohann bool operator()(const T1& v1, 13821b362b15af34006e6a11974088a46d42b903418eJohann const T2& v2, 13831b362b15af34006e6a11974088a46d42b903418eJohann const T3& v3, 13841b362b15af34006e6a11974088a46d42b903418eJohann const T4& v4) { 13851b362b15af34006e6a11974088a46d42b903418eJohann return v1 + v2 + v3 + v4 > 0; 13861b362b15af34006e6a11974088a46d42b903418eJohann } 13871b362b15af34006e6a11974088a46d42b903418eJohann}; 13881b362b15af34006e6a11974088a46d42b903418eJohann 13891b362b15af34006e6a11974088a46d42b903418eJohann// A 4-ary predicate-formatter function. 13901b362b15af34006e6a11974088a46d42b903418eJohanntemplate <typename T1, typename T2, typename T3, typename T4> 13911b362b15af34006e6a11974088a46d42b903418eJohanntesting::AssertionResult PredFormatFunction4(const char* e1, 13921b362b15af34006e6a11974088a46d42b903418eJohann const char* e2, 13931b362b15af34006e6a11974088a46d42b903418eJohann const char* e3, 13941b362b15af34006e6a11974088a46d42b903418eJohann const char* e4, 13951b362b15af34006e6a11974088a46d42b903418eJohann const T1& v1, 13961b362b15af34006e6a11974088a46d42b903418eJohann const T2& v2, 13971b362b15af34006e6a11974088a46d42b903418eJohann const T3& v3, 13981b362b15af34006e6a11974088a46d42b903418eJohann const T4& v4) { 13991b362b15af34006e6a11974088a46d42b903418eJohann if (PredFunction4(v1, v2, v3, v4)) 14001b362b15af34006e6a11974088a46d42b903418eJohann return testing::AssertionSuccess(); 14011b362b15af34006e6a11974088a46d42b903418eJohann 14021b362b15af34006e6a11974088a46d42b903418eJohann return testing::AssertionFailure() 14031b362b15af34006e6a11974088a46d42b903418eJohann << e1 << " + " << e2 << " + " << e3 << " + " << e4 14041b362b15af34006e6a11974088a46d42b903418eJohann << " is expected to be positive, but evaluates to " 14051b362b15af34006e6a11974088a46d42b903418eJohann << v1 + v2 + v3 + v4 << "."; 14061b362b15af34006e6a11974088a46d42b903418eJohann} 14071b362b15af34006e6a11974088a46d42b903418eJohann 14081b362b15af34006e6a11974088a46d42b903418eJohann// A 4-ary predicate-formatter functor. 14091b362b15af34006e6a11974088a46d42b903418eJohannstruct PredFormatFunctor4 { 14101b362b15af34006e6a11974088a46d42b903418eJohann template <typename T1, typename T2, typename T3, typename T4> 14111b362b15af34006e6a11974088a46d42b903418eJohann testing::AssertionResult operator()(const char* e1, 14121b362b15af34006e6a11974088a46d42b903418eJohann const char* e2, 14131b362b15af34006e6a11974088a46d42b903418eJohann const char* e3, 14141b362b15af34006e6a11974088a46d42b903418eJohann const char* e4, 14151b362b15af34006e6a11974088a46d42b903418eJohann const T1& v1, 14161b362b15af34006e6a11974088a46d42b903418eJohann const T2& v2, 14171b362b15af34006e6a11974088a46d42b903418eJohann const T3& v3, 14181b362b15af34006e6a11974088a46d42b903418eJohann const T4& v4) const { 14191b362b15af34006e6a11974088a46d42b903418eJohann return PredFormatFunction4(e1, e2, e3, e4, v1, v2, v3, v4); 14201b362b15af34006e6a11974088a46d42b903418eJohann } 14211b362b15af34006e6a11974088a46d42b903418eJohann}; 14221b362b15af34006e6a11974088a46d42b903418eJohann 14231b362b15af34006e6a11974088a46d42b903418eJohann// Tests for {EXPECT|ASSERT}_PRED_FORMAT4. 14241b362b15af34006e6a11974088a46d42b903418eJohann 14251b362b15af34006e6a11974088a46d42b903418eJohannclass Predicate4Test : public testing::Test { 14261b362b15af34006e6a11974088a46d42b903418eJohann protected: 14271b362b15af34006e6a11974088a46d42b903418eJohann virtual void SetUp() { 14281b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = true; 14291b362b15af34006e6a11974088a46d42b903418eJohann finished_ = false; 14301b362b15af34006e6a11974088a46d42b903418eJohann n1_ = n2_ = n3_ = n4_ = 0; 14311b362b15af34006e6a11974088a46d42b903418eJohann } 14321b362b15af34006e6a11974088a46d42b903418eJohann 14331b362b15af34006e6a11974088a46d42b903418eJohann virtual void TearDown() { 14341b362b15af34006e6a11974088a46d42b903418eJohann // Verifies that each of the predicate's arguments was evaluated 14351b362b15af34006e6a11974088a46d42b903418eJohann // exactly once. 14361b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_EQ(1, n1_) << 14371b362b15af34006e6a11974088a46d42b903418eJohann "The predicate assertion didn't evaluate argument 2 " 14381b362b15af34006e6a11974088a46d42b903418eJohann "exactly once."; 14391b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_EQ(1, n2_) << 14401b362b15af34006e6a11974088a46d42b903418eJohann "The predicate assertion didn't evaluate argument 3 " 14411b362b15af34006e6a11974088a46d42b903418eJohann "exactly once."; 14421b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_EQ(1, n3_) << 14431b362b15af34006e6a11974088a46d42b903418eJohann "The predicate assertion didn't evaluate argument 4 " 14441b362b15af34006e6a11974088a46d42b903418eJohann "exactly once."; 14451b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_EQ(1, n4_) << 14461b362b15af34006e6a11974088a46d42b903418eJohann "The predicate assertion didn't evaluate argument 5 " 14471b362b15af34006e6a11974088a46d42b903418eJohann "exactly once."; 14481b362b15af34006e6a11974088a46d42b903418eJohann 14491b362b15af34006e6a11974088a46d42b903418eJohann // Verifies that the control flow in the test function is expected. 14501b362b15af34006e6a11974088a46d42b903418eJohann if (expected_to_finish_ && !finished_) { 14511b362b15af34006e6a11974088a46d42b903418eJohann FAIL() << "The predicate assertion unexpactedly aborted the test."; 14521b362b15af34006e6a11974088a46d42b903418eJohann } else if (!expected_to_finish_ && finished_) { 14531b362b15af34006e6a11974088a46d42b903418eJohann FAIL() << "The failed predicate assertion didn't abort the test " 14541b362b15af34006e6a11974088a46d42b903418eJohann "as expected."; 14551b362b15af34006e6a11974088a46d42b903418eJohann } 14561b362b15af34006e6a11974088a46d42b903418eJohann } 14571b362b15af34006e6a11974088a46d42b903418eJohann 14581b362b15af34006e6a11974088a46d42b903418eJohann // true iff the test function is expected to run to finish. 14591b362b15af34006e6a11974088a46d42b903418eJohann static bool expected_to_finish_; 14601b362b15af34006e6a11974088a46d42b903418eJohann 14611b362b15af34006e6a11974088a46d42b903418eJohann // true iff the test function did run to finish. 14621b362b15af34006e6a11974088a46d42b903418eJohann static bool finished_; 14631b362b15af34006e6a11974088a46d42b903418eJohann 14641b362b15af34006e6a11974088a46d42b903418eJohann static int n1_; 14651b362b15af34006e6a11974088a46d42b903418eJohann static int n2_; 14661b362b15af34006e6a11974088a46d42b903418eJohann static int n3_; 14671b362b15af34006e6a11974088a46d42b903418eJohann static int n4_; 14681b362b15af34006e6a11974088a46d42b903418eJohann}; 14691b362b15af34006e6a11974088a46d42b903418eJohann 14701b362b15af34006e6a11974088a46d42b903418eJohannbool Predicate4Test::expected_to_finish_; 14711b362b15af34006e6a11974088a46d42b903418eJohannbool Predicate4Test::finished_; 14721b362b15af34006e6a11974088a46d42b903418eJohannint Predicate4Test::n1_; 14731b362b15af34006e6a11974088a46d42b903418eJohannint Predicate4Test::n2_; 14741b362b15af34006e6a11974088a46d42b903418eJohannint Predicate4Test::n3_; 14751b362b15af34006e6a11974088a46d42b903418eJohannint Predicate4Test::n4_; 14761b362b15af34006e6a11974088a46d42b903418eJohann 14771b362b15af34006e6a11974088a46d42b903418eJohanntypedef Predicate4Test EXPECT_PRED_FORMAT4Test; 14781b362b15af34006e6a11974088a46d42b903418eJohanntypedef Predicate4Test ASSERT_PRED_FORMAT4Test; 14791b362b15af34006e6a11974088a46d42b903418eJohanntypedef Predicate4Test EXPECT_PRED4Test; 14801b362b15af34006e6a11974088a46d42b903418eJohanntypedef Predicate4Test ASSERT_PRED4Test; 14811b362b15af34006e6a11974088a46d42b903418eJohann 14821b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED4 where the 14831b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 14841b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED4Test, FunctionOnBuiltInTypeSuccess) { 14851b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED4(PredFunction4Int, 14861b362b15af34006e6a11974088a46d42b903418eJohann ++n1_, 14871b362b15af34006e6a11974088a46d42b903418eJohann ++n2_, 14881b362b15af34006e6a11974088a46d42b903418eJohann ++n3_, 14891b362b15af34006e6a11974088a46d42b903418eJohann ++n4_); 14901b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 14911b362b15af34006e6a11974088a46d42b903418eJohann} 14921b362b15af34006e6a11974088a46d42b903418eJohann 14931b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED4 where the 14941b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 14951b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED4Test, FunctionOnUserTypeSuccess) { 14961b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED4(PredFunction4Bool, 14971b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_), 14981b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n2_), 14991b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n3_), 15001b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n4_)); 15011b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 15021b362b15af34006e6a11974088a46d42b903418eJohann} 15031b362b15af34006e6a11974088a46d42b903418eJohann 15041b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED4 where the 15051b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 15061b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED4Test, FunctorOnBuiltInTypeSuccess) { 15071b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED4(PredFunctor4(), 15081b362b15af34006e6a11974088a46d42b903418eJohann ++n1_, 15091b362b15af34006e6a11974088a46d42b903418eJohann ++n2_, 15101b362b15af34006e6a11974088a46d42b903418eJohann ++n3_, 15111b362b15af34006e6a11974088a46d42b903418eJohann ++n4_); 15121b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 15131b362b15af34006e6a11974088a46d42b903418eJohann} 15141b362b15af34006e6a11974088a46d42b903418eJohann 15151b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED4 where the 15161b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 15171b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED4Test, FunctorOnUserTypeSuccess) { 15181b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED4(PredFunctor4(), 15191b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_), 15201b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n2_), 15211b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n3_), 15221b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n4_)); 15231b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 15241b362b15af34006e6a11974088a46d42b903418eJohann} 15251b362b15af34006e6a11974088a46d42b903418eJohann 15261b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED4 where the 15271b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 15281b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED4Test, FunctionOnBuiltInTypeFailure) { 15291b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 15301b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED4(PredFunction4Int, 15311b362b15af34006e6a11974088a46d42b903418eJohann n1_++, 15321b362b15af34006e6a11974088a46d42b903418eJohann n2_++, 15331b362b15af34006e6a11974088a46d42b903418eJohann n3_++, 15341b362b15af34006e6a11974088a46d42b903418eJohann n4_++); 15351b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 15361b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 15371b362b15af34006e6a11974088a46d42b903418eJohann} 15381b362b15af34006e6a11974088a46d42b903418eJohann 15391b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED4 where the 15401b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 15411b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED4Test, FunctionOnUserTypeFailure) { 15421b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 15431b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED4(PredFunction4Bool, 15441b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++), 15451b362b15af34006e6a11974088a46d42b903418eJohann Bool(n2_++), 15461b362b15af34006e6a11974088a46d42b903418eJohann Bool(n3_++), 15471b362b15af34006e6a11974088a46d42b903418eJohann Bool(n4_++)); 15481b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 15491b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 15501b362b15af34006e6a11974088a46d42b903418eJohann} 15511b362b15af34006e6a11974088a46d42b903418eJohann 15521b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED4 where the 15531b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 15541b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED4Test, FunctorOnBuiltInTypeFailure) { 15551b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 15561b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED4(PredFunctor4(), 15571b362b15af34006e6a11974088a46d42b903418eJohann n1_++, 15581b362b15af34006e6a11974088a46d42b903418eJohann n2_++, 15591b362b15af34006e6a11974088a46d42b903418eJohann n3_++, 15601b362b15af34006e6a11974088a46d42b903418eJohann n4_++); 15611b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 15621b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 15631b362b15af34006e6a11974088a46d42b903418eJohann} 15641b362b15af34006e6a11974088a46d42b903418eJohann 15651b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED4 where the 15661b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 15671b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED4Test, FunctorOnUserTypeFailure) { 15681b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 15691b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED4(PredFunctor4(), 15701b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++), 15711b362b15af34006e6a11974088a46d42b903418eJohann Bool(n2_++), 15721b362b15af34006e6a11974088a46d42b903418eJohann Bool(n3_++), 15731b362b15af34006e6a11974088a46d42b903418eJohann Bool(n4_++)); 15741b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 15751b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 15761b362b15af34006e6a11974088a46d42b903418eJohann} 15771b362b15af34006e6a11974088a46d42b903418eJohann 15781b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED4 where the 15791b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 15801b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED4Test, FunctionOnBuiltInTypeSuccess) { 15811b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED4(PredFunction4Int, 15821b362b15af34006e6a11974088a46d42b903418eJohann ++n1_, 15831b362b15af34006e6a11974088a46d42b903418eJohann ++n2_, 15841b362b15af34006e6a11974088a46d42b903418eJohann ++n3_, 15851b362b15af34006e6a11974088a46d42b903418eJohann ++n4_); 15861b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 15871b362b15af34006e6a11974088a46d42b903418eJohann} 15881b362b15af34006e6a11974088a46d42b903418eJohann 15891b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED4 where the 15901b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 15911b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED4Test, FunctionOnUserTypeSuccess) { 15921b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED4(PredFunction4Bool, 15931b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_), 15941b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n2_), 15951b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n3_), 15961b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n4_)); 15971b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 15981b362b15af34006e6a11974088a46d42b903418eJohann} 15991b362b15af34006e6a11974088a46d42b903418eJohann 16001b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED4 where the 16011b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 16021b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED4Test, FunctorOnBuiltInTypeSuccess) { 16031b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED4(PredFunctor4(), 16041b362b15af34006e6a11974088a46d42b903418eJohann ++n1_, 16051b362b15af34006e6a11974088a46d42b903418eJohann ++n2_, 16061b362b15af34006e6a11974088a46d42b903418eJohann ++n3_, 16071b362b15af34006e6a11974088a46d42b903418eJohann ++n4_); 16081b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 16091b362b15af34006e6a11974088a46d42b903418eJohann} 16101b362b15af34006e6a11974088a46d42b903418eJohann 16111b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED4 where the 16121b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 16131b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED4Test, FunctorOnUserTypeSuccess) { 16141b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED4(PredFunctor4(), 16151b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_), 16161b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n2_), 16171b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n3_), 16181b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n4_)); 16191b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 16201b362b15af34006e6a11974088a46d42b903418eJohann} 16211b362b15af34006e6a11974088a46d42b903418eJohann 16221b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED4 where the 16231b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 16241b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED4Test, FunctionOnBuiltInTypeFailure) { 16251b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 16261b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 16271b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED4(PredFunction4Int, 16281b362b15af34006e6a11974088a46d42b903418eJohann n1_++, 16291b362b15af34006e6a11974088a46d42b903418eJohann n2_++, 16301b362b15af34006e6a11974088a46d42b903418eJohann n3_++, 16311b362b15af34006e6a11974088a46d42b903418eJohann n4_++); 16321b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 16331b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 16341b362b15af34006e6a11974088a46d42b903418eJohann} 16351b362b15af34006e6a11974088a46d42b903418eJohann 16361b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED4 where the 16371b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 16381b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED4Test, FunctionOnUserTypeFailure) { 16391b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 16401b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 16411b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED4(PredFunction4Bool, 16421b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++), 16431b362b15af34006e6a11974088a46d42b903418eJohann Bool(n2_++), 16441b362b15af34006e6a11974088a46d42b903418eJohann Bool(n3_++), 16451b362b15af34006e6a11974088a46d42b903418eJohann Bool(n4_++)); 16461b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 16471b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 16481b362b15af34006e6a11974088a46d42b903418eJohann} 16491b362b15af34006e6a11974088a46d42b903418eJohann 16501b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED4 where the 16511b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 16521b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED4Test, FunctorOnBuiltInTypeFailure) { 16531b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 16541b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 16551b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED4(PredFunctor4(), 16561b362b15af34006e6a11974088a46d42b903418eJohann n1_++, 16571b362b15af34006e6a11974088a46d42b903418eJohann n2_++, 16581b362b15af34006e6a11974088a46d42b903418eJohann n3_++, 16591b362b15af34006e6a11974088a46d42b903418eJohann n4_++); 16601b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 16611b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 16621b362b15af34006e6a11974088a46d42b903418eJohann} 16631b362b15af34006e6a11974088a46d42b903418eJohann 16641b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED4 where the 16651b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 16661b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED4Test, FunctorOnUserTypeFailure) { 16671b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 16681b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 16691b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED4(PredFunctor4(), 16701b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++), 16711b362b15af34006e6a11974088a46d42b903418eJohann Bool(n2_++), 16721b362b15af34006e6a11974088a46d42b903418eJohann Bool(n3_++), 16731b362b15af34006e6a11974088a46d42b903418eJohann Bool(n4_++)); 16741b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 16751b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 16761b362b15af34006e6a11974088a46d42b903418eJohann} 16771b362b15af34006e6a11974088a46d42b903418eJohann 16781b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED_FORMAT4 where the 16791b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 16801b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT4Test, FunctionOnBuiltInTypeSuccess) { 16811b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT4(PredFormatFunction4, 16821b362b15af34006e6a11974088a46d42b903418eJohann ++n1_, 16831b362b15af34006e6a11974088a46d42b903418eJohann ++n2_, 16841b362b15af34006e6a11974088a46d42b903418eJohann ++n3_, 16851b362b15af34006e6a11974088a46d42b903418eJohann ++n4_); 16861b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 16871b362b15af34006e6a11974088a46d42b903418eJohann} 16881b362b15af34006e6a11974088a46d42b903418eJohann 16891b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED_FORMAT4 where the 16901b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 16911b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT4Test, FunctionOnUserTypeSuccess) { 16921b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT4(PredFormatFunction4, 16931b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_), 16941b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n2_), 16951b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n3_), 16961b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n4_)); 16971b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 16981b362b15af34006e6a11974088a46d42b903418eJohann} 16991b362b15af34006e6a11974088a46d42b903418eJohann 17001b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED_FORMAT4 where the 17011b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 17021b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT4Test, FunctorOnBuiltInTypeSuccess) { 17031b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT4(PredFormatFunctor4(), 17041b362b15af34006e6a11974088a46d42b903418eJohann ++n1_, 17051b362b15af34006e6a11974088a46d42b903418eJohann ++n2_, 17061b362b15af34006e6a11974088a46d42b903418eJohann ++n3_, 17071b362b15af34006e6a11974088a46d42b903418eJohann ++n4_); 17081b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 17091b362b15af34006e6a11974088a46d42b903418eJohann} 17101b362b15af34006e6a11974088a46d42b903418eJohann 17111b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED_FORMAT4 where the 17121b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 17131b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT4Test, FunctorOnUserTypeSuccess) { 17141b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT4(PredFormatFunctor4(), 17151b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_), 17161b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n2_), 17171b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n3_), 17181b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n4_)); 17191b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 17201b362b15af34006e6a11974088a46d42b903418eJohann} 17211b362b15af34006e6a11974088a46d42b903418eJohann 17221b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED_FORMAT4 where the 17231b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 17241b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT4Test, FunctionOnBuiltInTypeFailure) { 17251b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 17261b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT4(PredFormatFunction4, 17271b362b15af34006e6a11974088a46d42b903418eJohann n1_++, 17281b362b15af34006e6a11974088a46d42b903418eJohann n2_++, 17291b362b15af34006e6a11974088a46d42b903418eJohann n3_++, 17301b362b15af34006e6a11974088a46d42b903418eJohann n4_++); 17311b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 17321b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 17331b362b15af34006e6a11974088a46d42b903418eJohann} 17341b362b15af34006e6a11974088a46d42b903418eJohann 17351b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED_FORMAT4 where the 17361b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 17371b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT4Test, FunctionOnUserTypeFailure) { 17381b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 17391b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT4(PredFormatFunction4, 17401b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++), 17411b362b15af34006e6a11974088a46d42b903418eJohann Bool(n2_++), 17421b362b15af34006e6a11974088a46d42b903418eJohann Bool(n3_++), 17431b362b15af34006e6a11974088a46d42b903418eJohann Bool(n4_++)); 17441b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 17451b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 17461b362b15af34006e6a11974088a46d42b903418eJohann} 17471b362b15af34006e6a11974088a46d42b903418eJohann 17481b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED_FORMAT4 where the 17491b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 17501b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT4Test, FunctorOnBuiltInTypeFailure) { 17511b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 17521b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT4(PredFormatFunctor4(), 17531b362b15af34006e6a11974088a46d42b903418eJohann n1_++, 17541b362b15af34006e6a11974088a46d42b903418eJohann n2_++, 17551b362b15af34006e6a11974088a46d42b903418eJohann n3_++, 17561b362b15af34006e6a11974088a46d42b903418eJohann n4_++); 17571b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 17581b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 17591b362b15af34006e6a11974088a46d42b903418eJohann} 17601b362b15af34006e6a11974088a46d42b903418eJohann 17611b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED_FORMAT4 where the 17621b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 17631b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT4Test, FunctorOnUserTypeFailure) { 17641b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 17651b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT4(PredFormatFunctor4(), 17661b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++), 17671b362b15af34006e6a11974088a46d42b903418eJohann Bool(n2_++), 17681b362b15af34006e6a11974088a46d42b903418eJohann Bool(n3_++), 17691b362b15af34006e6a11974088a46d42b903418eJohann Bool(n4_++)); 17701b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 17711b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 17721b362b15af34006e6a11974088a46d42b903418eJohann} 17731b362b15af34006e6a11974088a46d42b903418eJohann 17741b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED_FORMAT4 where the 17751b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 17761b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT4Test, FunctionOnBuiltInTypeSuccess) { 17771b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT4(PredFormatFunction4, 17781b362b15af34006e6a11974088a46d42b903418eJohann ++n1_, 17791b362b15af34006e6a11974088a46d42b903418eJohann ++n2_, 17801b362b15af34006e6a11974088a46d42b903418eJohann ++n3_, 17811b362b15af34006e6a11974088a46d42b903418eJohann ++n4_); 17821b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 17831b362b15af34006e6a11974088a46d42b903418eJohann} 17841b362b15af34006e6a11974088a46d42b903418eJohann 17851b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED_FORMAT4 where the 17861b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 17871b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT4Test, FunctionOnUserTypeSuccess) { 17881b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT4(PredFormatFunction4, 17891b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_), 17901b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n2_), 17911b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n3_), 17921b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n4_)); 17931b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 17941b362b15af34006e6a11974088a46d42b903418eJohann} 17951b362b15af34006e6a11974088a46d42b903418eJohann 17961b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED_FORMAT4 where the 17971b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 17981b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT4Test, FunctorOnBuiltInTypeSuccess) { 17991b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT4(PredFormatFunctor4(), 18001b362b15af34006e6a11974088a46d42b903418eJohann ++n1_, 18011b362b15af34006e6a11974088a46d42b903418eJohann ++n2_, 18021b362b15af34006e6a11974088a46d42b903418eJohann ++n3_, 18031b362b15af34006e6a11974088a46d42b903418eJohann ++n4_); 18041b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 18051b362b15af34006e6a11974088a46d42b903418eJohann} 18061b362b15af34006e6a11974088a46d42b903418eJohann 18071b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED_FORMAT4 where the 18081b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 18091b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT4Test, FunctorOnUserTypeSuccess) { 18101b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT4(PredFormatFunctor4(), 18111b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_), 18121b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n2_), 18131b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n3_), 18141b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n4_)); 18151b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 18161b362b15af34006e6a11974088a46d42b903418eJohann} 18171b362b15af34006e6a11974088a46d42b903418eJohann 18181b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED_FORMAT4 where the 18191b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 18201b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT4Test, FunctionOnBuiltInTypeFailure) { 18211b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 18221b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 18231b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT4(PredFormatFunction4, 18241b362b15af34006e6a11974088a46d42b903418eJohann n1_++, 18251b362b15af34006e6a11974088a46d42b903418eJohann n2_++, 18261b362b15af34006e6a11974088a46d42b903418eJohann n3_++, 18271b362b15af34006e6a11974088a46d42b903418eJohann n4_++); 18281b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 18291b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 18301b362b15af34006e6a11974088a46d42b903418eJohann} 18311b362b15af34006e6a11974088a46d42b903418eJohann 18321b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED_FORMAT4 where the 18331b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 18341b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT4Test, FunctionOnUserTypeFailure) { 18351b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 18361b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 18371b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT4(PredFormatFunction4, 18381b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++), 18391b362b15af34006e6a11974088a46d42b903418eJohann Bool(n2_++), 18401b362b15af34006e6a11974088a46d42b903418eJohann Bool(n3_++), 18411b362b15af34006e6a11974088a46d42b903418eJohann Bool(n4_++)); 18421b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 18431b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 18441b362b15af34006e6a11974088a46d42b903418eJohann} 18451b362b15af34006e6a11974088a46d42b903418eJohann 18461b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED_FORMAT4 where the 18471b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 18481b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT4Test, FunctorOnBuiltInTypeFailure) { 18491b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 18501b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 18511b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT4(PredFormatFunctor4(), 18521b362b15af34006e6a11974088a46d42b903418eJohann n1_++, 18531b362b15af34006e6a11974088a46d42b903418eJohann n2_++, 18541b362b15af34006e6a11974088a46d42b903418eJohann n3_++, 18551b362b15af34006e6a11974088a46d42b903418eJohann n4_++); 18561b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 18571b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 18581b362b15af34006e6a11974088a46d42b903418eJohann} 18591b362b15af34006e6a11974088a46d42b903418eJohann 18601b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED_FORMAT4 where the 18611b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 18621b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT4Test, FunctorOnUserTypeFailure) { 18631b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 18641b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 18651b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT4(PredFormatFunctor4(), 18661b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++), 18671b362b15af34006e6a11974088a46d42b903418eJohann Bool(n2_++), 18681b362b15af34006e6a11974088a46d42b903418eJohann Bool(n3_++), 18691b362b15af34006e6a11974088a46d42b903418eJohann Bool(n4_++)); 18701b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 18711b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 18721b362b15af34006e6a11974088a46d42b903418eJohann} 18731b362b15af34006e6a11974088a46d42b903418eJohann// Sample functions/functors for testing 5-ary predicate assertions. 18741b362b15af34006e6a11974088a46d42b903418eJohann 18751b362b15af34006e6a11974088a46d42b903418eJohann// A 5-ary predicate function. 18761b362b15af34006e6a11974088a46d42b903418eJohanntemplate <typename T1, typename T2, typename T3, typename T4, typename T5> 18771b362b15af34006e6a11974088a46d42b903418eJohannbool PredFunction5(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5) { 18781b362b15af34006e6a11974088a46d42b903418eJohann return v1 + v2 + v3 + v4 + v5 > 0; 18791b362b15af34006e6a11974088a46d42b903418eJohann} 18801b362b15af34006e6a11974088a46d42b903418eJohann 18811b362b15af34006e6a11974088a46d42b903418eJohann// The following two functions are needed to circumvent a bug in 18821b362b15af34006e6a11974088a46d42b903418eJohann// gcc 2.95.3, which sometimes has problem with the above template 18831b362b15af34006e6a11974088a46d42b903418eJohann// function. 18841b362b15af34006e6a11974088a46d42b903418eJohannbool PredFunction5Int(int v1, int v2, int v3, int v4, int v5) { 18851b362b15af34006e6a11974088a46d42b903418eJohann return v1 + v2 + v3 + v4 + v5 > 0; 18861b362b15af34006e6a11974088a46d42b903418eJohann} 18871b362b15af34006e6a11974088a46d42b903418eJohannbool PredFunction5Bool(Bool v1, Bool v2, Bool v3, Bool v4, Bool v5) { 18881b362b15af34006e6a11974088a46d42b903418eJohann return v1 + v2 + v3 + v4 + v5 > 0; 18891b362b15af34006e6a11974088a46d42b903418eJohann} 18901b362b15af34006e6a11974088a46d42b903418eJohann 18911b362b15af34006e6a11974088a46d42b903418eJohann// A 5-ary predicate functor. 18921b362b15af34006e6a11974088a46d42b903418eJohannstruct PredFunctor5 { 18931b362b15af34006e6a11974088a46d42b903418eJohann template <typename T1, typename T2, typename T3, typename T4, typename T5> 18941b362b15af34006e6a11974088a46d42b903418eJohann bool operator()(const T1& v1, 18951b362b15af34006e6a11974088a46d42b903418eJohann const T2& v2, 18961b362b15af34006e6a11974088a46d42b903418eJohann const T3& v3, 18971b362b15af34006e6a11974088a46d42b903418eJohann const T4& v4, 18981b362b15af34006e6a11974088a46d42b903418eJohann const T5& v5) { 18991b362b15af34006e6a11974088a46d42b903418eJohann return v1 + v2 + v3 + v4 + v5 > 0; 19001b362b15af34006e6a11974088a46d42b903418eJohann } 19011b362b15af34006e6a11974088a46d42b903418eJohann}; 19021b362b15af34006e6a11974088a46d42b903418eJohann 19031b362b15af34006e6a11974088a46d42b903418eJohann// A 5-ary predicate-formatter function. 19041b362b15af34006e6a11974088a46d42b903418eJohanntemplate <typename T1, typename T2, typename T3, typename T4, typename T5> 19051b362b15af34006e6a11974088a46d42b903418eJohanntesting::AssertionResult PredFormatFunction5(const char* e1, 19061b362b15af34006e6a11974088a46d42b903418eJohann const char* e2, 19071b362b15af34006e6a11974088a46d42b903418eJohann const char* e3, 19081b362b15af34006e6a11974088a46d42b903418eJohann const char* e4, 19091b362b15af34006e6a11974088a46d42b903418eJohann const char* e5, 19101b362b15af34006e6a11974088a46d42b903418eJohann const T1& v1, 19111b362b15af34006e6a11974088a46d42b903418eJohann const T2& v2, 19121b362b15af34006e6a11974088a46d42b903418eJohann const T3& v3, 19131b362b15af34006e6a11974088a46d42b903418eJohann const T4& v4, 19141b362b15af34006e6a11974088a46d42b903418eJohann const T5& v5) { 19151b362b15af34006e6a11974088a46d42b903418eJohann if (PredFunction5(v1, v2, v3, v4, v5)) 19161b362b15af34006e6a11974088a46d42b903418eJohann return testing::AssertionSuccess(); 19171b362b15af34006e6a11974088a46d42b903418eJohann 19181b362b15af34006e6a11974088a46d42b903418eJohann return testing::AssertionFailure() 19191b362b15af34006e6a11974088a46d42b903418eJohann << e1 << " + " << e2 << " + " << e3 << " + " << e4 << " + " << e5 19201b362b15af34006e6a11974088a46d42b903418eJohann << " is expected to be positive, but evaluates to " 19211b362b15af34006e6a11974088a46d42b903418eJohann << v1 + v2 + v3 + v4 + v5 << "."; 19221b362b15af34006e6a11974088a46d42b903418eJohann} 19231b362b15af34006e6a11974088a46d42b903418eJohann 19241b362b15af34006e6a11974088a46d42b903418eJohann// A 5-ary predicate-formatter functor. 19251b362b15af34006e6a11974088a46d42b903418eJohannstruct PredFormatFunctor5 { 19261b362b15af34006e6a11974088a46d42b903418eJohann template <typename T1, typename T2, typename T3, typename T4, typename T5> 19271b362b15af34006e6a11974088a46d42b903418eJohann testing::AssertionResult operator()(const char* e1, 19281b362b15af34006e6a11974088a46d42b903418eJohann const char* e2, 19291b362b15af34006e6a11974088a46d42b903418eJohann const char* e3, 19301b362b15af34006e6a11974088a46d42b903418eJohann const char* e4, 19311b362b15af34006e6a11974088a46d42b903418eJohann const char* e5, 19321b362b15af34006e6a11974088a46d42b903418eJohann const T1& v1, 19331b362b15af34006e6a11974088a46d42b903418eJohann const T2& v2, 19341b362b15af34006e6a11974088a46d42b903418eJohann const T3& v3, 19351b362b15af34006e6a11974088a46d42b903418eJohann const T4& v4, 19361b362b15af34006e6a11974088a46d42b903418eJohann const T5& v5) const { 19371b362b15af34006e6a11974088a46d42b903418eJohann return PredFormatFunction5(e1, e2, e3, e4, e5, v1, v2, v3, v4, v5); 19381b362b15af34006e6a11974088a46d42b903418eJohann } 19391b362b15af34006e6a11974088a46d42b903418eJohann}; 19401b362b15af34006e6a11974088a46d42b903418eJohann 19411b362b15af34006e6a11974088a46d42b903418eJohann// Tests for {EXPECT|ASSERT}_PRED_FORMAT5. 19421b362b15af34006e6a11974088a46d42b903418eJohann 19431b362b15af34006e6a11974088a46d42b903418eJohannclass Predicate5Test : public testing::Test { 19441b362b15af34006e6a11974088a46d42b903418eJohann protected: 19451b362b15af34006e6a11974088a46d42b903418eJohann virtual void SetUp() { 19461b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = true; 19471b362b15af34006e6a11974088a46d42b903418eJohann finished_ = false; 19481b362b15af34006e6a11974088a46d42b903418eJohann n1_ = n2_ = n3_ = n4_ = n5_ = 0; 19491b362b15af34006e6a11974088a46d42b903418eJohann } 19501b362b15af34006e6a11974088a46d42b903418eJohann 19511b362b15af34006e6a11974088a46d42b903418eJohann virtual void TearDown() { 19521b362b15af34006e6a11974088a46d42b903418eJohann // Verifies that each of the predicate's arguments was evaluated 19531b362b15af34006e6a11974088a46d42b903418eJohann // exactly once. 19541b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_EQ(1, n1_) << 19551b362b15af34006e6a11974088a46d42b903418eJohann "The predicate assertion didn't evaluate argument 2 " 19561b362b15af34006e6a11974088a46d42b903418eJohann "exactly once."; 19571b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_EQ(1, n2_) << 19581b362b15af34006e6a11974088a46d42b903418eJohann "The predicate assertion didn't evaluate argument 3 " 19591b362b15af34006e6a11974088a46d42b903418eJohann "exactly once."; 19601b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_EQ(1, n3_) << 19611b362b15af34006e6a11974088a46d42b903418eJohann "The predicate assertion didn't evaluate argument 4 " 19621b362b15af34006e6a11974088a46d42b903418eJohann "exactly once."; 19631b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_EQ(1, n4_) << 19641b362b15af34006e6a11974088a46d42b903418eJohann "The predicate assertion didn't evaluate argument 5 " 19651b362b15af34006e6a11974088a46d42b903418eJohann "exactly once."; 19661b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_EQ(1, n5_) << 19671b362b15af34006e6a11974088a46d42b903418eJohann "The predicate assertion didn't evaluate argument 6 " 19681b362b15af34006e6a11974088a46d42b903418eJohann "exactly once."; 19691b362b15af34006e6a11974088a46d42b903418eJohann 19701b362b15af34006e6a11974088a46d42b903418eJohann // Verifies that the control flow in the test function is expected. 19711b362b15af34006e6a11974088a46d42b903418eJohann if (expected_to_finish_ && !finished_) { 19721b362b15af34006e6a11974088a46d42b903418eJohann FAIL() << "The predicate assertion unexpactedly aborted the test."; 19731b362b15af34006e6a11974088a46d42b903418eJohann } else if (!expected_to_finish_ && finished_) { 19741b362b15af34006e6a11974088a46d42b903418eJohann FAIL() << "The failed predicate assertion didn't abort the test " 19751b362b15af34006e6a11974088a46d42b903418eJohann "as expected."; 19761b362b15af34006e6a11974088a46d42b903418eJohann } 19771b362b15af34006e6a11974088a46d42b903418eJohann } 19781b362b15af34006e6a11974088a46d42b903418eJohann 19791b362b15af34006e6a11974088a46d42b903418eJohann // true iff the test function is expected to run to finish. 19801b362b15af34006e6a11974088a46d42b903418eJohann static bool expected_to_finish_; 19811b362b15af34006e6a11974088a46d42b903418eJohann 19821b362b15af34006e6a11974088a46d42b903418eJohann // true iff the test function did run to finish. 19831b362b15af34006e6a11974088a46d42b903418eJohann static bool finished_; 19841b362b15af34006e6a11974088a46d42b903418eJohann 19851b362b15af34006e6a11974088a46d42b903418eJohann static int n1_; 19861b362b15af34006e6a11974088a46d42b903418eJohann static int n2_; 19871b362b15af34006e6a11974088a46d42b903418eJohann static int n3_; 19881b362b15af34006e6a11974088a46d42b903418eJohann static int n4_; 19891b362b15af34006e6a11974088a46d42b903418eJohann static int n5_; 19901b362b15af34006e6a11974088a46d42b903418eJohann}; 19911b362b15af34006e6a11974088a46d42b903418eJohann 19921b362b15af34006e6a11974088a46d42b903418eJohannbool Predicate5Test::expected_to_finish_; 19931b362b15af34006e6a11974088a46d42b903418eJohannbool Predicate5Test::finished_; 19941b362b15af34006e6a11974088a46d42b903418eJohannint Predicate5Test::n1_; 19951b362b15af34006e6a11974088a46d42b903418eJohannint Predicate5Test::n2_; 19961b362b15af34006e6a11974088a46d42b903418eJohannint Predicate5Test::n3_; 19971b362b15af34006e6a11974088a46d42b903418eJohannint Predicate5Test::n4_; 19981b362b15af34006e6a11974088a46d42b903418eJohannint Predicate5Test::n5_; 19991b362b15af34006e6a11974088a46d42b903418eJohann 20001b362b15af34006e6a11974088a46d42b903418eJohanntypedef Predicate5Test EXPECT_PRED_FORMAT5Test; 20011b362b15af34006e6a11974088a46d42b903418eJohanntypedef Predicate5Test ASSERT_PRED_FORMAT5Test; 20021b362b15af34006e6a11974088a46d42b903418eJohanntypedef Predicate5Test EXPECT_PRED5Test; 20031b362b15af34006e6a11974088a46d42b903418eJohanntypedef Predicate5Test ASSERT_PRED5Test; 20041b362b15af34006e6a11974088a46d42b903418eJohann 20051b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED5 where the 20061b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 20071b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED5Test, FunctionOnBuiltInTypeSuccess) { 20081b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED5(PredFunction5Int, 20091b362b15af34006e6a11974088a46d42b903418eJohann ++n1_, 20101b362b15af34006e6a11974088a46d42b903418eJohann ++n2_, 20111b362b15af34006e6a11974088a46d42b903418eJohann ++n3_, 20121b362b15af34006e6a11974088a46d42b903418eJohann ++n4_, 20131b362b15af34006e6a11974088a46d42b903418eJohann ++n5_); 20141b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 20151b362b15af34006e6a11974088a46d42b903418eJohann} 20161b362b15af34006e6a11974088a46d42b903418eJohann 20171b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED5 where the 20181b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 20191b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED5Test, FunctionOnUserTypeSuccess) { 20201b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED5(PredFunction5Bool, 20211b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_), 20221b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n2_), 20231b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n3_), 20241b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n4_), 20251b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n5_)); 20261b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 20271b362b15af34006e6a11974088a46d42b903418eJohann} 20281b362b15af34006e6a11974088a46d42b903418eJohann 20291b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED5 where the 20301b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 20311b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED5Test, FunctorOnBuiltInTypeSuccess) { 20321b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED5(PredFunctor5(), 20331b362b15af34006e6a11974088a46d42b903418eJohann ++n1_, 20341b362b15af34006e6a11974088a46d42b903418eJohann ++n2_, 20351b362b15af34006e6a11974088a46d42b903418eJohann ++n3_, 20361b362b15af34006e6a11974088a46d42b903418eJohann ++n4_, 20371b362b15af34006e6a11974088a46d42b903418eJohann ++n5_); 20381b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 20391b362b15af34006e6a11974088a46d42b903418eJohann} 20401b362b15af34006e6a11974088a46d42b903418eJohann 20411b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED5 where the 20421b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 20431b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED5Test, FunctorOnUserTypeSuccess) { 20441b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED5(PredFunctor5(), 20451b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_), 20461b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n2_), 20471b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n3_), 20481b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n4_), 20491b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n5_)); 20501b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 20511b362b15af34006e6a11974088a46d42b903418eJohann} 20521b362b15af34006e6a11974088a46d42b903418eJohann 20531b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED5 where the 20541b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 20551b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED5Test, FunctionOnBuiltInTypeFailure) { 20561b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 20571b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED5(PredFunction5Int, 20581b362b15af34006e6a11974088a46d42b903418eJohann n1_++, 20591b362b15af34006e6a11974088a46d42b903418eJohann n2_++, 20601b362b15af34006e6a11974088a46d42b903418eJohann n3_++, 20611b362b15af34006e6a11974088a46d42b903418eJohann n4_++, 20621b362b15af34006e6a11974088a46d42b903418eJohann n5_++); 20631b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 20641b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 20651b362b15af34006e6a11974088a46d42b903418eJohann} 20661b362b15af34006e6a11974088a46d42b903418eJohann 20671b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED5 where the 20681b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 20691b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED5Test, FunctionOnUserTypeFailure) { 20701b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 20711b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED5(PredFunction5Bool, 20721b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++), 20731b362b15af34006e6a11974088a46d42b903418eJohann Bool(n2_++), 20741b362b15af34006e6a11974088a46d42b903418eJohann Bool(n3_++), 20751b362b15af34006e6a11974088a46d42b903418eJohann Bool(n4_++), 20761b362b15af34006e6a11974088a46d42b903418eJohann Bool(n5_++)); 20771b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 20781b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 20791b362b15af34006e6a11974088a46d42b903418eJohann} 20801b362b15af34006e6a11974088a46d42b903418eJohann 20811b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED5 where the 20821b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 20831b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED5Test, FunctorOnBuiltInTypeFailure) { 20841b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 20851b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED5(PredFunctor5(), 20861b362b15af34006e6a11974088a46d42b903418eJohann n1_++, 20871b362b15af34006e6a11974088a46d42b903418eJohann n2_++, 20881b362b15af34006e6a11974088a46d42b903418eJohann n3_++, 20891b362b15af34006e6a11974088a46d42b903418eJohann n4_++, 20901b362b15af34006e6a11974088a46d42b903418eJohann n5_++); 20911b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 20921b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 20931b362b15af34006e6a11974088a46d42b903418eJohann} 20941b362b15af34006e6a11974088a46d42b903418eJohann 20951b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED5 where the 20961b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 20971b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED5Test, FunctorOnUserTypeFailure) { 20981b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 20991b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED5(PredFunctor5(), 21001b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++), 21011b362b15af34006e6a11974088a46d42b903418eJohann Bool(n2_++), 21021b362b15af34006e6a11974088a46d42b903418eJohann Bool(n3_++), 21031b362b15af34006e6a11974088a46d42b903418eJohann Bool(n4_++), 21041b362b15af34006e6a11974088a46d42b903418eJohann Bool(n5_++)); 21051b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 21061b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 21071b362b15af34006e6a11974088a46d42b903418eJohann} 21081b362b15af34006e6a11974088a46d42b903418eJohann 21091b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED5 where the 21101b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 21111b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED5Test, FunctionOnBuiltInTypeSuccess) { 21121b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED5(PredFunction5Int, 21131b362b15af34006e6a11974088a46d42b903418eJohann ++n1_, 21141b362b15af34006e6a11974088a46d42b903418eJohann ++n2_, 21151b362b15af34006e6a11974088a46d42b903418eJohann ++n3_, 21161b362b15af34006e6a11974088a46d42b903418eJohann ++n4_, 21171b362b15af34006e6a11974088a46d42b903418eJohann ++n5_); 21181b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 21191b362b15af34006e6a11974088a46d42b903418eJohann} 21201b362b15af34006e6a11974088a46d42b903418eJohann 21211b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED5 where the 21221b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 21231b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED5Test, FunctionOnUserTypeSuccess) { 21241b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED5(PredFunction5Bool, 21251b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_), 21261b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n2_), 21271b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n3_), 21281b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n4_), 21291b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n5_)); 21301b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 21311b362b15af34006e6a11974088a46d42b903418eJohann} 21321b362b15af34006e6a11974088a46d42b903418eJohann 21331b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED5 where the 21341b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 21351b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED5Test, FunctorOnBuiltInTypeSuccess) { 21361b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED5(PredFunctor5(), 21371b362b15af34006e6a11974088a46d42b903418eJohann ++n1_, 21381b362b15af34006e6a11974088a46d42b903418eJohann ++n2_, 21391b362b15af34006e6a11974088a46d42b903418eJohann ++n3_, 21401b362b15af34006e6a11974088a46d42b903418eJohann ++n4_, 21411b362b15af34006e6a11974088a46d42b903418eJohann ++n5_); 21421b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 21431b362b15af34006e6a11974088a46d42b903418eJohann} 21441b362b15af34006e6a11974088a46d42b903418eJohann 21451b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED5 where the 21461b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 21471b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED5Test, FunctorOnUserTypeSuccess) { 21481b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED5(PredFunctor5(), 21491b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_), 21501b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n2_), 21511b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n3_), 21521b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n4_), 21531b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n5_)); 21541b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 21551b362b15af34006e6a11974088a46d42b903418eJohann} 21561b362b15af34006e6a11974088a46d42b903418eJohann 21571b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED5 where the 21581b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 21591b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED5Test, FunctionOnBuiltInTypeFailure) { 21601b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 21611b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 21621b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED5(PredFunction5Int, 21631b362b15af34006e6a11974088a46d42b903418eJohann n1_++, 21641b362b15af34006e6a11974088a46d42b903418eJohann n2_++, 21651b362b15af34006e6a11974088a46d42b903418eJohann n3_++, 21661b362b15af34006e6a11974088a46d42b903418eJohann n4_++, 21671b362b15af34006e6a11974088a46d42b903418eJohann n5_++); 21681b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 21691b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 21701b362b15af34006e6a11974088a46d42b903418eJohann} 21711b362b15af34006e6a11974088a46d42b903418eJohann 21721b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED5 where the 21731b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 21741b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED5Test, FunctionOnUserTypeFailure) { 21751b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 21761b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 21771b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED5(PredFunction5Bool, 21781b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++), 21791b362b15af34006e6a11974088a46d42b903418eJohann Bool(n2_++), 21801b362b15af34006e6a11974088a46d42b903418eJohann Bool(n3_++), 21811b362b15af34006e6a11974088a46d42b903418eJohann Bool(n4_++), 21821b362b15af34006e6a11974088a46d42b903418eJohann Bool(n5_++)); 21831b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 21841b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 21851b362b15af34006e6a11974088a46d42b903418eJohann} 21861b362b15af34006e6a11974088a46d42b903418eJohann 21871b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED5 where the 21881b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 21891b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED5Test, FunctorOnBuiltInTypeFailure) { 21901b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 21911b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 21921b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED5(PredFunctor5(), 21931b362b15af34006e6a11974088a46d42b903418eJohann n1_++, 21941b362b15af34006e6a11974088a46d42b903418eJohann n2_++, 21951b362b15af34006e6a11974088a46d42b903418eJohann n3_++, 21961b362b15af34006e6a11974088a46d42b903418eJohann n4_++, 21971b362b15af34006e6a11974088a46d42b903418eJohann n5_++); 21981b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 21991b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 22001b362b15af34006e6a11974088a46d42b903418eJohann} 22011b362b15af34006e6a11974088a46d42b903418eJohann 22021b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED5 where the 22031b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 22041b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED5Test, FunctorOnUserTypeFailure) { 22051b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 22061b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 22071b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED5(PredFunctor5(), 22081b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++), 22091b362b15af34006e6a11974088a46d42b903418eJohann Bool(n2_++), 22101b362b15af34006e6a11974088a46d42b903418eJohann Bool(n3_++), 22111b362b15af34006e6a11974088a46d42b903418eJohann Bool(n4_++), 22121b362b15af34006e6a11974088a46d42b903418eJohann Bool(n5_++)); 22131b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 22141b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 22151b362b15af34006e6a11974088a46d42b903418eJohann} 22161b362b15af34006e6a11974088a46d42b903418eJohann 22171b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED_FORMAT5 where the 22181b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 22191b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT5Test, FunctionOnBuiltInTypeSuccess) { 22201b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT5(PredFormatFunction5, 22211b362b15af34006e6a11974088a46d42b903418eJohann ++n1_, 22221b362b15af34006e6a11974088a46d42b903418eJohann ++n2_, 22231b362b15af34006e6a11974088a46d42b903418eJohann ++n3_, 22241b362b15af34006e6a11974088a46d42b903418eJohann ++n4_, 22251b362b15af34006e6a11974088a46d42b903418eJohann ++n5_); 22261b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 22271b362b15af34006e6a11974088a46d42b903418eJohann} 22281b362b15af34006e6a11974088a46d42b903418eJohann 22291b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED_FORMAT5 where the 22301b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 22311b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT5Test, FunctionOnUserTypeSuccess) { 22321b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT5(PredFormatFunction5, 22331b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_), 22341b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n2_), 22351b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n3_), 22361b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n4_), 22371b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n5_)); 22381b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 22391b362b15af34006e6a11974088a46d42b903418eJohann} 22401b362b15af34006e6a11974088a46d42b903418eJohann 22411b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED_FORMAT5 where the 22421b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 22431b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT5Test, FunctorOnBuiltInTypeSuccess) { 22441b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT5(PredFormatFunctor5(), 22451b362b15af34006e6a11974088a46d42b903418eJohann ++n1_, 22461b362b15af34006e6a11974088a46d42b903418eJohann ++n2_, 22471b362b15af34006e6a11974088a46d42b903418eJohann ++n3_, 22481b362b15af34006e6a11974088a46d42b903418eJohann ++n4_, 22491b362b15af34006e6a11974088a46d42b903418eJohann ++n5_); 22501b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 22511b362b15af34006e6a11974088a46d42b903418eJohann} 22521b362b15af34006e6a11974088a46d42b903418eJohann 22531b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful EXPECT_PRED_FORMAT5 where the 22541b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 22551b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT5Test, FunctorOnUserTypeSuccess) { 22561b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT5(PredFormatFunctor5(), 22571b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_), 22581b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n2_), 22591b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n3_), 22601b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n4_), 22611b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n5_)); 22621b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 22631b362b15af34006e6a11974088a46d42b903418eJohann} 22641b362b15af34006e6a11974088a46d42b903418eJohann 22651b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED_FORMAT5 where the 22661b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 22671b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT5Test, FunctionOnBuiltInTypeFailure) { 22681b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 22691b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT5(PredFormatFunction5, 22701b362b15af34006e6a11974088a46d42b903418eJohann n1_++, 22711b362b15af34006e6a11974088a46d42b903418eJohann n2_++, 22721b362b15af34006e6a11974088a46d42b903418eJohann n3_++, 22731b362b15af34006e6a11974088a46d42b903418eJohann n4_++, 22741b362b15af34006e6a11974088a46d42b903418eJohann n5_++); 22751b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 22761b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 22771b362b15af34006e6a11974088a46d42b903418eJohann} 22781b362b15af34006e6a11974088a46d42b903418eJohann 22791b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED_FORMAT5 where the 22801b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 22811b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT5Test, FunctionOnUserTypeFailure) { 22821b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 22831b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT5(PredFormatFunction5, 22841b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++), 22851b362b15af34006e6a11974088a46d42b903418eJohann Bool(n2_++), 22861b362b15af34006e6a11974088a46d42b903418eJohann Bool(n3_++), 22871b362b15af34006e6a11974088a46d42b903418eJohann Bool(n4_++), 22881b362b15af34006e6a11974088a46d42b903418eJohann Bool(n5_++)); 22891b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 22901b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 22911b362b15af34006e6a11974088a46d42b903418eJohann} 22921b362b15af34006e6a11974088a46d42b903418eJohann 22931b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED_FORMAT5 where the 22941b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 22951b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT5Test, FunctorOnBuiltInTypeFailure) { 22961b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 22971b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT5(PredFormatFunctor5(), 22981b362b15af34006e6a11974088a46d42b903418eJohann n1_++, 22991b362b15af34006e6a11974088a46d42b903418eJohann n2_++, 23001b362b15af34006e6a11974088a46d42b903418eJohann n3_++, 23011b362b15af34006e6a11974088a46d42b903418eJohann n4_++, 23021b362b15af34006e6a11974088a46d42b903418eJohann n5_++); 23031b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 23041b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 23051b362b15af34006e6a11974088a46d42b903418eJohann} 23061b362b15af34006e6a11974088a46d42b903418eJohann 23071b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed EXPECT_PRED_FORMAT5 where the 23081b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 23091b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(EXPECT_PRED_FORMAT5Test, FunctorOnUserTypeFailure) { 23101b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_NONFATAL_FAILURE({ // NOLINT 23111b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_PRED_FORMAT5(PredFormatFunctor5(), 23121b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++), 23131b362b15af34006e6a11974088a46d42b903418eJohann Bool(n2_++), 23141b362b15af34006e6a11974088a46d42b903418eJohann Bool(n3_++), 23151b362b15af34006e6a11974088a46d42b903418eJohann Bool(n4_++), 23161b362b15af34006e6a11974088a46d42b903418eJohann Bool(n5_++)); 23171b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 23181b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 23191b362b15af34006e6a11974088a46d42b903418eJohann} 23201b362b15af34006e6a11974088a46d42b903418eJohann 23211b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED_FORMAT5 where the 23221b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 23231b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT5Test, FunctionOnBuiltInTypeSuccess) { 23241b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT5(PredFormatFunction5, 23251b362b15af34006e6a11974088a46d42b903418eJohann ++n1_, 23261b362b15af34006e6a11974088a46d42b903418eJohann ++n2_, 23271b362b15af34006e6a11974088a46d42b903418eJohann ++n3_, 23281b362b15af34006e6a11974088a46d42b903418eJohann ++n4_, 23291b362b15af34006e6a11974088a46d42b903418eJohann ++n5_); 23301b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 23311b362b15af34006e6a11974088a46d42b903418eJohann} 23321b362b15af34006e6a11974088a46d42b903418eJohann 23331b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED_FORMAT5 where the 23341b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 23351b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT5Test, FunctionOnUserTypeSuccess) { 23361b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT5(PredFormatFunction5, 23371b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_), 23381b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n2_), 23391b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n3_), 23401b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n4_), 23411b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n5_)); 23421b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 23431b362b15af34006e6a11974088a46d42b903418eJohann} 23441b362b15af34006e6a11974088a46d42b903418eJohann 23451b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED_FORMAT5 where the 23461b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 23471b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT5Test, FunctorOnBuiltInTypeSuccess) { 23481b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT5(PredFormatFunctor5(), 23491b362b15af34006e6a11974088a46d42b903418eJohann ++n1_, 23501b362b15af34006e6a11974088a46d42b903418eJohann ++n2_, 23511b362b15af34006e6a11974088a46d42b903418eJohann ++n3_, 23521b362b15af34006e6a11974088a46d42b903418eJohann ++n4_, 23531b362b15af34006e6a11974088a46d42b903418eJohann ++n5_); 23541b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 23551b362b15af34006e6a11974088a46d42b903418eJohann} 23561b362b15af34006e6a11974088a46d42b903418eJohann 23571b362b15af34006e6a11974088a46d42b903418eJohann// Tests a successful ASSERT_PRED_FORMAT5 where the 23581b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 23591b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT5Test, FunctorOnUserTypeSuccess) { 23601b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT5(PredFormatFunctor5(), 23611b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n1_), 23621b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n2_), 23631b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n3_), 23641b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n4_), 23651b362b15af34006e6a11974088a46d42b903418eJohann Bool(++n5_)); 23661b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 23671b362b15af34006e6a11974088a46d42b903418eJohann} 23681b362b15af34006e6a11974088a46d42b903418eJohann 23691b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED_FORMAT5 where the 23701b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a built-in type (int). 23711b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT5Test, FunctionOnBuiltInTypeFailure) { 23721b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 23731b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 23741b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT5(PredFormatFunction5, 23751b362b15af34006e6a11974088a46d42b903418eJohann n1_++, 23761b362b15af34006e6a11974088a46d42b903418eJohann n2_++, 23771b362b15af34006e6a11974088a46d42b903418eJohann n3_++, 23781b362b15af34006e6a11974088a46d42b903418eJohann n4_++, 23791b362b15af34006e6a11974088a46d42b903418eJohann n5_++); 23801b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 23811b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 23821b362b15af34006e6a11974088a46d42b903418eJohann} 23831b362b15af34006e6a11974088a46d42b903418eJohann 23841b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED_FORMAT5 where the 23851b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a function on a user-defined type (Bool). 23861b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT5Test, FunctionOnUserTypeFailure) { 23871b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 23881b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 23891b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT5(PredFormatFunction5, 23901b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++), 23911b362b15af34006e6a11974088a46d42b903418eJohann Bool(n2_++), 23921b362b15af34006e6a11974088a46d42b903418eJohann Bool(n3_++), 23931b362b15af34006e6a11974088a46d42b903418eJohann Bool(n4_++), 23941b362b15af34006e6a11974088a46d42b903418eJohann Bool(n5_++)); 23951b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 23961b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 23971b362b15af34006e6a11974088a46d42b903418eJohann} 23981b362b15af34006e6a11974088a46d42b903418eJohann 23991b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED_FORMAT5 where the 24001b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a built-in type (int). 24011b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT5Test, FunctorOnBuiltInTypeFailure) { 24021b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 24031b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 24041b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT5(PredFormatFunctor5(), 24051b362b15af34006e6a11974088a46d42b903418eJohann n1_++, 24061b362b15af34006e6a11974088a46d42b903418eJohann n2_++, 24071b362b15af34006e6a11974088a46d42b903418eJohann n3_++, 24081b362b15af34006e6a11974088a46d42b903418eJohann n4_++, 24091b362b15af34006e6a11974088a46d42b903418eJohann n5_++); 24101b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 24111b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 24121b362b15af34006e6a11974088a46d42b903418eJohann} 24131b362b15af34006e6a11974088a46d42b903418eJohann 24141b362b15af34006e6a11974088a46d42b903418eJohann// Tests a failed ASSERT_PRED_FORMAT5 where the 24151b362b15af34006e6a11974088a46d42b903418eJohann// predicate-formatter is a functor on a user-defined type (Bool). 24161b362b15af34006e6a11974088a46d42b903418eJohannTEST_F(ASSERT_PRED_FORMAT5Test, FunctorOnUserTypeFailure) { 24171b362b15af34006e6a11974088a46d42b903418eJohann expected_to_finish_ = false; 24181b362b15af34006e6a11974088a46d42b903418eJohann EXPECT_FATAL_FAILURE({ // NOLINT 24191b362b15af34006e6a11974088a46d42b903418eJohann ASSERT_PRED_FORMAT5(PredFormatFunctor5(), 24201b362b15af34006e6a11974088a46d42b903418eJohann Bool(n1_++), 24211b362b15af34006e6a11974088a46d42b903418eJohann Bool(n2_++), 24221b362b15af34006e6a11974088a46d42b903418eJohann Bool(n3_++), 24231b362b15af34006e6a11974088a46d42b903418eJohann Bool(n4_++), 24241b362b15af34006e6a11974088a46d42b903418eJohann Bool(n5_++)); 24251b362b15af34006e6a11974088a46d42b903418eJohann finished_ = true; 24261b362b15af34006e6a11974088a46d42b903418eJohann }, ""); 24271b362b15af34006e6a11974088a46d42b903418eJohann} 2428