113481Sgiacomo.travaglini@arm.com// Copyright 2006, Google Inc. 213481Sgiacomo.travaglini@arm.com// All rights reserved. 313481Sgiacomo.travaglini@arm.com// 413481Sgiacomo.travaglini@arm.com// Redistribution and use in source and binary forms, with or without 513481Sgiacomo.travaglini@arm.com// modification, are permitted provided that the following conditions are 613481Sgiacomo.travaglini@arm.com// met: 713481Sgiacomo.travaglini@arm.com// 813481Sgiacomo.travaglini@arm.com// * Redistributions of source code must retain the above copyright 913481Sgiacomo.travaglini@arm.com// notice, this list of conditions and the following disclaimer. 1013481Sgiacomo.travaglini@arm.com// * Redistributions in binary form must reproduce the above 1113481Sgiacomo.travaglini@arm.com// copyright notice, this list of conditions and the following disclaimer 1213481Sgiacomo.travaglini@arm.com// in the documentation and/or other materials provided with the 1313481Sgiacomo.travaglini@arm.com// distribution. 1413481Sgiacomo.travaglini@arm.com// * Neither the name of Google Inc. nor the names of its 1513481Sgiacomo.travaglini@arm.com// contributors may be used to endorse or promote products derived from 1613481Sgiacomo.travaglini@arm.com// this software without specific prior written permission. 1713481Sgiacomo.travaglini@arm.com// 1813481Sgiacomo.travaglini@arm.com// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1913481Sgiacomo.travaglini@arm.com// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 2013481Sgiacomo.travaglini@arm.com// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 2113481Sgiacomo.travaglini@arm.com// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2213481Sgiacomo.travaglini@arm.com// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2313481Sgiacomo.travaglini@arm.com// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2413481Sgiacomo.travaglini@arm.com// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2513481Sgiacomo.travaglini@arm.com// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2613481Sgiacomo.travaglini@arm.com// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2713481Sgiacomo.travaglini@arm.com// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2813481Sgiacomo.travaglini@arm.com// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2913481Sgiacomo.travaglini@arm.com 3013481Sgiacomo.travaglini@arm.com// This file is AUTOMATICALLY GENERATED on 10/31/2011 by command 3113481Sgiacomo.travaglini@arm.com// 'gen_gtest_pred_impl.py 5'. DO NOT EDIT BY HAND! 3213481Sgiacomo.travaglini@arm.com 3313481Sgiacomo.travaglini@arm.com// Regression test for gtest_pred_impl.h 3413481Sgiacomo.travaglini@arm.com// 3513481Sgiacomo.travaglini@arm.com// This file is generated by a script and quite long. If you intend to 3613481Sgiacomo.travaglini@arm.com// learn how Google Test works by reading its unit tests, read 3713481Sgiacomo.travaglini@arm.com// gtest_unittest.cc instead. 3813481Sgiacomo.travaglini@arm.com// 3913481Sgiacomo.travaglini@arm.com// This is intended as a regression test for the Google Test predicate 4013481Sgiacomo.travaglini@arm.com// assertions. We compile it as part of the gtest_unittest target 4113481Sgiacomo.travaglini@arm.com// only to keep the implementation tidy and compact, as it is quite 4213481Sgiacomo.travaglini@arm.com// involved to set up the stage for testing Google Test using Google 4313481Sgiacomo.travaglini@arm.com// Test itself. 4413481Sgiacomo.travaglini@arm.com// 4513481Sgiacomo.travaglini@arm.com// Currently, gtest_unittest takes ~11 seconds to run in the testing 4613481Sgiacomo.travaglini@arm.com// daemon. In the future, if it grows too large and needs much more 4713481Sgiacomo.travaglini@arm.com// time to finish, we should consider separating this file into a 4813481Sgiacomo.travaglini@arm.com// stand-alone regression test. 4913481Sgiacomo.travaglini@arm.com 5013481Sgiacomo.travaglini@arm.com#include <iostream> 5113481Sgiacomo.travaglini@arm.com 5213481Sgiacomo.travaglini@arm.com#include "gtest/gtest.h" 5313481Sgiacomo.travaglini@arm.com#include "gtest/gtest-spi.h" 5413481Sgiacomo.travaglini@arm.com 5513481Sgiacomo.travaglini@arm.com// A user-defined data type. 5613481Sgiacomo.travaglini@arm.comstruct Bool { 5713481Sgiacomo.travaglini@arm.com explicit Bool(int val) : value(val != 0) {} 5813481Sgiacomo.travaglini@arm.com 5913481Sgiacomo.travaglini@arm.com bool operator>(int n) const { return value > Bool(n).value; } 6013481Sgiacomo.travaglini@arm.com 6113481Sgiacomo.travaglini@arm.com Bool operator+(const Bool& rhs) const { return Bool(value + rhs.value); } 6213481Sgiacomo.travaglini@arm.com 6313481Sgiacomo.travaglini@arm.com bool operator==(const Bool& rhs) const { return value == rhs.value; } 6413481Sgiacomo.travaglini@arm.com 6513481Sgiacomo.travaglini@arm.com bool value; 6613481Sgiacomo.travaglini@arm.com}; 6713481Sgiacomo.travaglini@arm.com 6813481Sgiacomo.travaglini@arm.com// Enables Bool to be used in assertions. 6913481Sgiacomo.travaglini@arm.comstd::ostream& operator<<(std::ostream& os, const Bool& x) { 7013481Sgiacomo.travaglini@arm.com return os << (x.value ? "true" : "false"); 7113481Sgiacomo.travaglini@arm.com} 7213481Sgiacomo.travaglini@arm.com 7313481Sgiacomo.travaglini@arm.com// Sample functions/functors for testing unary predicate assertions. 7413481Sgiacomo.travaglini@arm.com 7513481Sgiacomo.travaglini@arm.com// A unary predicate function. 7613481Sgiacomo.travaglini@arm.comtemplate <typename T1> 7713481Sgiacomo.travaglini@arm.combool PredFunction1(T1 v1) { 7813481Sgiacomo.travaglini@arm.com return v1 > 0; 7913481Sgiacomo.travaglini@arm.com} 8013481Sgiacomo.travaglini@arm.com 8113481Sgiacomo.travaglini@arm.com// The following two functions are needed to circumvent a bug in 8213481Sgiacomo.travaglini@arm.com// gcc 2.95.3, which sometimes has problem with the above template 8313481Sgiacomo.travaglini@arm.com// function. 8413481Sgiacomo.travaglini@arm.combool PredFunction1Int(int v1) { 8513481Sgiacomo.travaglini@arm.com return v1 > 0; 8613481Sgiacomo.travaglini@arm.com} 8713481Sgiacomo.travaglini@arm.combool PredFunction1Bool(Bool v1) { 8813481Sgiacomo.travaglini@arm.com return v1 > 0; 8913481Sgiacomo.travaglini@arm.com} 9013481Sgiacomo.travaglini@arm.com 9113481Sgiacomo.travaglini@arm.com// A unary predicate functor. 9213481Sgiacomo.travaglini@arm.comstruct PredFunctor1 { 9313481Sgiacomo.travaglini@arm.com template <typename T1> 9413481Sgiacomo.travaglini@arm.com bool operator()(const T1& v1) { 9513481Sgiacomo.travaglini@arm.com return v1 > 0; 9613481Sgiacomo.travaglini@arm.com } 9713481Sgiacomo.travaglini@arm.com}; 9813481Sgiacomo.travaglini@arm.com 9913481Sgiacomo.travaglini@arm.com// A unary predicate-formatter function. 10013481Sgiacomo.travaglini@arm.comtemplate <typename T1> 10113481Sgiacomo.travaglini@arm.comtesting::AssertionResult PredFormatFunction1(const char* e1, 10213481Sgiacomo.travaglini@arm.com const T1& v1) { 10313481Sgiacomo.travaglini@arm.com if (PredFunction1(v1)) 10413481Sgiacomo.travaglini@arm.com return testing::AssertionSuccess(); 10513481Sgiacomo.travaglini@arm.com 10613481Sgiacomo.travaglini@arm.com return testing::AssertionFailure() 10713481Sgiacomo.travaglini@arm.com << e1 10813481Sgiacomo.travaglini@arm.com << " is expected to be positive, but evaluates to " 10913481Sgiacomo.travaglini@arm.com << v1 << "."; 11013481Sgiacomo.travaglini@arm.com} 11113481Sgiacomo.travaglini@arm.com 11213481Sgiacomo.travaglini@arm.com// A unary predicate-formatter functor. 11313481Sgiacomo.travaglini@arm.comstruct PredFormatFunctor1 { 11413481Sgiacomo.travaglini@arm.com template <typename T1> 11513481Sgiacomo.travaglini@arm.com testing::AssertionResult operator()(const char* e1, 11613481Sgiacomo.travaglini@arm.com const T1& v1) const { 11713481Sgiacomo.travaglini@arm.com return PredFormatFunction1(e1, v1); 11813481Sgiacomo.travaglini@arm.com } 11913481Sgiacomo.travaglini@arm.com}; 12013481Sgiacomo.travaglini@arm.com 12113481Sgiacomo.travaglini@arm.com// Tests for {EXPECT|ASSERT}_PRED_FORMAT1. 12213481Sgiacomo.travaglini@arm.com 12313481Sgiacomo.travaglini@arm.comclass Predicate1Test : public testing::Test { 12413481Sgiacomo.travaglini@arm.com protected: 12513481Sgiacomo.travaglini@arm.com virtual void SetUp() { 12613481Sgiacomo.travaglini@arm.com expected_to_finish_ = true; 12713481Sgiacomo.travaglini@arm.com finished_ = false; 12813481Sgiacomo.travaglini@arm.com n1_ = 0; 12913481Sgiacomo.travaglini@arm.com } 13013481Sgiacomo.travaglini@arm.com 13113481Sgiacomo.travaglini@arm.com virtual void TearDown() { 13213481Sgiacomo.travaglini@arm.com // Verifies that each of the predicate's arguments was evaluated 13313481Sgiacomo.travaglini@arm.com // exactly once. 13413481Sgiacomo.travaglini@arm.com EXPECT_EQ(1, n1_) << 13513481Sgiacomo.travaglini@arm.com "The predicate assertion didn't evaluate argument 2 " 13613481Sgiacomo.travaglini@arm.com "exactly once."; 13713481Sgiacomo.travaglini@arm.com 13813481Sgiacomo.travaglini@arm.com // Verifies that the control flow in the test function is expected. 13913481Sgiacomo.travaglini@arm.com if (expected_to_finish_ && !finished_) { 14013481Sgiacomo.travaglini@arm.com FAIL() << "The predicate assertion unexpactedly aborted the test."; 14113481Sgiacomo.travaglini@arm.com } else if (!expected_to_finish_ && finished_) { 14213481Sgiacomo.travaglini@arm.com FAIL() << "The failed predicate assertion didn't abort the test " 14313481Sgiacomo.travaglini@arm.com "as expected."; 14413481Sgiacomo.travaglini@arm.com } 14513481Sgiacomo.travaglini@arm.com } 14613481Sgiacomo.travaglini@arm.com 14713481Sgiacomo.travaglini@arm.com // true iff the test function is expected to run to finish. 14813481Sgiacomo.travaglini@arm.com static bool expected_to_finish_; 14913481Sgiacomo.travaglini@arm.com 15013481Sgiacomo.travaglini@arm.com // true iff the test function did run to finish. 15113481Sgiacomo.travaglini@arm.com static bool finished_; 15213481Sgiacomo.travaglini@arm.com 15313481Sgiacomo.travaglini@arm.com static int n1_; 15413481Sgiacomo.travaglini@arm.com}; 15513481Sgiacomo.travaglini@arm.com 15613481Sgiacomo.travaglini@arm.combool Predicate1Test::expected_to_finish_; 15713481Sgiacomo.travaglini@arm.combool Predicate1Test::finished_; 15813481Sgiacomo.travaglini@arm.comint Predicate1Test::n1_; 15913481Sgiacomo.travaglini@arm.com 16013481Sgiacomo.travaglini@arm.comtypedef Predicate1Test EXPECT_PRED_FORMAT1Test; 16113481Sgiacomo.travaglini@arm.comtypedef Predicate1Test ASSERT_PRED_FORMAT1Test; 16213481Sgiacomo.travaglini@arm.comtypedef Predicate1Test EXPECT_PRED1Test; 16313481Sgiacomo.travaglini@arm.comtypedef Predicate1Test ASSERT_PRED1Test; 16413481Sgiacomo.travaglini@arm.com 16513481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED1 where the 16613481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 16713481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED1Test, FunctionOnBuiltInTypeSuccess) { 16813481Sgiacomo.travaglini@arm.com EXPECT_PRED1(PredFunction1Int, 16913481Sgiacomo.travaglini@arm.com ++n1_); 17013481Sgiacomo.travaglini@arm.com finished_ = true; 17113481Sgiacomo.travaglini@arm.com} 17213481Sgiacomo.travaglini@arm.com 17313481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED1 where the 17413481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 17513481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED1Test, FunctionOnUserTypeSuccess) { 17613481Sgiacomo.travaglini@arm.com EXPECT_PRED1(PredFunction1Bool, 17713481Sgiacomo.travaglini@arm.com Bool(++n1_)); 17813481Sgiacomo.travaglini@arm.com finished_ = true; 17913481Sgiacomo.travaglini@arm.com} 18013481Sgiacomo.travaglini@arm.com 18113481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED1 where the 18213481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 18313481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED1Test, FunctorOnBuiltInTypeSuccess) { 18413481Sgiacomo.travaglini@arm.com EXPECT_PRED1(PredFunctor1(), 18513481Sgiacomo.travaglini@arm.com ++n1_); 18613481Sgiacomo.travaglini@arm.com finished_ = true; 18713481Sgiacomo.travaglini@arm.com} 18813481Sgiacomo.travaglini@arm.com 18913481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED1 where the 19013481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 19113481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED1Test, FunctorOnUserTypeSuccess) { 19213481Sgiacomo.travaglini@arm.com EXPECT_PRED1(PredFunctor1(), 19313481Sgiacomo.travaglini@arm.com Bool(++n1_)); 19413481Sgiacomo.travaglini@arm.com finished_ = true; 19513481Sgiacomo.travaglini@arm.com} 19613481Sgiacomo.travaglini@arm.com 19713481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED1 where the 19813481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 19913481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED1Test, FunctionOnBuiltInTypeFailure) { 20013481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 20113481Sgiacomo.travaglini@arm.com EXPECT_PRED1(PredFunction1Int, 20213481Sgiacomo.travaglini@arm.com n1_++); 20313481Sgiacomo.travaglini@arm.com finished_ = true; 20413481Sgiacomo.travaglini@arm.com }, ""); 20513481Sgiacomo.travaglini@arm.com} 20613481Sgiacomo.travaglini@arm.com 20713481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED1 where the 20813481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 20913481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED1Test, FunctionOnUserTypeFailure) { 21013481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 21113481Sgiacomo.travaglini@arm.com EXPECT_PRED1(PredFunction1Bool, 21213481Sgiacomo.travaglini@arm.com Bool(n1_++)); 21313481Sgiacomo.travaglini@arm.com finished_ = true; 21413481Sgiacomo.travaglini@arm.com }, ""); 21513481Sgiacomo.travaglini@arm.com} 21613481Sgiacomo.travaglini@arm.com 21713481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED1 where the 21813481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 21913481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED1Test, FunctorOnBuiltInTypeFailure) { 22013481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 22113481Sgiacomo.travaglini@arm.com EXPECT_PRED1(PredFunctor1(), 22213481Sgiacomo.travaglini@arm.com n1_++); 22313481Sgiacomo.travaglini@arm.com finished_ = true; 22413481Sgiacomo.travaglini@arm.com }, ""); 22513481Sgiacomo.travaglini@arm.com} 22613481Sgiacomo.travaglini@arm.com 22713481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED1 where the 22813481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 22913481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED1Test, FunctorOnUserTypeFailure) { 23013481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 23113481Sgiacomo.travaglini@arm.com EXPECT_PRED1(PredFunctor1(), 23213481Sgiacomo.travaglini@arm.com Bool(n1_++)); 23313481Sgiacomo.travaglini@arm.com finished_ = true; 23413481Sgiacomo.travaglini@arm.com }, ""); 23513481Sgiacomo.travaglini@arm.com} 23613481Sgiacomo.travaglini@arm.com 23713481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED1 where the 23813481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 23913481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED1Test, FunctionOnBuiltInTypeSuccess) { 24013481Sgiacomo.travaglini@arm.com ASSERT_PRED1(PredFunction1Int, 24113481Sgiacomo.travaglini@arm.com ++n1_); 24213481Sgiacomo.travaglini@arm.com finished_ = true; 24313481Sgiacomo.travaglini@arm.com} 24413481Sgiacomo.travaglini@arm.com 24513481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED1 where the 24613481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 24713481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED1Test, FunctionOnUserTypeSuccess) { 24813481Sgiacomo.travaglini@arm.com ASSERT_PRED1(PredFunction1Bool, 24913481Sgiacomo.travaglini@arm.com Bool(++n1_)); 25013481Sgiacomo.travaglini@arm.com finished_ = true; 25113481Sgiacomo.travaglini@arm.com} 25213481Sgiacomo.travaglini@arm.com 25313481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED1 where the 25413481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 25513481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED1Test, FunctorOnBuiltInTypeSuccess) { 25613481Sgiacomo.travaglini@arm.com ASSERT_PRED1(PredFunctor1(), 25713481Sgiacomo.travaglini@arm.com ++n1_); 25813481Sgiacomo.travaglini@arm.com finished_ = true; 25913481Sgiacomo.travaglini@arm.com} 26013481Sgiacomo.travaglini@arm.com 26113481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED1 where the 26213481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 26313481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED1Test, FunctorOnUserTypeSuccess) { 26413481Sgiacomo.travaglini@arm.com ASSERT_PRED1(PredFunctor1(), 26513481Sgiacomo.travaglini@arm.com Bool(++n1_)); 26613481Sgiacomo.travaglini@arm.com finished_ = true; 26713481Sgiacomo.travaglini@arm.com} 26813481Sgiacomo.travaglini@arm.com 26913481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED1 where the 27013481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 27113481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED1Test, FunctionOnBuiltInTypeFailure) { 27213481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 27313481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 27413481Sgiacomo.travaglini@arm.com ASSERT_PRED1(PredFunction1Int, 27513481Sgiacomo.travaglini@arm.com n1_++); 27613481Sgiacomo.travaglini@arm.com finished_ = true; 27713481Sgiacomo.travaglini@arm.com }, ""); 27813481Sgiacomo.travaglini@arm.com} 27913481Sgiacomo.travaglini@arm.com 28013481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED1 where the 28113481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 28213481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED1Test, FunctionOnUserTypeFailure) { 28313481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 28413481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 28513481Sgiacomo.travaglini@arm.com ASSERT_PRED1(PredFunction1Bool, 28613481Sgiacomo.travaglini@arm.com Bool(n1_++)); 28713481Sgiacomo.travaglini@arm.com finished_ = true; 28813481Sgiacomo.travaglini@arm.com }, ""); 28913481Sgiacomo.travaglini@arm.com} 29013481Sgiacomo.travaglini@arm.com 29113481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED1 where the 29213481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 29313481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED1Test, FunctorOnBuiltInTypeFailure) { 29413481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 29513481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 29613481Sgiacomo.travaglini@arm.com ASSERT_PRED1(PredFunctor1(), 29713481Sgiacomo.travaglini@arm.com n1_++); 29813481Sgiacomo.travaglini@arm.com finished_ = true; 29913481Sgiacomo.travaglini@arm.com }, ""); 30013481Sgiacomo.travaglini@arm.com} 30113481Sgiacomo.travaglini@arm.com 30213481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED1 where the 30313481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 30413481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED1Test, FunctorOnUserTypeFailure) { 30513481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 30613481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 30713481Sgiacomo.travaglini@arm.com ASSERT_PRED1(PredFunctor1(), 30813481Sgiacomo.travaglini@arm.com Bool(n1_++)); 30913481Sgiacomo.travaglini@arm.com finished_ = true; 31013481Sgiacomo.travaglini@arm.com }, ""); 31113481Sgiacomo.travaglini@arm.com} 31213481Sgiacomo.travaglini@arm.com 31313481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED_FORMAT1 where the 31413481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 31513481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT1Test, FunctionOnBuiltInTypeSuccess) { 31613481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT1(PredFormatFunction1, 31713481Sgiacomo.travaglini@arm.com ++n1_); 31813481Sgiacomo.travaglini@arm.com finished_ = true; 31913481Sgiacomo.travaglini@arm.com} 32013481Sgiacomo.travaglini@arm.com 32113481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED_FORMAT1 where the 32213481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 32313481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT1Test, FunctionOnUserTypeSuccess) { 32413481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT1(PredFormatFunction1, 32513481Sgiacomo.travaglini@arm.com Bool(++n1_)); 32613481Sgiacomo.travaglini@arm.com finished_ = true; 32713481Sgiacomo.travaglini@arm.com} 32813481Sgiacomo.travaglini@arm.com 32913481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED_FORMAT1 where the 33013481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 33113481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT1Test, FunctorOnBuiltInTypeSuccess) { 33213481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT1(PredFormatFunctor1(), 33313481Sgiacomo.travaglini@arm.com ++n1_); 33413481Sgiacomo.travaglini@arm.com finished_ = true; 33513481Sgiacomo.travaglini@arm.com} 33613481Sgiacomo.travaglini@arm.com 33713481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED_FORMAT1 where the 33813481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 33913481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT1Test, FunctorOnUserTypeSuccess) { 34013481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT1(PredFormatFunctor1(), 34113481Sgiacomo.travaglini@arm.com Bool(++n1_)); 34213481Sgiacomo.travaglini@arm.com finished_ = true; 34313481Sgiacomo.travaglini@arm.com} 34413481Sgiacomo.travaglini@arm.com 34513481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED_FORMAT1 where the 34613481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 34713481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT1Test, FunctionOnBuiltInTypeFailure) { 34813481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 34913481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT1(PredFormatFunction1, 35013481Sgiacomo.travaglini@arm.com n1_++); 35113481Sgiacomo.travaglini@arm.com finished_ = true; 35213481Sgiacomo.travaglini@arm.com }, ""); 35313481Sgiacomo.travaglini@arm.com} 35413481Sgiacomo.travaglini@arm.com 35513481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED_FORMAT1 where the 35613481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 35713481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT1Test, FunctionOnUserTypeFailure) { 35813481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 35913481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT1(PredFormatFunction1, 36013481Sgiacomo.travaglini@arm.com Bool(n1_++)); 36113481Sgiacomo.travaglini@arm.com finished_ = true; 36213481Sgiacomo.travaglini@arm.com }, ""); 36313481Sgiacomo.travaglini@arm.com} 36413481Sgiacomo.travaglini@arm.com 36513481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED_FORMAT1 where the 36613481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 36713481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT1Test, FunctorOnBuiltInTypeFailure) { 36813481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 36913481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT1(PredFormatFunctor1(), 37013481Sgiacomo.travaglini@arm.com n1_++); 37113481Sgiacomo.travaglini@arm.com finished_ = true; 37213481Sgiacomo.travaglini@arm.com }, ""); 37313481Sgiacomo.travaglini@arm.com} 37413481Sgiacomo.travaglini@arm.com 37513481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED_FORMAT1 where the 37613481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 37713481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT1Test, FunctorOnUserTypeFailure) { 37813481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 37913481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT1(PredFormatFunctor1(), 38013481Sgiacomo.travaglini@arm.com Bool(n1_++)); 38113481Sgiacomo.travaglini@arm.com finished_ = true; 38213481Sgiacomo.travaglini@arm.com }, ""); 38313481Sgiacomo.travaglini@arm.com} 38413481Sgiacomo.travaglini@arm.com 38513481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED_FORMAT1 where the 38613481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 38713481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT1Test, FunctionOnBuiltInTypeSuccess) { 38813481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT1(PredFormatFunction1, 38913481Sgiacomo.travaglini@arm.com ++n1_); 39013481Sgiacomo.travaglini@arm.com finished_ = true; 39113481Sgiacomo.travaglini@arm.com} 39213481Sgiacomo.travaglini@arm.com 39313481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED_FORMAT1 where the 39413481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 39513481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT1Test, FunctionOnUserTypeSuccess) { 39613481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT1(PredFormatFunction1, 39713481Sgiacomo.travaglini@arm.com Bool(++n1_)); 39813481Sgiacomo.travaglini@arm.com finished_ = true; 39913481Sgiacomo.travaglini@arm.com} 40013481Sgiacomo.travaglini@arm.com 40113481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED_FORMAT1 where the 40213481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 40313481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT1Test, FunctorOnBuiltInTypeSuccess) { 40413481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT1(PredFormatFunctor1(), 40513481Sgiacomo.travaglini@arm.com ++n1_); 40613481Sgiacomo.travaglini@arm.com finished_ = true; 40713481Sgiacomo.travaglini@arm.com} 40813481Sgiacomo.travaglini@arm.com 40913481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED_FORMAT1 where the 41013481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 41113481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT1Test, FunctorOnUserTypeSuccess) { 41213481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT1(PredFormatFunctor1(), 41313481Sgiacomo.travaglini@arm.com Bool(++n1_)); 41413481Sgiacomo.travaglini@arm.com finished_ = true; 41513481Sgiacomo.travaglini@arm.com} 41613481Sgiacomo.travaglini@arm.com 41713481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED_FORMAT1 where the 41813481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 41913481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT1Test, FunctionOnBuiltInTypeFailure) { 42013481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 42113481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 42213481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT1(PredFormatFunction1, 42313481Sgiacomo.travaglini@arm.com n1_++); 42413481Sgiacomo.travaglini@arm.com finished_ = true; 42513481Sgiacomo.travaglini@arm.com }, ""); 42613481Sgiacomo.travaglini@arm.com} 42713481Sgiacomo.travaglini@arm.com 42813481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED_FORMAT1 where the 42913481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 43013481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT1Test, FunctionOnUserTypeFailure) { 43113481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 43213481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 43313481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT1(PredFormatFunction1, 43413481Sgiacomo.travaglini@arm.com Bool(n1_++)); 43513481Sgiacomo.travaglini@arm.com finished_ = true; 43613481Sgiacomo.travaglini@arm.com }, ""); 43713481Sgiacomo.travaglini@arm.com} 43813481Sgiacomo.travaglini@arm.com 43913481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED_FORMAT1 where the 44013481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 44113481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT1Test, FunctorOnBuiltInTypeFailure) { 44213481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 44313481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 44413481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT1(PredFormatFunctor1(), 44513481Sgiacomo.travaglini@arm.com n1_++); 44613481Sgiacomo.travaglini@arm.com finished_ = true; 44713481Sgiacomo.travaglini@arm.com }, ""); 44813481Sgiacomo.travaglini@arm.com} 44913481Sgiacomo.travaglini@arm.com 45013481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED_FORMAT1 where the 45113481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 45213481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT1Test, FunctorOnUserTypeFailure) { 45313481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 45413481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 45513481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT1(PredFormatFunctor1(), 45613481Sgiacomo.travaglini@arm.com Bool(n1_++)); 45713481Sgiacomo.travaglini@arm.com finished_ = true; 45813481Sgiacomo.travaglini@arm.com }, ""); 45913481Sgiacomo.travaglini@arm.com} 46013481Sgiacomo.travaglini@arm.com// Sample functions/functors for testing binary predicate assertions. 46113481Sgiacomo.travaglini@arm.com 46213481Sgiacomo.travaglini@arm.com// A binary predicate function. 46313481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2> 46413481Sgiacomo.travaglini@arm.combool PredFunction2(T1 v1, T2 v2) { 46513481Sgiacomo.travaglini@arm.com return v1 + v2 > 0; 46613481Sgiacomo.travaglini@arm.com} 46713481Sgiacomo.travaglini@arm.com 46813481Sgiacomo.travaglini@arm.com// The following two functions are needed to circumvent a bug in 46913481Sgiacomo.travaglini@arm.com// gcc 2.95.3, which sometimes has problem with the above template 47013481Sgiacomo.travaglini@arm.com// function. 47113481Sgiacomo.travaglini@arm.combool PredFunction2Int(int v1, int v2) { 47213481Sgiacomo.travaglini@arm.com return v1 + v2 > 0; 47313481Sgiacomo.travaglini@arm.com} 47413481Sgiacomo.travaglini@arm.combool PredFunction2Bool(Bool v1, Bool v2) { 47513481Sgiacomo.travaglini@arm.com return v1 + v2 > 0; 47613481Sgiacomo.travaglini@arm.com} 47713481Sgiacomo.travaglini@arm.com 47813481Sgiacomo.travaglini@arm.com// A binary predicate functor. 47913481Sgiacomo.travaglini@arm.comstruct PredFunctor2 { 48013481Sgiacomo.travaglini@arm.com template <typename T1, typename T2> 48113481Sgiacomo.travaglini@arm.com bool operator()(const T1& v1, 48213481Sgiacomo.travaglini@arm.com const T2& v2) { 48313481Sgiacomo.travaglini@arm.com return v1 + v2 > 0; 48413481Sgiacomo.travaglini@arm.com } 48513481Sgiacomo.travaglini@arm.com}; 48613481Sgiacomo.travaglini@arm.com 48713481Sgiacomo.travaglini@arm.com// A binary predicate-formatter function. 48813481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2> 48913481Sgiacomo.travaglini@arm.comtesting::AssertionResult PredFormatFunction2(const char* e1, 49013481Sgiacomo.travaglini@arm.com const char* e2, 49113481Sgiacomo.travaglini@arm.com const T1& v1, 49213481Sgiacomo.travaglini@arm.com const T2& v2) { 49313481Sgiacomo.travaglini@arm.com if (PredFunction2(v1, v2)) 49413481Sgiacomo.travaglini@arm.com return testing::AssertionSuccess(); 49513481Sgiacomo.travaglini@arm.com 49613481Sgiacomo.travaglini@arm.com return testing::AssertionFailure() 49713481Sgiacomo.travaglini@arm.com << e1 << " + " << e2 49813481Sgiacomo.travaglini@arm.com << " is expected to be positive, but evaluates to " 49913481Sgiacomo.travaglini@arm.com << v1 + v2 << "."; 50013481Sgiacomo.travaglini@arm.com} 50113481Sgiacomo.travaglini@arm.com 50213481Sgiacomo.travaglini@arm.com// A binary predicate-formatter functor. 50313481Sgiacomo.travaglini@arm.comstruct PredFormatFunctor2 { 50413481Sgiacomo.travaglini@arm.com template <typename T1, typename T2> 50513481Sgiacomo.travaglini@arm.com testing::AssertionResult operator()(const char* e1, 50613481Sgiacomo.travaglini@arm.com const char* e2, 50713481Sgiacomo.travaglini@arm.com const T1& v1, 50813481Sgiacomo.travaglini@arm.com const T2& v2) const { 50913481Sgiacomo.travaglini@arm.com return PredFormatFunction2(e1, e2, v1, v2); 51013481Sgiacomo.travaglini@arm.com } 51113481Sgiacomo.travaglini@arm.com}; 51213481Sgiacomo.travaglini@arm.com 51313481Sgiacomo.travaglini@arm.com// Tests for {EXPECT|ASSERT}_PRED_FORMAT2. 51413481Sgiacomo.travaglini@arm.com 51513481Sgiacomo.travaglini@arm.comclass Predicate2Test : public testing::Test { 51613481Sgiacomo.travaglini@arm.com protected: 51713481Sgiacomo.travaglini@arm.com virtual void SetUp() { 51813481Sgiacomo.travaglini@arm.com expected_to_finish_ = true; 51913481Sgiacomo.travaglini@arm.com finished_ = false; 52013481Sgiacomo.travaglini@arm.com n1_ = n2_ = 0; 52113481Sgiacomo.travaglini@arm.com } 52213481Sgiacomo.travaglini@arm.com 52313481Sgiacomo.travaglini@arm.com virtual void TearDown() { 52413481Sgiacomo.travaglini@arm.com // Verifies that each of the predicate's arguments was evaluated 52513481Sgiacomo.travaglini@arm.com // exactly once. 52613481Sgiacomo.travaglini@arm.com EXPECT_EQ(1, n1_) << 52713481Sgiacomo.travaglini@arm.com "The predicate assertion didn't evaluate argument 2 " 52813481Sgiacomo.travaglini@arm.com "exactly once."; 52913481Sgiacomo.travaglini@arm.com EXPECT_EQ(1, n2_) << 53013481Sgiacomo.travaglini@arm.com "The predicate assertion didn't evaluate argument 3 " 53113481Sgiacomo.travaglini@arm.com "exactly once."; 53213481Sgiacomo.travaglini@arm.com 53313481Sgiacomo.travaglini@arm.com // Verifies that the control flow in the test function is expected. 53413481Sgiacomo.travaglini@arm.com if (expected_to_finish_ && !finished_) { 53513481Sgiacomo.travaglini@arm.com FAIL() << "The predicate assertion unexpactedly aborted the test."; 53613481Sgiacomo.travaglini@arm.com } else if (!expected_to_finish_ && finished_) { 53713481Sgiacomo.travaglini@arm.com FAIL() << "The failed predicate assertion didn't abort the test " 53813481Sgiacomo.travaglini@arm.com "as expected."; 53913481Sgiacomo.travaglini@arm.com } 54013481Sgiacomo.travaglini@arm.com } 54113481Sgiacomo.travaglini@arm.com 54213481Sgiacomo.travaglini@arm.com // true iff the test function is expected to run to finish. 54313481Sgiacomo.travaglini@arm.com static bool expected_to_finish_; 54413481Sgiacomo.travaglini@arm.com 54513481Sgiacomo.travaglini@arm.com // true iff the test function did run to finish. 54613481Sgiacomo.travaglini@arm.com static bool finished_; 54713481Sgiacomo.travaglini@arm.com 54813481Sgiacomo.travaglini@arm.com static int n1_; 54913481Sgiacomo.travaglini@arm.com static int n2_; 55013481Sgiacomo.travaglini@arm.com}; 55113481Sgiacomo.travaglini@arm.com 55213481Sgiacomo.travaglini@arm.combool Predicate2Test::expected_to_finish_; 55313481Sgiacomo.travaglini@arm.combool Predicate2Test::finished_; 55413481Sgiacomo.travaglini@arm.comint Predicate2Test::n1_; 55513481Sgiacomo.travaglini@arm.comint Predicate2Test::n2_; 55613481Sgiacomo.travaglini@arm.com 55713481Sgiacomo.travaglini@arm.comtypedef Predicate2Test EXPECT_PRED_FORMAT2Test; 55813481Sgiacomo.travaglini@arm.comtypedef Predicate2Test ASSERT_PRED_FORMAT2Test; 55913481Sgiacomo.travaglini@arm.comtypedef Predicate2Test EXPECT_PRED2Test; 56013481Sgiacomo.travaglini@arm.comtypedef Predicate2Test ASSERT_PRED2Test; 56113481Sgiacomo.travaglini@arm.com 56213481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED2 where the 56313481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 56413481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED2Test, FunctionOnBuiltInTypeSuccess) { 56513481Sgiacomo.travaglini@arm.com EXPECT_PRED2(PredFunction2Int, 56613481Sgiacomo.travaglini@arm.com ++n1_, 56713481Sgiacomo.travaglini@arm.com ++n2_); 56813481Sgiacomo.travaglini@arm.com finished_ = true; 56913481Sgiacomo.travaglini@arm.com} 57013481Sgiacomo.travaglini@arm.com 57113481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED2 where the 57213481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 57313481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED2Test, FunctionOnUserTypeSuccess) { 57413481Sgiacomo.travaglini@arm.com EXPECT_PRED2(PredFunction2Bool, 57513481Sgiacomo.travaglini@arm.com Bool(++n1_), 57613481Sgiacomo.travaglini@arm.com Bool(++n2_)); 57713481Sgiacomo.travaglini@arm.com finished_ = true; 57813481Sgiacomo.travaglini@arm.com} 57913481Sgiacomo.travaglini@arm.com 58013481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED2 where the 58113481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 58213481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED2Test, FunctorOnBuiltInTypeSuccess) { 58313481Sgiacomo.travaglini@arm.com EXPECT_PRED2(PredFunctor2(), 58413481Sgiacomo.travaglini@arm.com ++n1_, 58513481Sgiacomo.travaglini@arm.com ++n2_); 58613481Sgiacomo.travaglini@arm.com finished_ = true; 58713481Sgiacomo.travaglini@arm.com} 58813481Sgiacomo.travaglini@arm.com 58913481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED2 where the 59013481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 59113481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED2Test, FunctorOnUserTypeSuccess) { 59213481Sgiacomo.travaglini@arm.com EXPECT_PRED2(PredFunctor2(), 59313481Sgiacomo.travaglini@arm.com Bool(++n1_), 59413481Sgiacomo.travaglini@arm.com Bool(++n2_)); 59513481Sgiacomo.travaglini@arm.com finished_ = true; 59613481Sgiacomo.travaglini@arm.com} 59713481Sgiacomo.travaglini@arm.com 59813481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED2 where the 59913481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 60013481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED2Test, FunctionOnBuiltInTypeFailure) { 60113481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 60213481Sgiacomo.travaglini@arm.com EXPECT_PRED2(PredFunction2Int, 60313481Sgiacomo.travaglini@arm.com n1_++, 60413481Sgiacomo.travaglini@arm.com n2_++); 60513481Sgiacomo.travaglini@arm.com finished_ = true; 60613481Sgiacomo.travaglini@arm.com }, ""); 60713481Sgiacomo.travaglini@arm.com} 60813481Sgiacomo.travaglini@arm.com 60913481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED2 where the 61013481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 61113481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED2Test, FunctionOnUserTypeFailure) { 61213481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 61313481Sgiacomo.travaglini@arm.com EXPECT_PRED2(PredFunction2Bool, 61413481Sgiacomo.travaglini@arm.com Bool(n1_++), 61513481Sgiacomo.travaglini@arm.com Bool(n2_++)); 61613481Sgiacomo.travaglini@arm.com finished_ = true; 61713481Sgiacomo.travaglini@arm.com }, ""); 61813481Sgiacomo.travaglini@arm.com} 61913481Sgiacomo.travaglini@arm.com 62013481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED2 where the 62113481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 62213481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED2Test, FunctorOnBuiltInTypeFailure) { 62313481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 62413481Sgiacomo.travaglini@arm.com EXPECT_PRED2(PredFunctor2(), 62513481Sgiacomo.travaglini@arm.com n1_++, 62613481Sgiacomo.travaglini@arm.com n2_++); 62713481Sgiacomo.travaglini@arm.com finished_ = true; 62813481Sgiacomo.travaglini@arm.com }, ""); 62913481Sgiacomo.travaglini@arm.com} 63013481Sgiacomo.travaglini@arm.com 63113481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED2 where the 63213481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 63313481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED2Test, FunctorOnUserTypeFailure) { 63413481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 63513481Sgiacomo.travaglini@arm.com EXPECT_PRED2(PredFunctor2(), 63613481Sgiacomo.travaglini@arm.com Bool(n1_++), 63713481Sgiacomo.travaglini@arm.com Bool(n2_++)); 63813481Sgiacomo.travaglini@arm.com finished_ = true; 63913481Sgiacomo.travaglini@arm.com }, ""); 64013481Sgiacomo.travaglini@arm.com} 64113481Sgiacomo.travaglini@arm.com 64213481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED2 where the 64313481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 64413481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED2Test, FunctionOnBuiltInTypeSuccess) { 64513481Sgiacomo.travaglini@arm.com ASSERT_PRED2(PredFunction2Int, 64613481Sgiacomo.travaglini@arm.com ++n1_, 64713481Sgiacomo.travaglini@arm.com ++n2_); 64813481Sgiacomo.travaglini@arm.com finished_ = true; 64913481Sgiacomo.travaglini@arm.com} 65013481Sgiacomo.travaglini@arm.com 65113481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED2 where the 65213481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 65313481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED2Test, FunctionOnUserTypeSuccess) { 65413481Sgiacomo.travaglini@arm.com ASSERT_PRED2(PredFunction2Bool, 65513481Sgiacomo.travaglini@arm.com Bool(++n1_), 65613481Sgiacomo.travaglini@arm.com Bool(++n2_)); 65713481Sgiacomo.travaglini@arm.com finished_ = true; 65813481Sgiacomo.travaglini@arm.com} 65913481Sgiacomo.travaglini@arm.com 66013481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED2 where the 66113481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 66213481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED2Test, FunctorOnBuiltInTypeSuccess) { 66313481Sgiacomo.travaglini@arm.com ASSERT_PRED2(PredFunctor2(), 66413481Sgiacomo.travaglini@arm.com ++n1_, 66513481Sgiacomo.travaglini@arm.com ++n2_); 66613481Sgiacomo.travaglini@arm.com finished_ = true; 66713481Sgiacomo.travaglini@arm.com} 66813481Sgiacomo.travaglini@arm.com 66913481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED2 where the 67013481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 67113481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED2Test, FunctorOnUserTypeSuccess) { 67213481Sgiacomo.travaglini@arm.com ASSERT_PRED2(PredFunctor2(), 67313481Sgiacomo.travaglini@arm.com Bool(++n1_), 67413481Sgiacomo.travaglini@arm.com Bool(++n2_)); 67513481Sgiacomo.travaglini@arm.com finished_ = true; 67613481Sgiacomo.travaglini@arm.com} 67713481Sgiacomo.travaglini@arm.com 67813481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED2 where the 67913481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 68013481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED2Test, FunctionOnBuiltInTypeFailure) { 68113481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 68213481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 68313481Sgiacomo.travaglini@arm.com ASSERT_PRED2(PredFunction2Int, 68413481Sgiacomo.travaglini@arm.com n1_++, 68513481Sgiacomo.travaglini@arm.com n2_++); 68613481Sgiacomo.travaglini@arm.com finished_ = true; 68713481Sgiacomo.travaglini@arm.com }, ""); 68813481Sgiacomo.travaglini@arm.com} 68913481Sgiacomo.travaglini@arm.com 69013481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED2 where the 69113481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 69213481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED2Test, FunctionOnUserTypeFailure) { 69313481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 69413481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 69513481Sgiacomo.travaglini@arm.com ASSERT_PRED2(PredFunction2Bool, 69613481Sgiacomo.travaglini@arm.com Bool(n1_++), 69713481Sgiacomo.travaglini@arm.com Bool(n2_++)); 69813481Sgiacomo.travaglini@arm.com finished_ = true; 69913481Sgiacomo.travaglini@arm.com }, ""); 70013481Sgiacomo.travaglini@arm.com} 70113481Sgiacomo.travaglini@arm.com 70213481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED2 where the 70313481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 70413481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED2Test, FunctorOnBuiltInTypeFailure) { 70513481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 70613481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 70713481Sgiacomo.travaglini@arm.com ASSERT_PRED2(PredFunctor2(), 70813481Sgiacomo.travaglini@arm.com n1_++, 70913481Sgiacomo.travaglini@arm.com n2_++); 71013481Sgiacomo.travaglini@arm.com finished_ = true; 71113481Sgiacomo.travaglini@arm.com }, ""); 71213481Sgiacomo.travaglini@arm.com} 71313481Sgiacomo.travaglini@arm.com 71413481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED2 where the 71513481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 71613481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED2Test, FunctorOnUserTypeFailure) { 71713481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 71813481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 71913481Sgiacomo.travaglini@arm.com ASSERT_PRED2(PredFunctor2(), 72013481Sgiacomo.travaglini@arm.com Bool(n1_++), 72113481Sgiacomo.travaglini@arm.com Bool(n2_++)); 72213481Sgiacomo.travaglini@arm.com finished_ = true; 72313481Sgiacomo.travaglini@arm.com }, ""); 72413481Sgiacomo.travaglini@arm.com} 72513481Sgiacomo.travaglini@arm.com 72613481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED_FORMAT2 where the 72713481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 72813481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT2Test, FunctionOnBuiltInTypeSuccess) { 72913481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT2(PredFormatFunction2, 73013481Sgiacomo.travaglini@arm.com ++n1_, 73113481Sgiacomo.travaglini@arm.com ++n2_); 73213481Sgiacomo.travaglini@arm.com finished_ = true; 73313481Sgiacomo.travaglini@arm.com} 73413481Sgiacomo.travaglini@arm.com 73513481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED_FORMAT2 where the 73613481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 73713481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT2Test, FunctionOnUserTypeSuccess) { 73813481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT2(PredFormatFunction2, 73913481Sgiacomo.travaglini@arm.com Bool(++n1_), 74013481Sgiacomo.travaglini@arm.com Bool(++n2_)); 74113481Sgiacomo.travaglini@arm.com finished_ = true; 74213481Sgiacomo.travaglini@arm.com} 74313481Sgiacomo.travaglini@arm.com 74413481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED_FORMAT2 where the 74513481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 74613481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT2Test, FunctorOnBuiltInTypeSuccess) { 74713481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT2(PredFormatFunctor2(), 74813481Sgiacomo.travaglini@arm.com ++n1_, 74913481Sgiacomo.travaglini@arm.com ++n2_); 75013481Sgiacomo.travaglini@arm.com finished_ = true; 75113481Sgiacomo.travaglini@arm.com} 75213481Sgiacomo.travaglini@arm.com 75313481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED_FORMAT2 where the 75413481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 75513481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT2Test, FunctorOnUserTypeSuccess) { 75613481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT2(PredFormatFunctor2(), 75713481Sgiacomo.travaglini@arm.com Bool(++n1_), 75813481Sgiacomo.travaglini@arm.com Bool(++n2_)); 75913481Sgiacomo.travaglini@arm.com finished_ = true; 76013481Sgiacomo.travaglini@arm.com} 76113481Sgiacomo.travaglini@arm.com 76213481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED_FORMAT2 where the 76313481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 76413481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT2Test, FunctionOnBuiltInTypeFailure) { 76513481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 76613481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT2(PredFormatFunction2, 76713481Sgiacomo.travaglini@arm.com n1_++, 76813481Sgiacomo.travaglini@arm.com n2_++); 76913481Sgiacomo.travaglini@arm.com finished_ = true; 77013481Sgiacomo.travaglini@arm.com }, ""); 77113481Sgiacomo.travaglini@arm.com} 77213481Sgiacomo.travaglini@arm.com 77313481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED_FORMAT2 where the 77413481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 77513481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT2Test, FunctionOnUserTypeFailure) { 77613481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 77713481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT2(PredFormatFunction2, 77813481Sgiacomo.travaglini@arm.com Bool(n1_++), 77913481Sgiacomo.travaglini@arm.com Bool(n2_++)); 78013481Sgiacomo.travaglini@arm.com finished_ = true; 78113481Sgiacomo.travaglini@arm.com }, ""); 78213481Sgiacomo.travaglini@arm.com} 78313481Sgiacomo.travaglini@arm.com 78413481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED_FORMAT2 where the 78513481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 78613481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT2Test, FunctorOnBuiltInTypeFailure) { 78713481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 78813481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT2(PredFormatFunctor2(), 78913481Sgiacomo.travaglini@arm.com n1_++, 79013481Sgiacomo.travaglini@arm.com n2_++); 79113481Sgiacomo.travaglini@arm.com finished_ = true; 79213481Sgiacomo.travaglini@arm.com }, ""); 79313481Sgiacomo.travaglini@arm.com} 79413481Sgiacomo.travaglini@arm.com 79513481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED_FORMAT2 where the 79613481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 79713481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT2Test, FunctorOnUserTypeFailure) { 79813481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 79913481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT2(PredFormatFunctor2(), 80013481Sgiacomo.travaglini@arm.com Bool(n1_++), 80113481Sgiacomo.travaglini@arm.com Bool(n2_++)); 80213481Sgiacomo.travaglini@arm.com finished_ = true; 80313481Sgiacomo.travaglini@arm.com }, ""); 80413481Sgiacomo.travaglini@arm.com} 80513481Sgiacomo.travaglini@arm.com 80613481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED_FORMAT2 where the 80713481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 80813481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT2Test, FunctionOnBuiltInTypeSuccess) { 80913481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT2(PredFormatFunction2, 81013481Sgiacomo.travaglini@arm.com ++n1_, 81113481Sgiacomo.travaglini@arm.com ++n2_); 81213481Sgiacomo.travaglini@arm.com finished_ = true; 81313481Sgiacomo.travaglini@arm.com} 81413481Sgiacomo.travaglini@arm.com 81513481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED_FORMAT2 where the 81613481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 81713481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT2Test, FunctionOnUserTypeSuccess) { 81813481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT2(PredFormatFunction2, 81913481Sgiacomo.travaglini@arm.com Bool(++n1_), 82013481Sgiacomo.travaglini@arm.com Bool(++n2_)); 82113481Sgiacomo.travaglini@arm.com finished_ = true; 82213481Sgiacomo.travaglini@arm.com} 82313481Sgiacomo.travaglini@arm.com 82413481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED_FORMAT2 where the 82513481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 82613481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT2Test, FunctorOnBuiltInTypeSuccess) { 82713481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT2(PredFormatFunctor2(), 82813481Sgiacomo.travaglini@arm.com ++n1_, 82913481Sgiacomo.travaglini@arm.com ++n2_); 83013481Sgiacomo.travaglini@arm.com finished_ = true; 83113481Sgiacomo.travaglini@arm.com} 83213481Sgiacomo.travaglini@arm.com 83313481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED_FORMAT2 where the 83413481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 83513481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT2Test, FunctorOnUserTypeSuccess) { 83613481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT2(PredFormatFunctor2(), 83713481Sgiacomo.travaglini@arm.com Bool(++n1_), 83813481Sgiacomo.travaglini@arm.com Bool(++n2_)); 83913481Sgiacomo.travaglini@arm.com finished_ = true; 84013481Sgiacomo.travaglini@arm.com} 84113481Sgiacomo.travaglini@arm.com 84213481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED_FORMAT2 where the 84313481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 84413481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT2Test, FunctionOnBuiltInTypeFailure) { 84513481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 84613481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 84713481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT2(PredFormatFunction2, 84813481Sgiacomo.travaglini@arm.com n1_++, 84913481Sgiacomo.travaglini@arm.com n2_++); 85013481Sgiacomo.travaglini@arm.com finished_ = true; 85113481Sgiacomo.travaglini@arm.com }, ""); 85213481Sgiacomo.travaglini@arm.com} 85313481Sgiacomo.travaglini@arm.com 85413481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED_FORMAT2 where the 85513481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 85613481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT2Test, FunctionOnUserTypeFailure) { 85713481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 85813481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 85913481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT2(PredFormatFunction2, 86013481Sgiacomo.travaglini@arm.com Bool(n1_++), 86113481Sgiacomo.travaglini@arm.com Bool(n2_++)); 86213481Sgiacomo.travaglini@arm.com finished_ = true; 86313481Sgiacomo.travaglini@arm.com }, ""); 86413481Sgiacomo.travaglini@arm.com} 86513481Sgiacomo.travaglini@arm.com 86613481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED_FORMAT2 where the 86713481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 86813481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT2Test, FunctorOnBuiltInTypeFailure) { 86913481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 87013481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 87113481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT2(PredFormatFunctor2(), 87213481Sgiacomo.travaglini@arm.com n1_++, 87313481Sgiacomo.travaglini@arm.com n2_++); 87413481Sgiacomo.travaglini@arm.com finished_ = true; 87513481Sgiacomo.travaglini@arm.com }, ""); 87613481Sgiacomo.travaglini@arm.com} 87713481Sgiacomo.travaglini@arm.com 87813481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED_FORMAT2 where the 87913481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 88013481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT2Test, FunctorOnUserTypeFailure) { 88113481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 88213481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 88313481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT2(PredFormatFunctor2(), 88413481Sgiacomo.travaglini@arm.com Bool(n1_++), 88513481Sgiacomo.travaglini@arm.com Bool(n2_++)); 88613481Sgiacomo.travaglini@arm.com finished_ = true; 88713481Sgiacomo.travaglini@arm.com }, ""); 88813481Sgiacomo.travaglini@arm.com} 88913481Sgiacomo.travaglini@arm.com// Sample functions/functors for testing ternary predicate assertions. 89013481Sgiacomo.travaglini@arm.com 89113481Sgiacomo.travaglini@arm.com// A ternary predicate function. 89213481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3> 89313481Sgiacomo.travaglini@arm.combool PredFunction3(T1 v1, T2 v2, T3 v3) { 89413481Sgiacomo.travaglini@arm.com return v1 + v2 + v3 > 0; 89513481Sgiacomo.travaglini@arm.com} 89613481Sgiacomo.travaglini@arm.com 89713481Sgiacomo.travaglini@arm.com// The following two functions are needed to circumvent a bug in 89813481Sgiacomo.travaglini@arm.com// gcc 2.95.3, which sometimes has problem with the above template 89913481Sgiacomo.travaglini@arm.com// function. 90013481Sgiacomo.travaglini@arm.combool PredFunction3Int(int v1, int v2, int v3) { 90113481Sgiacomo.travaglini@arm.com return v1 + v2 + v3 > 0; 90213481Sgiacomo.travaglini@arm.com} 90313481Sgiacomo.travaglini@arm.combool PredFunction3Bool(Bool v1, Bool v2, Bool v3) { 90413481Sgiacomo.travaglini@arm.com return v1 + v2 + v3 > 0; 90513481Sgiacomo.travaglini@arm.com} 90613481Sgiacomo.travaglini@arm.com 90713481Sgiacomo.travaglini@arm.com// A ternary predicate functor. 90813481Sgiacomo.travaglini@arm.comstruct PredFunctor3 { 90913481Sgiacomo.travaglini@arm.com template <typename T1, typename T2, typename T3> 91013481Sgiacomo.travaglini@arm.com bool operator()(const T1& v1, 91113481Sgiacomo.travaglini@arm.com const T2& v2, 91213481Sgiacomo.travaglini@arm.com const T3& v3) { 91313481Sgiacomo.travaglini@arm.com return v1 + v2 + v3 > 0; 91413481Sgiacomo.travaglini@arm.com } 91513481Sgiacomo.travaglini@arm.com}; 91613481Sgiacomo.travaglini@arm.com 91713481Sgiacomo.travaglini@arm.com// A ternary predicate-formatter function. 91813481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3> 91913481Sgiacomo.travaglini@arm.comtesting::AssertionResult PredFormatFunction3(const char* e1, 92013481Sgiacomo.travaglini@arm.com const char* e2, 92113481Sgiacomo.travaglini@arm.com const char* e3, 92213481Sgiacomo.travaglini@arm.com const T1& v1, 92313481Sgiacomo.travaglini@arm.com const T2& v2, 92413481Sgiacomo.travaglini@arm.com const T3& v3) { 92513481Sgiacomo.travaglini@arm.com if (PredFunction3(v1, v2, v3)) 92613481Sgiacomo.travaglini@arm.com return testing::AssertionSuccess(); 92713481Sgiacomo.travaglini@arm.com 92813481Sgiacomo.travaglini@arm.com return testing::AssertionFailure() 92913481Sgiacomo.travaglini@arm.com << e1 << " + " << e2 << " + " << e3 93013481Sgiacomo.travaglini@arm.com << " is expected to be positive, but evaluates to " 93113481Sgiacomo.travaglini@arm.com << v1 + v2 + v3 << "."; 93213481Sgiacomo.travaglini@arm.com} 93313481Sgiacomo.travaglini@arm.com 93413481Sgiacomo.travaglini@arm.com// A ternary predicate-formatter functor. 93513481Sgiacomo.travaglini@arm.comstruct PredFormatFunctor3 { 93613481Sgiacomo.travaglini@arm.com template <typename T1, typename T2, typename T3> 93713481Sgiacomo.travaglini@arm.com testing::AssertionResult operator()(const char* e1, 93813481Sgiacomo.travaglini@arm.com const char* e2, 93913481Sgiacomo.travaglini@arm.com const char* e3, 94013481Sgiacomo.travaglini@arm.com const T1& v1, 94113481Sgiacomo.travaglini@arm.com const T2& v2, 94213481Sgiacomo.travaglini@arm.com const T3& v3) const { 94313481Sgiacomo.travaglini@arm.com return PredFormatFunction3(e1, e2, e3, v1, v2, v3); 94413481Sgiacomo.travaglini@arm.com } 94513481Sgiacomo.travaglini@arm.com}; 94613481Sgiacomo.travaglini@arm.com 94713481Sgiacomo.travaglini@arm.com// Tests for {EXPECT|ASSERT}_PRED_FORMAT3. 94813481Sgiacomo.travaglini@arm.com 94913481Sgiacomo.travaglini@arm.comclass Predicate3Test : public testing::Test { 95013481Sgiacomo.travaglini@arm.com protected: 95113481Sgiacomo.travaglini@arm.com virtual void SetUp() { 95213481Sgiacomo.travaglini@arm.com expected_to_finish_ = true; 95313481Sgiacomo.travaglini@arm.com finished_ = false; 95413481Sgiacomo.travaglini@arm.com n1_ = n2_ = n3_ = 0; 95513481Sgiacomo.travaglini@arm.com } 95613481Sgiacomo.travaglini@arm.com 95713481Sgiacomo.travaglini@arm.com virtual void TearDown() { 95813481Sgiacomo.travaglini@arm.com // Verifies that each of the predicate's arguments was evaluated 95913481Sgiacomo.travaglini@arm.com // exactly once. 96013481Sgiacomo.travaglini@arm.com EXPECT_EQ(1, n1_) << 96113481Sgiacomo.travaglini@arm.com "The predicate assertion didn't evaluate argument 2 " 96213481Sgiacomo.travaglini@arm.com "exactly once."; 96313481Sgiacomo.travaglini@arm.com EXPECT_EQ(1, n2_) << 96413481Sgiacomo.travaglini@arm.com "The predicate assertion didn't evaluate argument 3 " 96513481Sgiacomo.travaglini@arm.com "exactly once."; 96613481Sgiacomo.travaglini@arm.com EXPECT_EQ(1, n3_) << 96713481Sgiacomo.travaglini@arm.com "The predicate assertion didn't evaluate argument 4 " 96813481Sgiacomo.travaglini@arm.com "exactly once."; 96913481Sgiacomo.travaglini@arm.com 97013481Sgiacomo.travaglini@arm.com // Verifies that the control flow in the test function is expected. 97113481Sgiacomo.travaglini@arm.com if (expected_to_finish_ && !finished_) { 97213481Sgiacomo.travaglini@arm.com FAIL() << "The predicate assertion unexpactedly aborted the test."; 97313481Sgiacomo.travaglini@arm.com } else if (!expected_to_finish_ && finished_) { 97413481Sgiacomo.travaglini@arm.com FAIL() << "The failed predicate assertion didn't abort the test " 97513481Sgiacomo.travaglini@arm.com "as expected."; 97613481Sgiacomo.travaglini@arm.com } 97713481Sgiacomo.travaglini@arm.com } 97813481Sgiacomo.travaglini@arm.com 97913481Sgiacomo.travaglini@arm.com // true iff the test function is expected to run to finish. 98013481Sgiacomo.travaglini@arm.com static bool expected_to_finish_; 98113481Sgiacomo.travaglini@arm.com 98213481Sgiacomo.travaglini@arm.com // true iff the test function did run to finish. 98313481Sgiacomo.travaglini@arm.com static bool finished_; 98413481Sgiacomo.travaglini@arm.com 98513481Sgiacomo.travaglini@arm.com static int n1_; 98613481Sgiacomo.travaglini@arm.com static int n2_; 98713481Sgiacomo.travaglini@arm.com static int n3_; 98813481Sgiacomo.travaglini@arm.com}; 98913481Sgiacomo.travaglini@arm.com 99013481Sgiacomo.travaglini@arm.combool Predicate3Test::expected_to_finish_; 99113481Sgiacomo.travaglini@arm.combool Predicate3Test::finished_; 99213481Sgiacomo.travaglini@arm.comint Predicate3Test::n1_; 99313481Sgiacomo.travaglini@arm.comint Predicate3Test::n2_; 99413481Sgiacomo.travaglini@arm.comint Predicate3Test::n3_; 99513481Sgiacomo.travaglini@arm.com 99613481Sgiacomo.travaglini@arm.comtypedef Predicate3Test EXPECT_PRED_FORMAT3Test; 99713481Sgiacomo.travaglini@arm.comtypedef Predicate3Test ASSERT_PRED_FORMAT3Test; 99813481Sgiacomo.travaglini@arm.comtypedef Predicate3Test EXPECT_PRED3Test; 99913481Sgiacomo.travaglini@arm.comtypedef Predicate3Test ASSERT_PRED3Test; 100013481Sgiacomo.travaglini@arm.com 100113481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED3 where the 100213481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 100313481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED3Test, FunctionOnBuiltInTypeSuccess) { 100413481Sgiacomo.travaglini@arm.com EXPECT_PRED3(PredFunction3Int, 100513481Sgiacomo.travaglini@arm.com ++n1_, 100613481Sgiacomo.travaglini@arm.com ++n2_, 100713481Sgiacomo.travaglini@arm.com ++n3_); 100813481Sgiacomo.travaglini@arm.com finished_ = true; 100913481Sgiacomo.travaglini@arm.com} 101013481Sgiacomo.travaglini@arm.com 101113481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED3 where the 101213481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 101313481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED3Test, FunctionOnUserTypeSuccess) { 101413481Sgiacomo.travaglini@arm.com EXPECT_PRED3(PredFunction3Bool, 101513481Sgiacomo.travaglini@arm.com Bool(++n1_), 101613481Sgiacomo.travaglini@arm.com Bool(++n2_), 101713481Sgiacomo.travaglini@arm.com Bool(++n3_)); 101813481Sgiacomo.travaglini@arm.com finished_ = true; 101913481Sgiacomo.travaglini@arm.com} 102013481Sgiacomo.travaglini@arm.com 102113481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED3 where the 102213481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 102313481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED3Test, FunctorOnBuiltInTypeSuccess) { 102413481Sgiacomo.travaglini@arm.com EXPECT_PRED3(PredFunctor3(), 102513481Sgiacomo.travaglini@arm.com ++n1_, 102613481Sgiacomo.travaglini@arm.com ++n2_, 102713481Sgiacomo.travaglini@arm.com ++n3_); 102813481Sgiacomo.travaglini@arm.com finished_ = true; 102913481Sgiacomo.travaglini@arm.com} 103013481Sgiacomo.travaglini@arm.com 103113481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED3 where the 103213481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 103313481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED3Test, FunctorOnUserTypeSuccess) { 103413481Sgiacomo.travaglini@arm.com EXPECT_PRED3(PredFunctor3(), 103513481Sgiacomo.travaglini@arm.com Bool(++n1_), 103613481Sgiacomo.travaglini@arm.com Bool(++n2_), 103713481Sgiacomo.travaglini@arm.com Bool(++n3_)); 103813481Sgiacomo.travaglini@arm.com finished_ = true; 103913481Sgiacomo.travaglini@arm.com} 104013481Sgiacomo.travaglini@arm.com 104113481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED3 where the 104213481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 104313481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED3Test, FunctionOnBuiltInTypeFailure) { 104413481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 104513481Sgiacomo.travaglini@arm.com EXPECT_PRED3(PredFunction3Int, 104613481Sgiacomo.travaglini@arm.com n1_++, 104713481Sgiacomo.travaglini@arm.com n2_++, 104813481Sgiacomo.travaglini@arm.com n3_++); 104913481Sgiacomo.travaglini@arm.com finished_ = true; 105013481Sgiacomo.travaglini@arm.com }, ""); 105113481Sgiacomo.travaglini@arm.com} 105213481Sgiacomo.travaglini@arm.com 105313481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED3 where the 105413481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 105513481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED3Test, FunctionOnUserTypeFailure) { 105613481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 105713481Sgiacomo.travaglini@arm.com EXPECT_PRED3(PredFunction3Bool, 105813481Sgiacomo.travaglini@arm.com Bool(n1_++), 105913481Sgiacomo.travaglini@arm.com Bool(n2_++), 106013481Sgiacomo.travaglini@arm.com Bool(n3_++)); 106113481Sgiacomo.travaglini@arm.com finished_ = true; 106213481Sgiacomo.travaglini@arm.com }, ""); 106313481Sgiacomo.travaglini@arm.com} 106413481Sgiacomo.travaglini@arm.com 106513481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED3 where the 106613481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 106713481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED3Test, FunctorOnBuiltInTypeFailure) { 106813481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 106913481Sgiacomo.travaglini@arm.com EXPECT_PRED3(PredFunctor3(), 107013481Sgiacomo.travaglini@arm.com n1_++, 107113481Sgiacomo.travaglini@arm.com n2_++, 107213481Sgiacomo.travaglini@arm.com n3_++); 107313481Sgiacomo.travaglini@arm.com finished_ = true; 107413481Sgiacomo.travaglini@arm.com }, ""); 107513481Sgiacomo.travaglini@arm.com} 107613481Sgiacomo.travaglini@arm.com 107713481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED3 where the 107813481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 107913481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED3Test, FunctorOnUserTypeFailure) { 108013481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 108113481Sgiacomo.travaglini@arm.com EXPECT_PRED3(PredFunctor3(), 108213481Sgiacomo.travaglini@arm.com Bool(n1_++), 108313481Sgiacomo.travaglini@arm.com Bool(n2_++), 108413481Sgiacomo.travaglini@arm.com Bool(n3_++)); 108513481Sgiacomo.travaglini@arm.com finished_ = true; 108613481Sgiacomo.travaglini@arm.com }, ""); 108713481Sgiacomo.travaglini@arm.com} 108813481Sgiacomo.travaglini@arm.com 108913481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED3 where the 109013481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 109113481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED3Test, FunctionOnBuiltInTypeSuccess) { 109213481Sgiacomo.travaglini@arm.com ASSERT_PRED3(PredFunction3Int, 109313481Sgiacomo.travaglini@arm.com ++n1_, 109413481Sgiacomo.travaglini@arm.com ++n2_, 109513481Sgiacomo.travaglini@arm.com ++n3_); 109613481Sgiacomo.travaglini@arm.com finished_ = true; 109713481Sgiacomo.travaglini@arm.com} 109813481Sgiacomo.travaglini@arm.com 109913481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED3 where the 110013481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 110113481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED3Test, FunctionOnUserTypeSuccess) { 110213481Sgiacomo.travaglini@arm.com ASSERT_PRED3(PredFunction3Bool, 110313481Sgiacomo.travaglini@arm.com Bool(++n1_), 110413481Sgiacomo.travaglini@arm.com Bool(++n2_), 110513481Sgiacomo.travaglini@arm.com Bool(++n3_)); 110613481Sgiacomo.travaglini@arm.com finished_ = true; 110713481Sgiacomo.travaglini@arm.com} 110813481Sgiacomo.travaglini@arm.com 110913481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED3 where the 111013481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 111113481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED3Test, FunctorOnBuiltInTypeSuccess) { 111213481Sgiacomo.travaglini@arm.com ASSERT_PRED3(PredFunctor3(), 111313481Sgiacomo.travaglini@arm.com ++n1_, 111413481Sgiacomo.travaglini@arm.com ++n2_, 111513481Sgiacomo.travaglini@arm.com ++n3_); 111613481Sgiacomo.travaglini@arm.com finished_ = true; 111713481Sgiacomo.travaglini@arm.com} 111813481Sgiacomo.travaglini@arm.com 111913481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED3 where the 112013481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 112113481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED3Test, FunctorOnUserTypeSuccess) { 112213481Sgiacomo.travaglini@arm.com ASSERT_PRED3(PredFunctor3(), 112313481Sgiacomo.travaglini@arm.com Bool(++n1_), 112413481Sgiacomo.travaglini@arm.com Bool(++n2_), 112513481Sgiacomo.travaglini@arm.com Bool(++n3_)); 112613481Sgiacomo.travaglini@arm.com finished_ = true; 112713481Sgiacomo.travaglini@arm.com} 112813481Sgiacomo.travaglini@arm.com 112913481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED3 where the 113013481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 113113481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED3Test, FunctionOnBuiltInTypeFailure) { 113213481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 113313481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 113413481Sgiacomo.travaglini@arm.com ASSERT_PRED3(PredFunction3Int, 113513481Sgiacomo.travaglini@arm.com n1_++, 113613481Sgiacomo.travaglini@arm.com n2_++, 113713481Sgiacomo.travaglini@arm.com n3_++); 113813481Sgiacomo.travaglini@arm.com finished_ = true; 113913481Sgiacomo.travaglini@arm.com }, ""); 114013481Sgiacomo.travaglini@arm.com} 114113481Sgiacomo.travaglini@arm.com 114213481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED3 where the 114313481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 114413481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED3Test, FunctionOnUserTypeFailure) { 114513481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 114613481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 114713481Sgiacomo.travaglini@arm.com ASSERT_PRED3(PredFunction3Bool, 114813481Sgiacomo.travaglini@arm.com Bool(n1_++), 114913481Sgiacomo.travaglini@arm.com Bool(n2_++), 115013481Sgiacomo.travaglini@arm.com Bool(n3_++)); 115113481Sgiacomo.travaglini@arm.com finished_ = true; 115213481Sgiacomo.travaglini@arm.com }, ""); 115313481Sgiacomo.travaglini@arm.com} 115413481Sgiacomo.travaglini@arm.com 115513481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED3 where the 115613481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 115713481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED3Test, FunctorOnBuiltInTypeFailure) { 115813481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 115913481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 116013481Sgiacomo.travaglini@arm.com ASSERT_PRED3(PredFunctor3(), 116113481Sgiacomo.travaglini@arm.com n1_++, 116213481Sgiacomo.travaglini@arm.com n2_++, 116313481Sgiacomo.travaglini@arm.com n3_++); 116413481Sgiacomo.travaglini@arm.com finished_ = true; 116513481Sgiacomo.travaglini@arm.com }, ""); 116613481Sgiacomo.travaglini@arm.com} 116713481Sgiacomo.travaglini@arm.com 116813481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED3 where the 116913481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 117013481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED3Test, FunctorOnUserTypeFailure) { 117113481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 117213481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 117313481Sgiacomo.travaglini@arm.com ASSERT_PRED3(PredFunctor3(), 117413481Sgiacomo.travaglini@arm.com Bool(n1_++), 117513481Sgiacomo.travaglini@arm.com Bool(n2_++), 117613481Sgiacomo.travaglini@arm.com Bool(n3_++)); 117713481Sgiacomo.travaglini@arm.com finished_ = true; 117813481Sgiacomo.travaglini@arm.com }, ""); 117913481Sgiacomo.travaglini@arm.com} 118013481Sgiacomo.travaglini@arm.com 118113481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED_FORMAT3 where the 118213481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 118313481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT3Test, FunctionOnBuiltInTypeSuccess) { 118413481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT3(PredFormatFunction3, 118513481Sgiacomo.travaglini@arm.com ++n1_, 118613481Sgiacomo.travaglini@arm.com ++n2_, 118713481Sgiacomo.travaglini@arm.com ++n3_); 118813481Sgiacomo.travaglini@arm.com finished_ = true; 118913481Sgiacomo.travaglini@arm.com} 119013481Sgiacomo.travaglini@arm.com 119113481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED_FORMAT3 where the 119213481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 119313481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT3Test, FunctionOnUserTypeSuccess) { 119413481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT3(PredFormatFunction3, 119513481Sgiacomo.travaglini@arm.com Bool(++n1_), 119613481Sgiacomo.travaglini@arm.com Bool(++n2_), 119713481Sgiacomo.travaglini@arm.com Bool(++n3_)); 119813481Sgiacomo.travaglini@arm.com finished_ = true; 119913481Sgiacomo.travaglini@arm.com} 120013481Sgiacomo.travaglini@arm.com 120113481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED_FORMAT3 where the 120213481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 120313481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT3Test, FunctorOnBuiltInTypeSuccess) { 120413481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT3(PredFormatFunctor3(), 120513481Sgiacomo.travaglini@arm.com ++n1_, 120613481Sgiacomo.travaglini@arm.com ++n2_, 120713481Sgiacomo.travaglini@arm.com ++n3_); 120813481Sgiacomo.travaglini@arm.com finished_ = true; 120913481Sgiacomo.travaglini@arm.com} 121013481Sgiacomo.travaglini@arm.com 121113481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED_FORMAT3 where the 121213481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 121313481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT3Test, FunctorOnUserTypeSuccess) { 121413481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT3(PredFormatFunctor3(), 121513481Sgiacomo.travaglini@arm.com Bool(++n1_), 121613481Sgiacomo.travaglini@arm.com Bool(++n2_), 121713481Sgiacomo.travaglini@arm.com Bool(++n3_)); 121813481Sgiacomo.travaglini@arm.com finished_ = true; 121913481Sgiacomo.travaglini@arm.com} 122013481Sgiacomo.travaglini@arm.com 122113481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED_FORMAT3 where the 122213481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 122313481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT3Test, FunctionOnBuiltInTypeFailure) { 122413481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 122513481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT3(PredFormatFunction3, 122613481Sgiacomo.travaglini@arm.com n1_++, 122713481Sgiacomo.travaglini@arm.com n2_++, 122813481Sgiacomo.travaglini@arm.com n3_++); 122913481Sgiacomo.travaglini@arm.com finished_ = true; 123013481Sgiacomo.travaglini@arm.com }, ""); 123113481Sgiacomo.travaglini@arm.com} 123213481Sgiacomo.travaglini@arm.com 123313481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED_FORMAT3 where the 123413481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 123513481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT3Test, FunctionOnUserTypeFailure) { 123613481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 123713481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT3(PredFormatFunction3, 123813481Sgiacomo.travaglini@arm.com Bool(n1_++), 123913481Sgiacomo.travaglini@arm.com Bool(n2_++), 124013481Sgiacomo.travaglini@arm.com Bool(n3_++)); 124113481Sgiacomo.travaglini@arm.com finished_ = true; 124213481Sgiacomo.travaglini@arm.com }, ""); 124313481Sgiacomo.travaglini@arm.com} 124413481Sgiacomo.travaglini@arm.com 124513481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED_FORMAT3 where the 124613481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 124713481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT3Test, FunctorOnBuiltInTypeFailure) { 124813481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 124913481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT3(PredFormatFunctor3(), 125013481Sgiacomo.travaglini@arm.com n1_++, 125113481Sgiacomo.travaglini@arm.com n2_++, 125213481Sgiacomo.travaglini@arm.com n3_++); 125313481Sgiacomo.travaglini@arm.com finished_ = true; 125413481Sgiacomo.travaglini@arm.com }, ""); 125513481Sgiacomo.travaglini@arm.com} 125613481Sgiacomo.travaglini@arm.com 125713481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED_FORMAT3 where the 125813481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 125913481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT3Test, FunctorOnUserTypeFailure) { 126013481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 126113481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT3(PredFormatFunctor3(), 126213481Sgiacomo.travaglini@arm.com Bool(n1_++), 126313481Sgiacomo.travaglini@arm.com Bool(n2_++), 126413481Sgiacomo.travaglini@arm.com Bool(n3_++)); 126513481Sgiacomo.travaglini@arm.com finished_ = true; 126613481Sgiacomo.travaglini@arm.com }, ""); 126713481Sgiacomo.travaglini@arm.com} 126813481Sgiacomo.travaglini@arm.com 126913481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED_FORMAT3 where the 127013481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 127113481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT3Test, FunctionOnBuiltInTypeSuccess) { 127213481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT3(PredFormatFunction3, 127313481Sgiacomo.travaglini@arm.com ++n1_, 127413481Sgiacomo.travaglini@arm.com ++n2_, 127513481Sgiacomo.travaglini@arm.com ++n3_); 127613481Sgiacomo.travaglini@arm.com finished_ = true; 127713481Sgiacomo.travaglini@arm.com} 127813481Sgiacomo.travaglini@arm.com 127913481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED_FORMAT3 where the 128013481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 128113481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT3Test, FunctionOnUserTypeSuccess) { 128213481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT3(PredFormatFunction3, 128313481Sgiacomo.travaglini@arm.com Bool(++n1_), 128413481Sgiacomo.travaglini@arm.com Bool(++n2_), 128513481Sgiacomo.travaglini@arm.com Bool(++n3_)); 128613481Sgiacomo.travaglini@arm.com finished_ = true; 128713481Sgiacomo.travaglini@arm.com} 128813481Sgiacomo.travaglini@arm.com 128913481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED_FORMAT3 where the 129013481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 129113481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT3Test, FunctorOnBuiltInTypeSuccess) { 129213481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT3(PredFormatFunctor3(), 129313481Sgiacomo.travaglini@arm.com ++n1_, 129413481Sgiacomo.travaglini@arm.com ++n2_, 129513481Sgiacomo.travaglini@arm.com ++n3_); 129613481Sgiacomo.travaglini@arm.com finished_ = true; 129713481Sgiacomo.travaglini@arm.com} 129813481Sgiacomo.travaglini@arm.com 129913481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED_FORMAT3 where the 130013481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 130113481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT3Test, FunctorOnUserTypeSuccess) { 130213481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT3(PredFormatFunctor3(), 130313481Sgiacomo.travaglini@arm.com Bool(++n1_), 130413481Sgiacomo.travaglini@arm.com Bool(++n2_), 130513481Sgiacomo.travaglini@arm.com Bool(++n3_)); 130613481Sgiacomo.travaglini@arm.com finished_ = true; 130713481Sgiacomo.travaglini@arm.com} 130813481Sgiacomo.travaglini@arm.com 130913481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED_FORMAT3 where the 131013481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 131113481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT3Test, FunctionOnBuiltInTypeFailure) { 131213481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 131313481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 131413481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT3(PredFormatFunction3, 131513481Sgiacomo.travaglini@arm.com n1_++, 131613481Sgiacomo.travaglini@arm.com n2_++, 131713481Sgiacomo.travaglini@arm.com n3_++); 131813481Sgiacomo.travaglini@arm.com finished_ = true; 131913481Sgiacomo.travaglini@arm.com }, ""); 132013481Sgiacomo.travaglini@arm.com} 132113481Sgiacomo.travaglini@arm.com 132213481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED_FORMAT3 where the 132313481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 132413481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT3Test, FunctionOnUserTypeFailure) { 132513481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 132613481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 132713481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT3(PredFormatFunction3, 132813481Sgiacomo.travaglini@arm.com Bool(n1_++), 132913481Sgiacomo.travaglini@arm.com Bool(n2_++), 133013481Sgiacomo.travaglini@arm.com Bool(n3_++)); 133113481Sgiacomo.travaglini@arm.com finished_ = true; 133213481Sgiacomo.travaglini@arm.com }, ""); 133313481Sgiacomo.travaglini@arm.com} 133413481Sgiacomo.travaglini@arm.com 133513481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED_FORMAT3 where the 133613481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 133713481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT3Test, FunctorOnBuiltInTypeFailure) { 133813481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 133913481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 134013481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT3(PredFormatFunctor3(), 134113481Sgiacomo.travaglini@arm.com n1_++, 134213481Sgiacomo.travaglini@arm.com n2_++, 134313481Sgiacomo.travaglini@arm.com n3_++); 134413481Sgiacomo.travaglini@arm.com finished_ = true; 134513481Sgiacomo.travaglini@arm.com }, ""); 134613481Sgiacomo.travaglini@arm.com} 134713481Sgiacomo.travaglini@arm.com 134813481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED_FORMAT3 where the 134913481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 135013481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT3Test, FunctorOnUserTypeFailure) { 135113481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 135213481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 135313481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT3(PredFormatFunctor3(), 135413481Sgiacomo.travaglini@arm.com Bool(n1_++), 135513481Sgiacomo.travaglini@arm.com Bool(n2_++), 135613481Sgiacomo.travaglini@arm.com Bool(n3_++)); 135713481Sgiacomo.travaglini@arm.com finished_ = true; 135813481Sgiacomo.travaglini@arm.com }, ""); 135913481Sgiacomo.travaglini@arm.com} 136013481Sgiacomo.travaglini@arm.com// Sample functions/functors for testing 4-ary predicate assertions. 136113481Sgiacomo.travaglini@arm.com 136213481Sgiacomo.travaglini@arm.com// A 4-ary predicate function. 136313481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4> 136413481Sgiacomo.travaglini@arm.combool PredFunction4(T1 v1, T2 v2, T3 v3, T4 v4) { 136513481Sgiacomo.travaglini@arm.com return v1 + v2 + v3 + v4 > 0; 136613481Sgiacomo.travaglini@arm.com} 136713481Sgiacomo.travaglini@arm.com 136813481Sgiacomo.travaglini@arm.com// The following two functions are needed to circumvent a bug in 136913481Sgiacomo.travaglini@arm.com// gcc 2.95.3, which sometimes has problem with the above template 137013481Sgiacomo.travaglini@arm.com// function. 137113481Sgiacomo.travaglini@arm.combool PredFunction4Int(int v1, int v2, int v3, int v4) { 137213481Sgiacomo.travaglini@arm.com return v1 + v2 + v3 + v4 > 0; 137313481Sgiacomo.travaglini@arm.com} 137413481Sgiacomo.travaglini@arm.combool PredFunction4Bool(Bool v1, Bool v2, Bool v3, Bool v4) { 137513481Sgiacomo.travaglini@arm.com return v1 + v2 + v3 + v4 > 0; 137613481Sgiacomo.travaglini@arm.com} 137713481Sgiacomo.travaglini@arm.com 137813481Sgiacomo.travaglini@arm.com// A 4-ary predicate functor. 137913481Sgiacomo.travaglini@arm.comstruct PredFunctor4 { 138013481Sgiacomo.travaglini@arm.com template <typename T1, typename T2, typename T3, typename T4> 138113481Sgiacomo.travaglini@arm.com bool operator()(const T1& v1, 138213481Sgiacomo.travaglini@arm.com const T2& v2, 138313481Sgiacomo.travaglini@arm.com const T3& v3, 138413481Sgiacomo.travaglini@arm.com const T4& v4) { 138513481Sgiacomo.travaglini@arm.com return v1 + v2 + v3 + v4 > 0; 138613481Sgiacomo.travaglini@arm.com } 138713481Sgiacomo.travaglini@arm.com}; 138813481Sgiacomo.travaglini@arm.com 138913481Sgiacomo.travaglini@arm.com// A 4-ary predicate-formatter function. 139013481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4> 139113481Sgiacomo.travaglini@arm.comtesting::AssertionResult PredFormatFunction4(const char* e1, 139213481Sgiacomo.travaglini@arm.com const char* e2, 139313481Sgiacomo.travaglini@arm.com const char* e3, 139413481Sgiacomo.travaglini@arm.com const char* e4, 139513481Sgiacomo.travaglini@arm.com const T1& v1, 139613481Sgiacomo.travaglini@arm.com const T2& v2, 139713481Sgiacomo.travaglini@arm.com const T3& v3, 139813481Sgiacomo.travaglini@arm.com const T4& v4) { 139913481Sgiacomo.travaglini@arm.com if (PredFunction4(v1, v2, v3, v4)) 140013481Sgiacomo.travaglini@arm.com return testing::AssertionSuccess(); 140113481Sgiacomo.travaglini@arm.com 140213481Sgiacomo.travaglini@arm.com return testing::AssertionFailure() 140313481Sgiacomo.travaglini@arm.com << e1 << " + " << e2 << " + " << e3 << " + " << e4 140413481Sgiacomo.travaglini@arm.com << " is expected to be positive, but evaluates to " 140513481Sgiacomo.travaglini@arm.com << v1 + v2 + v3 + v4 << "."; 140613481Sgiacomo.travaglini@arm.com} 140713481Sgiacomo.travaglini@arm.com 140813481Sgiacomo.travaglini@arm.com// A 4-ary predicate-formatter functor. 140913481Sgiacomo.travaglini@arm.comstruct PredFormatFunctor4 { 141013481Sgiacomo.travaglini@arm.com template <typename T1, typename T2, typename T3, typename T4> 141113481Sgiacomo.travaglini@arm.com testing::AssertionResult operator()(const char* e1, 141213481Sgiacomo.travaglini@arm.com const char* e2, 141313481Sgiacomo.travaglini@arm.com const char* e3, 141413481Sgiacomo.travaglini@arm.com const char* e4, 141513481Sgiacomo.travaglini@arm.com const T1& v1, 141613481Sgiacomo.travaglini@arm.com const T2& v2, 141713481Sgiacomo.travaglini@arm.com const T3& v3, 141813481Sgiacomo.travaglini@arm.com const T4& v4) const { 141913481Sgiacomo.travaglini@arm.com return PredFormatFunction4(e1, e2, e3, e4, v1, v2, v3, v4); 142013481Sgiacomo.travaglini@arm.com } 142113481Sgiacomo.travaglini@arm.com}; 142213481Sgiacomo.travaglini@arm.com 142313481Sgiacomo.travaglini@arm.com// Tests for {EXPECT|ASSERT}_PRED_FORMAT4. 142413481Sgiacomo.travaglini@arm.com 142513481Sgiacomo.travaglini@arm.comclass Predicate4Test : public testing::Test { 142613481Sgiacomo.travaglini@arm.com protected: 142713481Sgiacomo.travaglini@arm.com virtual void SetUp() { 142813481Sgiacomo.travaglini@arm.com expected_to_finish_ = true; 142913481Sgiacomo.travaglini@arm.com finished_ = false; 143013481Sgiacomo.travaglini@arm.com n1_ = n2_ = n3_ = n4_ = 0; 143113481Sgiacomo.travaglini@arm.com } 143213481Sgiacomo.travaglini@arm.com 143313481Sgiacomo.travaglini@arm.com virtual void TearDown() { 143413481Sgiacomo.travaglini@arm.com // Verifies that each of the predicate's arguments was evaluated 143513481Sgiacomo.travaglini@arm.com // exactly once. 143613481Sgiacomo.travaglini@arm.com EXPECT_EQ(1, n1_) << 143713481Sgiacomo.travaglini@arm.com "The predicate assertion didn't evaluate argument 2 " 143813481Sgiacomo.travaglini@arm.com "exactly once."; 143913481Sgiacomo.travaglini@arm.com EXPECT_EQ(1, n2_) << 144013481Sgiacomo.travaglini@arm.com "The predicate assertion didn't evaluate argument 3 " 144113481Sgiacomo.travaglini@arm.com "exactly once."; 144213481Sgiacomo.travaglini@arm.com EXPECT_EQ(1, n3_) << 144313481Sgiacomo.travaglini@arm.com "The predicate assertion didn't evaluate argument 4 " 144413481Sgiacomo.travaglini@arm.com "exactly once."; 144513481Sgiacomo.travaglini@arm.com EXPECT_EQ(1, n4_) << 144613481Sgiacomo.travaglini@arm.com "The predicate assertion didn't evaluate argument 5 " 144713481Sgiacomo.travaglini@arm.com "exactly once."; 144813481Sgiacomo.travaglini@arm.com 144913481Sgiacomo.travaglini@arm.com // Verifies that the control flow in the test function is expected. 145013481Sgiacomo.travaglini@arm.com if (expected_to_finish_ && !finished_) { 145113481Sgiacomo.travaglini@arm.com FAIL() << "The predicate assertion unexpactedly aborted the test."; 145213481Sgiacomo.travaglini@arm.com } else if (!expected_to_finish_ && finished_) { 145313481Sgiacomo.travaglini@arm.com FAIL() << "The failed predicate assertion didn't abort the test " 145413481Sgiacomo.travaglini@arm.com "as expected."; 145513481Sgiacomo.travaglini@arm.com } 145613481Sgiacomo.travaglini@arm.com } 145713481Sgiacomo.travaglini@arm.com 145813481Sgiacomo.travaglini@arm.com // true iff the test function is expected to run to finish. 145913481Sgiacomo.travaglini@arm.com static bool expected_to_finish_; 146013481Sgiacomo.travaglini@arm.com 146113481Sgiacomo.travaglini@arm.com // true iff the test function did run to finish. 146213481Sgiacomo.travaglini@arm.com static bool finished_; 146313481Sgiacomo.travaglini@arm.com 146413481Sgiacomo.travaglini@arm.com static int n1_; 146513481Sgiacomo.travaglini@arm.com static int n2_; 146613481Sgiacomo.travaglini@arm.com static int n3_; 146713481Sgiacomo.travaglini@arm.com static int n4_; 146813481Sgiacomo.travaglini@arm.com}; 146913481Sgiacomo.travaglini@arm.com 147013481Sgiacomo.travaglini@arm.combool Predicate4Test::expected_to_finish_; 147113481Sgiacomo.travaglini@arm.combool Predicate4Test::finished_; 147213481Sgiacomo.travaglini@arm.comint Predicate4Test::n1_; 147313481Sgiacomo.travaglini@arm.comint Predicate4Test::n2_; 147413481Sgiacomo.travaglini@arm.comint Predicate4Test::n3_; 147513481Sgiacomo.travaglini@arm.comint Predicate4Test::n4_; 147613481Sgiacomo.travaglini@arm.com 147713481Sgiacomo.travaglini@arm.comtypedef Predicate4Test EXPECT_PRED_FORMAT4Test; 147813481Sgiacomo.travaglini@arm.comtypedef Predicate4Test ASSERT_PRED_FORMAT4Test; 147913481Sgiacomo.travaglini@arm.comtypedef Predicate4Test EXPECT_PRED4Test; 148013481Sgiacomo.travaglini@arm.comtypedef Predicate4Test ASSERT_PRED4Test; 148113481Sgiacomo.travaglini@arm.com 148213481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED4 where the 148313481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 148413481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED4Test, FunctionOnBuiltInTypeSuccess) { 148513481Sgiacomo.travaglini@arm.com EXPECT_PRED4(PredFunction4Int, 148613481Sgiacomo.travaglini@arm.com ++n1_, 148713481Sgiacomo.travaglini@arm.com ++n2_, 148813481Sgiacomo.travaglini@arm.com ++n3_, 148913481Sgiacomo.travaglini@arm.com ++n4_); 149013481Sgiacomo.travaglini@arm.com finished_ = true; 149113481Sgiacomo.travaglini@arm.com} 149213481Sgiacomo.travaglini@arm.com 149313481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED4 where the 149413481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 149513481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED4Test, FunctionOnUserTypeSuccess) { 149613481Sgiacomo.travaglini@arm.com EXPECT_PRED4(PredFunction4Bool, 149713481Sgiacomo.travaglini@arm.com Bool(++n1_), 149813481Sgiacomo.travaglini@arm.com Bool(++n2_), 149913481Sgiacomo.travaglini@arm.com Bool(++n3_), 150013481Sgiacomo.travaglini@arm.com Bool(++n4_)); 150113481Sgiacomo.travaglini@arm.com finished_ = true; 150213481Sgiacomo.travaglini@arm.com} 150313481Sgiacomo.travaglini@arm.com 150413481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED4 where the 150513481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 150613481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED4Test, FunctorOnBuiltInTypeSuccess) { 150713481Sgiacomo.travaglini@arm.com EXPECT_PRED4(PredFunctor4(), 150813481Sgiacomo.travaglini@arm.com ++n1_, 150913481Sgiacomo.travaglini@arm.com ++n2_, 151013481Sgiacomo.travaglini@arm.com ++n3_, 151113481Sgiacomo.travaglini@arm.com ++n4_); 151213481Sgiacomo.travaglini@arm.com finished_ = true; 151313481Sgiacomo.travaglini@arm.com} 151413481Sgiacomo.travaglini@arm.com 151513481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED4 where the 151613481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 151713481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED4Test, FunctorOnUserTypeSuccess) { 151813481Sgiacomo.travaglini@arm.com EXPECT_PRED4(PredFunctor4(), 151913481Sgiacomo.travaglini@arm.com Bool(++n1_), 152013481Sgiacomo.travaglini@arm.com Bool(++n2_), 152113481Sgiacomo.travaglini@arm.com Bool(++n3_), 152213481Sgiacomo.travaglini@arm.com Bool(++n4_)); 152313481Sgiacomo.travaglini@arm.com finished_ = true; 152413481Sgiacomo.travaglini@arm.com} 152513481Sgiacomo.travaglini@arm.com 152613481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED4 where the 152713481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 152813481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED4Test, FunctionOnBuiltInTypeFailure) { 152913481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 153013481Sgiacomo.travaglini@arm.com EXPECT_PRED4(PredFunction4Int, 153113481Sgiacomo.travaglini@arm.com n1_++, 153213481Sgiacomo.travaglini@arm.com n2_++, 153313481Sgiacomo.travaglini@arm.com n3_++, 153413481Sgiacomo.travaglini@arm.com n4_++); 153513481Sgiacomo.travaglini@arm.com finished_ = true; 153613481Sgiacomo.travaglini@arm.com }, ""); 153713481Sgiacomo.travaglini@arm.com} 153813481Sgiacomo.travaglini@arm.com 153913481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED4 where the 154013481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 154113481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED4Test, FunctionOnUserTypeFailure) { 154213481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 154313481Sgiacomo.travaglini@arm.com EXPECT_PRED4(PredFunction4Bool, 154413481Sgiacomo.travaglini@arm.com Bool(n1_++), 154513481Sgiacomo.travaglini@arm.com Bool(n2_++), 154613481Sgiacomo.travaglini@arm.com Bool(n3_++), 154713481Sgiacomo.travaglini@arm.com Bool(n4_++)); 154813481Sgiacomo.travaglini@arm.com finished_ = true; 154913481Sgiacomo.travaglini@arm.com }, ""); 155013481Sgiacomo.travaglini@arm.com} 155113481Sgiacomo.travaglini@arm.com 155213481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED4 where the 155313481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 155413481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED4Test, FunctorOnBuiltInTypeFailure) { 155513481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 155613481Sgiacomo.travaglini@arm.com EXPECT_PRED4(PredFunctor4(), 155713481Sgiacomo.travaglini@arm.com n1_++, 155813481Sgiacomo.travaglini@arm.com n2_++, 155913481Sgiacomo.travaglini@arm.com n3_++, 156013481Sgiacomo.travaglini@arm.com n4_++); 156113481Sgiacomo.travaglini@arm.com finished_ = true; 156213481Sgiacomo.travaglini@arm.com }, ""); 156313481Sgiacomo.travaglini@arm.com} 156413481Sgiacomo.travaglini@arm.com 156513481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED4 where the 156613481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 156713481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED4Test, FunctorOnUserTypeFailure) { 156813481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 156913481Sgiacomo.travaglini@arm.com EXPECT_PRED4(PredFunctor4(), 157013481Sgiacomo.travaglini@arm.com Bool(n1_++), 157113481Sgiacomo.travaglini@arm.com Bool(n2_++), 157213481Sgiacomo.travaglini@arm.com Bool(n3_++), 157313481Sgiacomo.travaglini@arm.com Bool(n4_++)); 157413481Sgiacomo.travaglini@arm.com finished_ = true; 157513481Sgiacomo.travaglini@arm.com }, ""); 157613481Sgiacomo.travaglini@arm.com} 157713481Sgiacomo.travaglini@arm.com 157813481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED4 where the 157913481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 158013481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED4Test, FunctionOnBuiltInTypeSuccess) { 158113481Sgiacomo.travaglini@arm.com ASSERT_PRED4(PredFunction4Int, 158213481Sgiacomo.travaglini@arm.com ++n1_, 158313481Sgiacomo.travaglini@arm.com ++n2_, 158413481Sgiacomo.travaglini@arm.com ++n3_, 158513481Sgiacomo.travaglini@arm.com ++n4_); 158613481Sgiacomo.travaglini@arm.com finished_ = true; 158713481Sgiacomo.travaglini@arm.com} 158813481Sgiacomo.travaglini@arm.com 158913481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED4 where the 159013481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 159113481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED4Test, FunctionOnUserTypeSuccess) { 159213481Sgiacomo.travaglini@arm.com ASSERT_PRED4(PredFunction4Bool, 159313481Sgiacomo.travaglini@arm.com Bool(++n1_), 159413481Sgiacomo.travaglini@arm.com Bool(++n2_), 159513481Sgiacomo.travaglini@arm.com Bool(++n3_), 159613481Sgiacomo.travaglini@arm.com Bool(++n4_)); 159713481Sgiacomo.travaglini@arm.com finished_ = true; 159813481Sgiacomo.travaglini@arm.com} 159913481Sgiacomo.travaglini@arm.com 160013481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED4 where the 160113481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 160213481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED4Test, FunctorOnBuiltInTypeSuccess) { 160313481Sgiacomo.travaglini@arm.com ASSERT_PRED4(PredFunctor4(), 160413481Sgiacomo.travaglini@arm.com ++n1_, 160513481Sgiacomo.travaglini@arm.com ++n2_, 160613481Sgiacomo.travaglini@arm.com ++n3_, 160713481Sgiacomo.travaglini@arm.com ++n4_); 160813481Sgiacomo.travaglini@arm.com finished_ = true; 160913481Sgiacomo.travaglini@arm.com} 161013481Sgiacomo.travaglini@arm.com 161113481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED4 where the 161213481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 161313481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED4Test, FunctorOnUserTypeSuccess) { 161413481Sgiacomo.travaglini@arm.com ASSERT_PRED4(PredFunctor4(), 161513481Sgiacomo.travaglini@arm.com Bool(++n1_), 161613481Sgiacomo.travaglini@arm.com Bool(++n2_), 161713481Sgiacomo.travaglini@arm.com Bool(++n3_), 161813481Sgiacomo.travaglini@arm.com Bool(++n4_)); 161913481Sgiacomo.travaglini@arm.com finished_ = true; 162013481Sgiacomo.travaglini@arm.com} 162113481Sgiacomo.travaglini@arm.com 162213481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED4 where the 162313481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 162413481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED4Test, FunctionOnBuiltInTypeFailure) { 162513481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 162613481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 162713481Sgiacomo.travaglini@arm.com ASSERT_PRED4(PredFunction4Int, 162813481Sgiacomo.travaglini@arm.com n1_++, 162913481Sgiacomo.travaglini@arm.com n2_++, 163013481Sgiacomo.travaglini@arm.com n3_++, 163113481Sgiacomo.travaglini@arm.com n4_++); 163213481Sgiacomo.travaglini@arm.com finished_ = true; 163313481Sgiacomo.travaglini@arm.com }, ""); 163413481Sgiacomo.travaglini@arm.com} 163513481Sgiacomo.travaglini@arm.com 163613481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED4 where the 163713481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 163813481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED4Test, FunctionOnUserTypeFailure) { 163913481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 164013481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 164113481Sgiacomo.travaglini@arm.com ASSERT_PRED4(PredFunction4Bool, 164213481Sgiacomo.travaglini@arm.com Bool(n1_++), 164313481Sgiacomo.travaglini@arm.com Bool(n2_++), 164413481Sgiacomo.travaglini@arm.com Bool(n3_++), 164513481Sgiacomo.travaglini@arm.com Bool(n4_++)); 164613481Sgiacomo.travaglini@arm.com finished_ = true; 164713481Sgiacomo.travaglini@arm.com }, ""); 164813481Sgiacomo.travaglini@arm.com} 164913481Sgiacomo.travaglini@arm.com 165013481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED4 where the 165113481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 165213481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED4Test, FunctorOnBuiltInTypeFailure) { 165313481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 165413481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 165513481Sgiacomo.travaglini@arm.com ASSERT_PRED4(PredFunctor4(), 165613481Sgiacomo.travaglini@arm.com n1_++, 165713481Sgiacomo.travaglini@arm.com n2_++, 165813481Sgiacomo.travaglini@arm.com n3_++, 165913481Sgiacomo.travaglini@arm.com n4_++); 166013481Sgiacomo.travaglini@arm.com finished_ = true; 166113481Sgiacomo.travaglini@arm.com }, ""); 166213481Sgiacomo.travaglini@arm.com} 166313481Sgiacomo.travaglini@arm.com 166413481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED4 where the 166513481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 166613481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED4Test, FunctorOnUserTypeFailure) { 166713481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 166813481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 166913481Sgiacomo.travaglini@arm.com ASSERT_PRED4(PredFunctor4(), 167013481Sgiacomo.travaglini@arm.com Bool(n1_++), 167113481Sgiacomo.travaglini@arm.com Bool(n2_++), 167213481Sgiacomo.travaglini@arm.com Bool(n3_++), 167313481Sgiacomo.travaglini@arm.com Bool(n4_++)); 167413481Sgiacomo.travaglini@arm.com finished_ = true; 167513481Sgiacomo.travaglini@arm.com }, ""); 167613481Sgiacomo.travaglini@arm.com} 167713481Sgiacomo.travaglini@arm.com 167813481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED_FORMAT4 where the 167913481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 168013481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT4Test, FunctionOnBuiltInTypeSuccess) { 168113481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT4(PredFormatFunction4, 168213481Sgiacomo.travaglini@arm.com ++n1_, 168313481Sgiacomo.travaglini@arm.com ++n2_, 168413481Sgiacomo.travaglini@arm.com ++n3_, 168513481Sgiacomo.travaglini@arm.com ++n4_); 168613481Sgiacomo.travaglini@arm.com finished_ = true; 168713481Sgiacomo.travaglini@arm.com} 168813481Sgiacomo.travaglini@arm.com 168913481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED_FORMAT4 where the 169013481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 169113481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT4Test, FunctionOnUserTypeSuccess) { 169213481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT4(PredFormatFunction4, 169313481Sgiacomo.travaglini@arm.com Bool(++n1_), 169413481Sgiacomo.travaglini@arm.com Bool(++n2_), 169513481Sgiacomo.travaglini@arm.com Bool(++n3_), 169613481Sgiacomo.travaglini@arm.com Bool(++n4_)); 169713481Sgiacomo.travaglini@arm.com finished_ = true; 169813481Sgiacomo.travaglini@arm.com} 169913481Sgiacomo.travaglini@arm.com 170013481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED_FORMAT4 where the 170113481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 170213481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT4Test, FunctorOnBuiltInTypeSuccess) { 170313481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT4(PredFormatFunctor4(), 170413481Sgiacomo.travaglini@arm.com ++n1_, 170513481Sgiacomo.travaglini@arm.com ++n2_, 170613481Sgiacomo.travaglini@arm.com ++n3_, 170713481Sgiacomo.travaglini@arm.com ++n4_); 170813481Sgiacomo.travaglini@arm.com finished_ = true; 170913481Sgiacomo.travaglini@arm.com} 171013481Sgiacomo.travaglini@arm.com 171113481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED_FORMAT4 where the 171213481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 171313481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT4Test, FunctorOnUserTypeSuccess) { 171413481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT4(PredFormatFunctor4(), 171513481Sgiacomo.travaglini@arm.com Bool(++n1_), 171613481Sgiacomo.travaglini@arm.com Bool(++n2_), 171713481Sgiacomo.travaglini@arm.com Bool(++n3_), 171813481Sgiacomo.travaglini@arm.com Bool(++n4_)); 171913481Sgiacomo.travaglini@arm.com finished_ = true; 172013481Sgiacomo.travaglini@arm.com} 172113481Sgiacomo.travaglini@arm.com 172213481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED_FORMAT4 where the 172313481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 172413481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT4Test, FunctionOnBuiltInTypeFailure) { 172513481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 172613481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT4(PredFormatFunction4, 172713481Sgiacomo.travaglini@arm.com n1_++, 172813481Sgiacomo.travaglini@arm.com n2_++, 172913481Sgiacomo.travaglini@arm.com n3_++, 173013481Sgiacomo.travaglini@arm.com n4_++); 173113481Sgiacomo.travaglini@arm.com finished_ = true; 173213481Sgiacomo.travaglini@arm.com }, ""); 173313481Sgiacomo.travaglini@arm.com} 173413481Sgiacomo.travaglini@arm.com 173513481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED_FORMAT4 where the 173613481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 173713481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT4Test, FunctionOnUserTypeFailure) { 173813481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 173913481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT4(PredFormatFunction4, 174013481Sgiacomo.travaglini@arm.com Bool(n1_++), 174113481Sgiacomo.travaglini@arm.com Bool(n2_++), 174213481Sgiacomo.travaglini@arm.com Bool(n3_++), 174313481Sgiacomo.travaglini@arm.com Bool(n4_++)); 174413481Sgiacomo.travaglini@arm.com finished_ = true; 174513481Sgiacomo.travaglini@arm.com }, ""); 174613481Sgiacomo.travaglini@arm.com} 174713481Sgiacomo.travaglini@arm.com 174813481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED_FORMAT4 where the 174913481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 175013481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT4Test, FunctorOnBuiltInTypeFailure) { 175113481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 175213481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT4(PredFormatFunctor4(), 175313481Sgiacomo.travaglini@arm.com n1_++, 175413481Sgiacomo.travaglini@arm.com n2_++, 175513481Sgiacomo.travaglini@arm.com n3_++, 175613481Sgiacomo.travaglini@arm.com n4_++); 175713481Sgiacomo.travaglini@arm.com finished_ = true; 175813481Sgiacomo.travaglini@arm.com }, ""); 175913481Sgiacomo.travaglini@arm.com} 176013481Sgiacomo.travaglini@arm.com 176113481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED_FORMAT4 where the 176213481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 176313481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT4Test, FunctorOnUserTypeFailure) { 176413481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 176513481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT4(PredFormatFunctor4(), 176613481Sgiacomo.travaglini@arm.com Bool(n1_++), 176713481Sgiacomo.travaglini@arm.com Bool(n2_++), 176813481Sgiacomo.travaglini@arm.com Bool(n3_++), 176913481Sgiacomo.travaglini@arm.com Bool(n4_++)); 177013481Sgiacomo.travaglini@arm.com finished_ = true; 177113481Sgiacomo.travaglini@arm.com }, ""); 177213481Sgiacomo.travaglini@arm.com} 177313481Sgiacomo.travaglini@arm.com 177413481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED_FORMAT4 where the 177513481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 177613481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT4Test, FunctionOnBuiltInTypeSuccess) { 177713481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT4(PredFormatFunction4, 177813481Sgiacomo.travaglini@arm.com ++n1_, 177913481Sgiacomo.travaglini@arm.com ++n2_, 178013481Sgiacomo.travaglini@arm.com ++n3_, 178113481Sgiacomo.travaglini@arm.com ++n4_); 178213481Sgiacomo.travaglini@arm.com finished_ = true; 178313481Sgiacomo.travaglini@arm.com} 178413481Sgiacomo.travaglini@arm.com 178513481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED_FORMAT4 where the 178613481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 178713481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT4Test, FunctionOnUserTypeSuccess) { 178813481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT4(PredFormatFunction4, 178913481Sgiacomo.travaglini@arm.com Bool(++n1_), 179013481Sgiacomo.travaglini@arm.com Bool(++n2_), 179113481Sgiacomo.travaglini@arm.com Bool(++n3_), 179213481Sgiacomo.travaglini@arm.com Bool(++n4_)); 179313481Sgiacomo.travaglini@arm.com finished_ = true; 179413481Sgiacomo.travaglini@arm.com} 179513481Sgiacomo.travaglini@arm.com 179613481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED_FORMAT4 where the 179713481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 179813481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT4Test, FunctorOnBuiltInTypeSuccess) { 179913481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT4(PredFormatFunctor4(), 180013481Sgiacomo.travaglini@arm.com ++n1_, 180113481Sgiacomo.travaglini@arm.com ++n2_, 180213481Sgiacomo.travaglini@arm.com ++n3_, 180313481Sgiacomo.travaglini@arm.com ++n4_); 180413481Sgiacomo.travaglini@arm.com finished_ = true; 180513481Sgiacomo.travaglini@arm.com} 180613481Sgiacomo.travaglini@arm.com 180713481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED_FORMAT4 where the 180813481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 180913481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT4Test, FunctorOnUserTypeSuccess) { 181013481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT4(PredFormatFunctor4(), 181113481Sgiacomo.travaglini@arm.com Bool(++n1_), 181213481Sgiacomo.travaglini@arm.com Bool(++n2_), 181313481Sgiacomo.travaglini@arm.com Bool(++n3_), 181413481Sgiacomo.travaglini@arm.com Bool(++n4_)); 181513481Sgiacomo.travaglini@arm.com finished_ = true; 181613481Sgiacomo.travaglini@arm.com} 181713481Sgiacomo.travaglini@arm.com 181813481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED_FORMAT4 where the 181913481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 182013481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT4Test, FunctionOnBuiltInTypeFailure) { 182113481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 182213481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 182313481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT4(PredFormatFunction4, 182413481Sgiacomo.travaglini@arm.com n1_++, 182513481Sgiacomo.travaglini@arm.com n2_++, 182613481Sgiacomo.travaglini@arm.com n3_++, 182713481Sgiacomo.travaglini@arm.com n4_++); 182813481Sgiacomo.travaglini@arm.com finished_ = true; 182913481Sgiacomo.travaglini@arm.com }, ""); 183013481Sgiacomo.travaglini@arm.com} 183113481Sgiacomo.travaglini@arm.com 183213481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED_FORMAT4 where the 183313481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 183413481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT4Test, FunctionOnUserTypeFailure) { 183513481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 183613481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 183713481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT4(PredFormatFunction4, 183813481Sgiacomo.travaglini@arm.com Bool(n1_++), 183913481Sgiacomo.travaglini@arm.com Bool(n2_++), 184013481Sgiacomo.travaglini@arm.com Bool(n3_++), 184113481Sgiacomo.travaglini@arm.com Bool(n4_++)); 184213481Sgiacomo.travaglini@arm.com finished_ = true; 184313481Sgiacomo.travaglini@arm.com }, ""); 184413481Sgiacomo.travaglini@arm.com} 184513481Sgiacomo.travaglini@arm.com 184613481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED_FORMAT4 where the 184713481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 184813481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT4Test, FunctorOnBuiltInTypeFailure) { 184913481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 185013481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 185113481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT4(PredFormatFunctor4(), 185213481Sgiacomo.travaglini@arm.com n1_++, 185313481Sgiacomo.travaglini@arm.com n2_++, 185413481Sgiacomo.travaglini@arm.com n3_++, 185513481Sgiacomo.travaglini@arm.com n4_++); 185613481Sgiacomo.travaglini@arm.com finished_ = true; 185713481Sgiacomo.travaglini@arm.com }, ""); 185813481Sgiacomo.travaglini@arm.com} 185913481Sgiacomo.travaglini@arm.com 186013481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED_FORMAT4 where the 186113481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 186213481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT4Test, FunctorOnUserTypeFailure) { 186313481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 186413481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 186513481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT4(PredFormatFunctor4(), 186613481Sgiacomo.travaglini@arm.com Bool(n1_++), 186713481Sgiacomo.travaglini@arm.com Bool(n2_++), 186813481Sgiacomo.travaglini@arm.com Bool(n3_++), 186913481Sgiacomo.travaglini@arm.com Bool(n4_++)); 187013481Sgiacomo.travaglini@arm.com finished_ = true; 187113481Sgiacomo.travaglini@arm.com }, ""); 187213481Sgiacomo.travaglini@arm.com} 187313481Sgiacomo.travaglini@arm.com// Sample functions/functors for testing 5-ary predicate assertions. 187413481Sgiacomo.travaglini@arm.com 187513481Sgiacomo.travaglini@arm.com// A 5-ary predicate function. 187613481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5> 187713481Sgiacomo.travaglini@arm.combool PredFunction5(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5) { 187813481Sgiacomo.travaglini@arm.com return v1 + v2 + v3 + v4 + v5 > 0; 187913481Sgiacomo.travaglini@arm.com} 188013481Sgiacomo.travaglini@arm.com 188113481Sgiacomo.travaglini@arm.com// The following two functions are needed to circumvent a bug in 188213481Sgiacomo.travaglini@arm.com// gcc 2.95.3, which sometimes has problem with the above template 188313481Sgiacomo.travaglini@arm.com// function. 188413481Sgiacomo.travaglini@arm.combool PredFunction5Int(int v1, int v2, int v3, int v4, int v5) { 188513481Sgiacomo.travaglini@arm.com return v1 + v2 + v3 + v4 + v5 > 0; 188613481Sgiacomo.travaglini@arm.com} 188713481Sgiacomo.travaglini@arm.combool PredFunction5Bool(Bool v1, Bool v2, Bool v3, Bool v4, Bool v5) { 188813481Sgiacomo.travaglini@arm.com return v1 + v2 + v3 + v4 + v5 > 0; 188913481Sgiacomo.travaglini@arm.com} 189013481Sgiacomo.travaglini@arm.com 189113481Sgiacomo.travaglini@arm.com// A 5-ary predicate functor. 189213481Sgiacomo.travaglini@arm.comstruct PredFunctor5 { 189313481Sgiacomo.travaglini@arm.com template <typename T1, typename T2, typename T3, typename T4, typename T5> 189413481Sgiacomo.travaglini@arm.com bool operator()(const T1& v1, 189513481Sgiacomo.travaglini@arm.com const T2& v2, 189613481Sgiacomo.travaglini@arm.com const T3& v3, 189713481Sgiacomo.travaglini@arm.com const T4& v4, 189813481Sgiacomo.travaglini@arm.com const T5& v5) { 189913481Sgiacomo.travaglini@arm.com return v1 + v2 + v3 + v4 + v5 > 0; 190013481Sgiacomo.travaglini@arm.com } 190113481Sgiacomo.travaglini@arm.com}; 190213481Sgiacomo.travaglini@arm.com 190313481Sgiacomo.travaglini@arm.com// A 5-ary predicate-formatter function. 190413481Sgiacomo.travaglini@arm.comtemplate <typename T1, typename T2, typename T3, typename T4, typename T5> 190513481Sgiacomo.travaglini@arm.comtesting::AssertionResult PredFormatFunction5(const char* e1, 190613481Sgiacomo.travaglini@arm.com const char* e2, 190713481Sgiacomo.travaglini@arm.com const char* e3, 190813481Sgiacomo.travaglini@arm.com const char* e4, 190913481Sgiacomo.travaglini@arm.com const char* e5, 191013481Sgiacomo.travaglini@arm.com const T1& v1, 191113481Sgiacomo.travaglini@arm.com const T2& v2, 191213481Sgiacomo.travaglini@arm.com const T3& v3, 191313481Sgiacomo.travaglini@arm.com const T4& v4, 191413481Sgiacomo.travaglini@arm.com const T5& v5) { 191513481Sgiacomo.travaglini@arm.com if (PredFunction5(v1, v2, v3, v4, v5)) 191613481Sgiacomo.travaglini@arm.com return testing::AssertionSuccess(); 191713481Sgiacomo.travaglini@arm.com 191813481Sgiacomo.travaglini@arm.com return testing::AssertionFailure() 191913481Sgiacomo.travaglini@arm.com << e1 << " + " << e2 << " + " << e3 << " + " << e4 << " + " << e5 192013481Sgiacomo.travaglini@arm.com << " is expected to be positive, but evaluates to " 192113481Sgiacomo.travaglini@arm.com << v1 + v2 + v3 + v4 + v5 << "."; 192213481Sgiacomo.travaglini@arm.com} 192313481Sgiacomo.travaglini@arm.com 192413481Sgiacomo.travaglini@arm.com// A 5-ary predicate-formatter functor. 192513481Sgiacomo.travaglini@arm.comstruct PredFormatFunctor5 { 192613481Sgiacomo.travaglini@arm.com template <typename T1, typename T2, typename T3, typename T4, typename T5> 192713481Sgiacomo.travaglini@arm.com testing::AssertionResult operator()(const char* e1, 192813481Sgiacomo.travaglini@arm.com const char* e2, 192913481Sgiacomo.travaglini@arm.com const char* e3, 193013481Sgiacomo.travaglini@arm.com const char* e4, 193113481Sgiacomo.travaglini@arm.com const char* e5, 193213481Sgiacomo.travaglini@arm.com const T1& v1, 193313481Sgiacomo.travaglini@arm.com const T2& v2, 193413481Sgiacomo.travaglini@arm.com const T3& v3, 193513481Sgiacomo.travaglini@arm.com const T4& v4, 193613481Sgiacomo.travaglini@arm.com const T5& v5) const { 193713481Sgiacomo.travaglini@arm.com return PredFormatFunction5(e1, e2, e3, e4, e5, v1, v2, v3, v4, v5); 193813481Sgiacomo.travaglini@arm.com } 193913481Sgiacomo.travaglini@arm.com}; 194013481Sgiacomo.travaglini@arm.com 194113481Sgiacomo.travaglini@arm.com// Tests for {EXPECT|ASSERT}_PRED_FORMAT5. 194213481Sgiacomo.travaglini@arm.com 194313481Sgiacomo.travaglini@arm.comclass Predicate5Test : public testing::Test { 194413481Sgiacomo.travaglini@arm.com protected: 194513481Sgiacomo.travaglini@arm.com virtual void SetUp() { 194613481Sgiacomo.travaglini@arm.com expected_to_finish_ = true; 194713481Sgiacomo.travaglini@arm.com finished_ = false; 194813481Sgiacomo.travaglini@arm.com n1_ = n2_ = n3_ = n4_ = n5_ = 0; 194913481Sgiacomo.travaglini@arm.com } 195013481Sgiacomo.travaglini@arm.com 195113481Sgiacomo.travaglini@arm.com virtual void TearDown() { 195213481Sgiacomo.travaglini@arm.com // Verifies that each of the predicate's arguments was evaluated 195313481Sgiacomo.travaglini@arm.com // exactly once. 195413481Sgiacomo.travaglini@arm.com EXPECT_EQ(1, n1_) << 195513481Sgiacomo.travaglini@arm.com "The predicate assertion didn't evaluate argument 2 " 195613481Sgiacomo.travaglini@arm.com "exactly once."; 195713481Sgiacomo.travaglini@arm.com EXPECT_EQ(1, n2_) << 195813481Sgiacomo.travaglini@arm.com "The predicate assertion didn't evaluate argument 3 " 195913481Sgiacomo.travaglini@arm.com "exactly once."; 196013481Sgiacomo.travaglini@arm.com EXPECT_EQ(1, n3_) << 196113481Sgiacomo.travaglini@arm.com "The predicate assertion didn't evaluate argument 4 " 196213481Sgiacomo.travaglini@arm.com "exactly once."; 196313481Sgiacomo.travaglini@arm.com EXPECT_EQ(1, n4_) << 196413481Sgiacomo.travaglini@arm.com "The predicate assertion didn't evaluate argument 5 " 196513481Sgiacomo.travaglini@arm.com "exactly once."; 196613481Sgiacomo.travaglini@arm.com EXPECT_EQ(1, n5_) << 196713481Sgiacomo.travaglini@arm.com "The predicate assertion didn't evaluate argument 6 " 196813481Sgiacomo.travaglini@arm.com "exactly once."; 196913481Sgiacomo.travaglini@arm.com 197013481Sgiacomo.travaglini@arm.com // Verifies that the control flow in the test function is expected. 197113481Sgiacomo.travaglini@arm.com if (expected_to_finish_ && !finished_) { 197213481Sgiacomo.travaglini@arm.com FAIL() << "The predicate assertion unexpactedly aborted the test."; 197313481Sgiacomo.travaglini@arm.com } else if (!expected_to_finish_ && finished_) { 197413481Sgiacomo.travaglini@arm.com FAIL() << "The failed predicate assertion didn't abort the test " 197513481Sgiacomo.travaglini@arm.com "as expected."; 197613481Sgiacomo.travaglini@arm.com } 197713481Sgiacomo.travaglini@arm.com } 197813481Sgiacomo.travaglini@arm.com 197913481Sgiacomo.travaglini@arm.com // true iff the test function is expected to run to finish. 198013481Sgiacomo.travaglini@arm.com static bool expected_to_finish_; 198113481Sgiacomo.travaglini@arm.com 198213481Sgiacomo.travaglini@arm.com // true iff the test function did run to finish. 198313481Sgiacomo.travaglini@arm.com static bool finished_; 198413481Sgiacomo.travaglini@arm.com 198513481Sgiacomo.travaglini@arm.com static int n1_; 198613481Sgiacomo.travaglini@arm.com static int n2_; 198713481Sgiacomo.travaglini@arm.com static int n3_; 198813481Sgiacomo.travaglini@arm.com static int n4_; 198913481Sgiacomo.travaglini@arm.com static int n5_; 199013481Sgiacomo.travaglini@arm.com}; 199113481Sgiacomo.travaglini@arm.com 199213481Sgiacomo.travaglini@arm.combool Predicate5Test::expected_to_finish_; 199313481Sgiacomo.travaglini@arm.combool Predicate5Test::finished_; 199413481Sgiacomo.travaglini@arm.comint Predicate5Test::n1_; 199513481Sgiacomo.travaglini@arm.comint Predicate5Test::n2_; 199613481Sgiacomo.travaglini@arm.comint Predicate5Test::n3_; 199713481Sgiacomo.travaglini@arm.comint Predicate5Test::n4_; 199813481Sgiacomo.travaglini@arm.comint Predicate5Test::n5_; 199913481Sgiacomo.travaglini@arm.com 200013481Sgiacomo.travaglini@arm.comtypedef Predicate5Test EXPECT_PRED_FORMAT5Test; 200113481Sgiacomo.travaglini@arm.comtypedef Predicate5Test ASSERT_PRED_FORMAT5Test; 200213481Sgiacomo.travaglini@arm.comtypedef Predicate5Test EXPECT_PRED5Test; 200313481Sgiacomo.travaglini@arm.comtypedef Predicate5Test ASSERT_PRED5Test; 200413481Sgiacomo.travaglini@arm.com 200513481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED5 where the 200613481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 200713481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED5Test, FunctionOnBuiltInTypeSuccess) { 200813481Sgiacomo.travaglini@arm.com EXPECT_PRED5(PredFunction5Int, 200913481Sgiacomo.travaglini@arm.com ++n1_, 201013481Sgiacomo.travaglini@arm.com ++n2_, 201113481Sgiacomo.travaglini@arm.com ++n3_, 201213481Sgiacomo.travaglini@arm.com ++n4_, 201313481Sgiacomo.travaglini@arm.com ++n5_); 201413481Sgiacomo.travaglini@arm.com finished_ = true; 201513481Sgiacomo.travaglini@arm.com} 201613481Sgiacomo.travaglini@arm.com 201713481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED5 where the 201813481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 201913481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED5Test, FunctionOnUserTypeSuccess) { 202013481Sgiacomo.travaglini@arm.com EXPECT_PRED5(PredFunction5Bool, 202113481Sgiacomo.travaglini@arm.com Bool(++n1_), 202213481Sgiacomo.travaglini@arm.com Bool(++n2_), 202313481Sgiacomo.travaglini@arm.com Bool(++n3_), 202413481Sgiacomo.travaglini@arm.com Bool(++n4_), 202513481Sgiacomo.travaglini@arm.com Bool(++n5_)); 202613481Sgiacomo.travaglini@arm.com finished_ = true; 202713481Sgiacomo.travaglini@arm.com} 202813481Sgiacomo.travaglini@arm.com 202913481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED5 where the 203013481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 203113481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED5Test, FunctorOnBuiltInTypeSuccess) { 203213481Sgiacomo.travaglini@arm.com EXPECT_PRED5(PredFunctor5(), 203313481Sgiacomo.travaglini@arm.com ++n1_, 203413481Sgiacomo.travaglini@arm.com ++n2_, 203513481Sgiacomo.travaglini@arm.com ++n3_, 203613481Sgiacomo.travaglini@arm.com ++n4_, 203713481Sgiacomo.travaglini@arm.com ++n5_); 203813481Sgiacomo.travaglini@arm.com finished_ = true; 203913481Sgiacomo.travaglini@arm.com} 204013481Sgiacomo.travaglini@arm.com 204113481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED5 where the 204213481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 204313481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED5Test, FunctorOnUserTypeSuccess) { 204413481Sgiacomo.travaglini@arm.com EXPECT_PRED5(PredFunctor5(), 204513481Sgiacomo.travaglini@arm.com Bool(++n1_), 204613481Sgiacomo.travaglini@arm.com Bool(++n2_), 204713481Sgiacomo.travaglini@arm.com Bool(++n3_), 204813481Sgiacomo.travaglini@arm.com Bool(++n4_), 204913481Sgiacomo.travaglini@arm.com Bool(++n5_)); 205013481Sgiacomo.travaglini@arm.com finished_ = true; 205113481Sgiacomo.travaglini@arm.com} 205213481Sgiacomo.travaglini@arm.com 205313481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED5 where the 205413481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 205513481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED5Test, FunctionOnBuiltInTypeFailure) { 205613481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 205713481Sgiacomo.travaglini@arm.com EXPECT_PRED5(PredFunction5Int, 205813481Sgiacomo.travaglini@arm.com n1_++, 205913481Sgiacomo.travaglini@arm.com n2_++, 206013481Sgiacomo.travaglini@arm.com n3_++, 206113481Sgiacomo.travaglini@arm.com n4_++, 206213481Sgiacomo.travaglini@arm.com n5_++); 206313481Sgiacomo.travaglini@arm.com finished_ = true; 206413481Sgiacomo.travaglini@arm.com }, ""); 206513481Sgiacomo.travaglini@arm.com} 206613481Sgiacomo.travaglini@arm.com 206713481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED5 where the 206813481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 206913481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED5Test, FunctionOnUserTypeFailure) { 207013481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 207113481Sgiacomo.travaglini@arm.com EXPECT_PRED5(PredFunction5Bool, 207213481Sgiacomo.travaglini@arm.com Bool(n1_++), 207313481Sgiacomo.travaglini@arm.com Bool(n2_++), 207413481Sgiacomo.travaglini@arm.com Bool(n3_++), 207513481Sgiacomo.travaglini@arm.com Bool(n4_++), 207613481Sgiacomo.travaglini@arm.com Bool(n5_++)); 207713481Sgiacomo.travaglini@arm.com finished_ = true; 207813481Sgiacomo.travaglini@arm.com }, ""); 207913481Sgiacomo.travaglini@arm.com} 208013481Sgiacomo.travaglini@arm.com 208113481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED5 where the 208213481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 208313481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED5Test, FunctorOnBuiltInTypeFailure) { 208413481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 208513481Sgiacomo.travaglini@arm.com EXPECT_PRED5(PredFunctor5(), 208613481Sgiacomo.travaglini@arm.com n1_++, 208713481Sgiacomo.travaglini@arm.com n2_++, 208813481Sgiacomo.travaglini@arm.com n3_++, 208913481Sgiacomo.travaglini@arm.com n4_++, 209013481Sgiacomo.travaglini@arm.com n5_++); 209113481Sgiacomo.travaglini@arm.com finished_ = true; 209213481Sgiacomo.travaglini@arm.com }, ""); 209313481Sgiacomo.travaglini@arm.com} 209413481Sgiacomo.travaglini@arm.com 209513481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED5 where the 209613481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 209713481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED5Test, FunctorOnUserTypeFailure) { 209813481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 209913481Sgiacomo.travaglini@arm.com EXPECT_PRED5(PredFunctor5(), 210013481Sgiacomo.travaglini@arm.com Bool(n1_++), 210113481Sgiacomo.travaglini@arm.com Bool(n2_++), 210213481Sgiacomo.travaglini@arm.com Bool(n3_++), 210313481Sgiacomo.travaglini@arm.com Bool(n4_++), 210413481Sgiacomo.travaglini@arm.com Bool(n5_++)); 210513481Sgiacomo.travaglini@arm.com finished_ = true; 210613481Sgiacomo.travaglini@arm.com }, ""); 210713481Sgiacomo.travaglini@arm.com} 210813481Sgiacomo.travaglini@arm.com 210913481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED5 where the 211013481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 211113481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED5Test, FunctionOnBuiltInTypeSuccess) { 211213481Sgiacomo.travaglini@arm.com ASSERT_PRED5(PredFunction5Int, 211313481Sgiacomo.travaglini@arm.com ++n1_, 211413481Sgiacomo.travaglini@arm.com ++n2_, 211513481Sgiacomo.travaglini@arm.com ++n3_, 211613481Sgiacomo.travaglini@arm.com ++n4_, 211713481Sgiacomo.travaglini@arm.com ++n5_); 211813481Sgiacomo.travaglini@arm.com finished_ = true; 211913481Sgiacomo.travaglini@arm.com} 212013481Sgiacomo.travaglini@arm.com 212113481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED5 where the 212213481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 212313481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED5Test, FunctionOnUserTypeSuccess) { 212413481Sgiacomo.travaglini@arm.com ASSERT_PRED5(PredFunction5Bool, 212513481Sgiacomo.travaglini@arm.com Bool(++n1_), 212613481Sgiacomo.travaglini@arm.com Bool(++n2_), 212713481Sgiacomo.travaglini@arm.com Bool(++n3_), 212813481Sgiacomo.travaglini@arm.com Bool(++n4_), 212913481Sgiacomo.travaglini@arm.com Bool(++n5_)); 213013481Sgiacomo.travaglini@arm.com finished_ = true; 213113481Sgiacomo.travaglini@arm.com} 213213481Sgiacomo.travaglini@arm.com 213313481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED5 where the 213413481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 213513481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED5Test, FunctorOnBuiltInTypeSuccess) { 213613481Sgiacomo.travaglini@arm.com ASSERT_PRED5(PredFunctor5(), 213713481Sgiacomo.travaglini@arm.com ++n1_, 213813481Sgiacomo.travaglini@arm.com ++n2_, 213913481Sgiacomo.travaglini@arm.com ++n3_, 214013481Sgiacomo.travaglini@arm.com ++n4_, 214113481Sgiacomo.travaglini@arm.com ++n5_); 214213481Sgiacomo.travaglini@arm.com finished_ = true; 214313481Sgiacomo.travaglini@arm.com} 214413481Sgiacomo.travaglini@arm.com 214513481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED5 where the 214613481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 214713481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED5Test, FunctorOnUserTypeSuccess) { 214813481Sgiacomo.travaglini@arm.com ASSERT_PRED5(PredFunctor5(), 214913481Sgiacomo.travaglini@arm.com Bool(++n1_), 215013481Sgiacomo.travaglini@arm.com Bool(++n2_), 215113481Sgiacomo.travaglini@arm.com Bool(++n3_), 215213481Sgiacomo.travaglini@arm.com Bool(++n4_), 215313481Sgiacomo.travaglini@arm.com Bool(++n5_)); 215413481Sgiacomo.travaglini@arm.com finished_ = true; 215513481Sgiacomo.travaglini@arm.com} 215613481Sgiacomo.travaglini@arm.com 215713481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED5 where the 215813481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 215913481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED5Test, FunctionOnBuiltInTypeFailure) { 216013481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 216113481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 216213481Sgiacomo.travaglini@arm.com ASSERT_PRED5(PredFunction5Int, 216313481Sgiacomo.travaglini@arm.com n1_++, 216413481Sgiacomo.travaglini@arm.com n2_++, 216513481Sgiacomo.travaglini@arm.com n3_++, 216613481Sgiacomo.travaglini@arm.com n4_++, 216713481Sgiacomo.travaglini@arm.com n5_++); 216813481Sgiacomo.travaglini@arm.com finished_ = true; 216913481Sgiacomo.travaglini@arm.com }, ""); 217013481Sgiacomo.travaglini@arm.com} 217113481Sgiacomo.travaglini@arm.com 217213481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED5 where the 217313481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 217413481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED5Test, FunctionOnUserTypeFailure) { 217513481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 217613481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 217713481Sgiacomo.travaglini@arm.com ASSERT_PRED5(PredFunction5Bool, 217813481Sgiacomo.travaglini@arm.com Bool(n1_++), 217913481Sgiacomo.travaglini@arm.com Bool(n2_++), 218013481Sgiacomo.travaglini@arm.com Bool(n3_++), 218113481Sgiacomo.travaglini@arm.com Bool(n4_++), 218213481Sgiacomo.travaglini@arm.com Bool(n5_++)); 218313481Sgiacomo.travaglini@arm.com finished_ = true; 218413481Sgiacomo.travaglini@arm.com }, ""); 218513481Sgiacomo.travaglini@arm.com} 218613481Sgiacomo.travaglini@arm.com 218713481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED5 where the 218813481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 218913481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED5Test, FunctorOnBuiltInTypeFailure) { 219013481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 219113481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 219213481Sgiacomo.travaglini@arm.com ASSERT_PRED5(PredFunctor5(), 219313481Sgiacomo.travaglini@arm.com n1_++, 219413481Sgiacomo.travaglini@arm.com n2_++, 219513481Sgiacomo.travaglini@arm.com n3_++, 219613481Sgiacomo.travaglini@arm.com n4_++, 219713481Sgiacomo.travaglini@arm.com n5_++); 219813481Sgiacomo.travaglini@arm.com finished_ = true; 219913481Sgiacomo.travaglini@arm.com }, ""); 220013481Sgiacomo.travaglini@arm.com} 220113481Sgiacomo.travaglini@arm.com 220213481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED5 where the 220313481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 220413481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED5Test, FunctorOnUserTypeFailure) { 220513481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 220613481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 220713481Sgiacomo.travaglini@arm.com ASSERT_PRED5(PredFunctor5(), 220813481Sgiacomo.travaglini@arm.com Bool(n1_++), 220913481Sgiacomo.travaglini@arm.com Bool(n2_++), 221013481Sgiacomo.travaglini@arm.com Bool(n3_++), 221113481Sgiacomo.travaglini@arm.com Bool(n4_++), 221213481Sgiacomo.travaglini@arm.com Bool(n5_++)); 221313481Sgiacomo.travaglini@arm.com finished_ = true; 221413481Sgiacomo.travaglini@arm.com }, ""); 221513481Sgiacomo.travaglini@arm.com} 221613481Sgiacomo.travaglini@arm.com 221713481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED_FORMAT5 where the 221813481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 221913481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT5Test, FunctionOnBuiltInTypeSuccess) { 222013481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT5(PredFormatFunction5, 222113481Sgiacomo.travaglini@arm.com ++n1_, 222213481Sgiacomo.travaglini@arm.com ++n2_, 222313481Sgiacomo.travaglini@arm.com ++n3_, 222413481Sgiacomo.travaglini@arm.com ++n4_, 222513481Sgiacomo.travaglini@arm.com ++n5_); 222613481Sgiacomo.travaglini@arm.com finished_ = true; 222713481Sgiacomo.travaglini@arm.com} 222813481Sgiacomo.travaglini@arm.com 222913481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED_FORMAT5 where the 223013481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 223113481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT5Test, FunctionOnUserTypeSuccess) { 223213481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT5(PredFormatFunction5, 223313481Sgiacomo.travaglini@arm.com Bool(++n1_), 223413481Sgiacomo.travaglini@arm.com Bool(++n2_), 223513481Sgiacomo.travaglini@arm.com Bool(++n3_), 223613481Sgiacomo.travaglini@arm.com Bool(++n4_), 223713481Sgiacomo.travaglini@arm.com Bool(++n5_)); 223813481Sgiacomo.travaglini@arm.com finished_ = true; 223913481Sgiacomo.travaglini@arm.com} 224013481Sgiacomo.travaglini@arm.com 224113481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED_FORMAT5 where the 224213481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 224313481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT5Test, FunctorOnBuiltInTypeSuccess) { 224413481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT5(PredFormatFunctor5(), 224513481Sgiacomo.travaglini@arm.com ++n1_, 224613481Sgiacomo.travaglini@arm.com ++n2_, 224713481Sgiacomo.travaglini@arm.com ++n3_, 224813481Sgiacomo.travaglini@arm.com ++n4_, 224913481Sgiacomo.travaglini@arm.com ++n5_); 225013481Sgiacomo.travaglini@arm.com finished_ = true; 225113481Sgiacomo.travaglini@arm.com} 225213481Sgiacomo.travaglini@arm.com 225313481Sgiacomo.travaglini@arm.com// Tests a successful EXPECT_PRED_FORMAT5 where the 225413481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 225513481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT5Test, FunctorOnUserTypeSuccess) { 225613481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT5(PredFormatFunctor5(), 225713481Sgiacomo.travaglini@arm.com Bool(++n1_), 225813481Sgiacomo.travaglini@arm.com Bool(++n2_), 225913481Sgiacomo.travaglini@arm.com Bool(++n3_), 226013481Sgiacomo.travaglini@arm.com Bool(++n4_), 226113481Sgiacomo.travaglini@arm.com Bool(++n5_)); 226213481Sgiacomo.travaglini@arm.com finished_ = true; 226313481Sgiacomo.travaglini@arm.com} 226413481Sgiacomo.travaglini@arm.com 226513481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED_FORMAT5 where the 226613481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 226713481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT5Test, FunctionOnBuiltInTypeFailure) { 226813481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 226913481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT5(PredFormatFunction5, 227013481Sgiacomo.travaglini@arm.com n1_++, 227113481Sgiacomo.travaglini@arm.com n2_++, 227213481Sgiacomo.travaglini@arm.com n3_++, 227313481Sgiacomo.travaglini@arm.com n4_++, 227413481Sgiacomo.travaglini@arm.com n5_++); 227513481Sgiacomo.travaglini@arm.com finished_ = true; 227613481Sgiacomo.travaglini@arm.com }, ""); 227713481Sgiacomo.travaglini@arm.com} 227813481Sgiacomo.travaglini@arm.com 227913481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED_FORMAT5 where the 228013481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 228113481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT5Test, FunctionOnUserTypeFailure) { 228213481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 228313481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT5(PredFormatFunction5, 228413481Sgiacomo.travaglini@arm.com Bool(n1_++), 228513481Sgiacomo.travaglini@arm.com Bool(n2_++), 228613481Sgiacomo.travaglini@arm.com Bool(n3_++), 228713481Sgiacomo.travaglini@arm.com Bool(n4_++), 228813481Sgiacomo.travaglini@arm.com Bool(n5_++)); 228913481Sgiacomo.travaglini@arm.com finished_ = true; 229013481Sgiacomo.travaglini@arm.com }, ""); 229113481Sgiacomo.travaglini@arm.com} 229213481Sgiacomo.travaglini@arm.com 229313481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED_FORMAT5 where the 229413481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 229513481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT5Test, FunctorOnBuiltInTypeFailure) { 229613481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 229713481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT5(PredFormatFunctor5(), 229813481Sgiacomo.travaglini@arm.com n1_++, 229913481Sgiacomo.travaglini@arm.com n2_++, 230013481Sgiacomo.travaglini@arm.com n3_++, 230113481Sgiacomo.travaglini@arm.com n4_++, 230213481Sgiacomo.travaglini@arm.com n5_++); 230313481Sgiacomo.travaglini@arm.com finished_ = true; 230413481Sgiacomo.travaglini@arm.com }, ""); 230513481Sgiacomo.travaglini@arm.com} 230613481Sgiacomo.travaglini@arm.com 230713481Sgiacomo.travaglini@arm.com// Tests a failed EXPECT_PRED_FORMAT5 where the 230813481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 230913481Sgiacomo.travaglini@arm.comTEST_F(EXPECT_PRED_FORMAT5Test, FunctorOnUserTypeFailure) { 231013481Sgiacomo.travaglini@arm.com EXPECT_NONFATAL_FAILURE({ // NOLINT 231113481Sgiacomo.travaglini@arm.com EXPECT_PRED_FORMAT5(PredFormatFunctor5(), 231213481Sgiacomo.travaglini@arm.com Bool(n1_++), 231313481Sgiacomo.travaglini@arm.com Bool(n2_++), 231413481Sgiacomo.travaglini@arm.com Bool(n3_++), 231513481Sgiacomo.travaglini@arm.com Bool(n4_++), 231613481Sgiacomo.travaglini@arm.com Bool(n5_++)); 231713481Sgiacomo.travaglini@arm.com finished_ = true; 231813481Sgiacomo.travaglini@arm.com }, ""); 231913481Sgiacomo.travaglini@arm.com} 232013481Sgiacomo.travaglini@arm.com 232113481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED_FORMAT5 where the 232213481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 232313481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT5Test, FunctionOnBuiltInTypeSuccess) { 232413481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT5(PredFormatFunction5, 232513481Sgiacomo.travaglini@arm.com ++n1_, 232613481Sgiacomo.travaglini@arm.com ++n2_, 232713481Sgiacomo.travaglini@arm.com ++n3_, 232813481Sgiacomo.travaglini@arm.com ++n4_, 232913481Sgiacomo.travaglini@arm.com ++n5_); 233013481Sgiacomo.travaglini@arm.com finished_ = true; 233113481Sgiacomo.travaglini@arm.com} 233213481Sgiacomo.travaglini@arm.com 233313481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED_FORMAT5 where the 233413481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 233513481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT5Test, FunctionOnUserTypeSuccess) { 233613481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT5(PredFormatFunction5, 233713481Sgiacomo.travaglini@arm.com Bool(++n1_), 233813481Sgiacomo.travaglini@arm.com Bool(++n2_), 233913481Sgiacomo.travaglini@arm.com Bool(++n3_), 234013481Sgiacomo.travaglini@arm.com Bool(++n4_), 234113481Sgiacomo.travaglini@arm.com Bool(++n5_)); 234213481Sgiacomo.travaglini@arm.com finished_ = true; 234313481Sgiacomo.travaglini@arm.com} 234413481Sgiacomo.travaglini@arm.com 234513481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED_FORMAT5 where the 234613481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 234713481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT5Test, FunctorOnBuiltInTypeSuccess) { 234813481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT5(PredFormatFunctor5(), 234913481Sgiacomo.travaglini@arm.com ++n1_, 235013481Sgiacomo.travaglini@arm.com ++n2_, 235113481Sgiacomo.travaglini@arm.com ++n3_, 235213481Sgiacomo.travaglini@arm.com ++n4_, 235313481Sgiacomo.travaglini@arm.com ++n5_); 235413481Sgiacomo.travaglini@arm.com finished_ = true; 235513481Sgiacomo.travaglini@arm.com} 235613481Sgiacomo.travaglini@arm.com 235713481Sgiacomo.travaglini@arm.com// Tests a successful ASSERT_PRED_FORMAT5 where the 235813481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 235913481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT5Test, FunctorOnUserTypeSuccess) { 236013481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT5(PredFormatFunctor5(), 236113481Sgiacomo.travaglini@arm.com Bool(++n1_), 236213481Sgiacomo.travaglini@arm.com Bool(++n2_), 236313481Sgiacomo.travaglini@arm.com Bool(++n3_), 236413481Sgiacomo.travaglini@arm.com Bool(++n4_), 236513481Sgiacomo.travaglini@arm.com Bool(++n5_)); 236613481Sgiacomo.travaglini@arm.com finished_ = true; 236713481Sgiacomo.travaglini@arm.com} 236813481Sgiacomo.travaglini@arm.com 236913481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED_FORMAT5 where the 237013481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a built-in type (int). 237113481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT5Test, FunctionOnBuiltInTypeFailure) { 237213481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 237313481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 237413481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT5(PredFormatFunction5, 237513481Sgiacomo.travaglini@arm.com n1_++, 237613481Sgiacomo.travaglini@arm.com n2_++, 237713481Sgiacomo.travaglini@arm.com n3_++, 237813481Sgiacomo.travaglini@arm.com n4_++, 237913481Sgiacomo.travaglini@arm.com n5_++); 238013481Sgiacomo.travaglini@arm.com finished_ = true; 238113481Sgiacomo.travaglini@arm.com }, ""); 238213481Sgiacomo.travaglini@arm.com} 238313481Sgiacomo.travaglini@arm.com 238413481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED_FORMAT5 where the 238513481Sgiacomo.travaglini@arm.com// predicate-formatter is a function on a user-defined type (Bool). 238613481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT5Test, FunctionOnUserTypeFailure) { 238713481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 238813481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 238913481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT5(PredFormatFunction5, 239013481Sgiacomo.travaglini@arm.com Bool(n1_++), 239113481Sgiacomo.travaglini@arm.com Bool(n2_++), 239213481Sgiacomo.travaglini@arm.com Bool(n3_++), 239313481Sgiacomo.travaglini@arm.com Bool(n4_++), 239413481Sgiacomo.travaglini@arm.com Bool(n5_++)); 239513481Sgiacomo.travaglini@arm.com finished_ = true; 239613481Sgiacomo.travaglini@arm.com }, ""); 239713481Sgiacomo.travaglini@arm.com} 239813481Sgiacomo.travaglini@arm.com 239913481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED_FORMAT5 where the 240013481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a built-in type (int). 240113481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT5Test, FunctorOnBuiltInTypeFailure) { 240213481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 240313481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 240413481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT5(PredFormatFunctor5(), 240513481Sgiacomo.travaglini@arm.com n1_++, 240613481Sgiacomo.travaglini@arm.com n2_++, 240713481Sgiacomo.travaglini@arm.com n3_++, 240813481Sgiacomo.travaglini@arm.com n4_++, 240913481Sgiacomo.travaglini@arm.com n5_++); 241013481Sgiacomo.travaglini@arm.com finished_ = true; 241113481Sgiacomo.travaglini@arm.com }, ""); 241213481Sgiacomo.travaglini@arm.com} 241313481Sgiacomo.travaglini@arm.com 241413481Sgiacomo.travaglini@arm.com// Tests a failed ASSERT_PRED_FORMAT5 where the 241513481Sgiacomo.travaglini@arm.com// predicate-formatter is a functor on a user-defined type (Bool). 241613481Sgiacomo.travaglini@arm.comTEST_F(ASSERT_PRED_FORMAT5Test, FunctorOnUserTypeFailure) { 241713481Sgiacomo.travaglini@arm.com expected_to_finish_ = false; 241813481Sgiacomo.travaglini@arm.com EXPECT_FATAL_FAILURE({ // NOLINT 241913481Sgiacomo.travaglini@arm.com ASSERT_PRED_FORMAT5(PredFormatFunctor5(), 242013481Sgiacomo.travaglini@arm.com Bool(n1_++), 242113481Sgiacomo.travaglini@arm.com Bool(n2_++), 242213481Sgiacomo.travaglini@arm.com Bool(n3_++), 242313481Sgiacomo.travaglini@arm.com Bool(n4_++), 242413481Sgiacomo.travaglini@arm.com Bool(n5_++)); 242513481Sgiacomo.travaglini@arm.com finished_ = true; 242613481Sgiacomo.travaglini@arm.com }, ""); 242713481Sgiacomo.travaglini@arm.com} 2428