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