1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright 2006, Google Inc. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// All rights reserved. 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Redistribution and use in source and binary forms, with or without 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// modification, are permitted provided that the following conditions are 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// met: 7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// * Redistributions of source code must retain the above copyright 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// notice, this list of conditions and the following disclaimer. 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// * Redistributions in binary form must reproduce the above 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// copyright notice, this list of conditions and the following disclaimer 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// in the documentation and/or other materials provided with the 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// distribution. 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// * Neither the name of Google Inc. nor the names of its 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// contributors may be used to endorse or promote products derived from 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// this software without specific prior written permission. 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 30731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// This file is AUTOMATICALLY GENERATED on 09/24/2010 by command 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// 'gen_gtest_pred_impl.py 5'. DO NOT EDIT BY HAND! 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Regression test for gtest_pred_impl.h 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// This file is generated by a script and quite long. If you intend to 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// learn how Google Test works by reading its unit tests, read 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// gtest_unittest.cc instead. 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// This is intended as a regression test for the Google Test predicate 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// assertions. We compile it as part of the gtest_unittest target 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// only to keep the implementation tidy and compact, as it is quite 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// involved to set up the stage for testing Google Test using Google 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Test itself. 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Currently, gtest_unittest takes ~11 seconds to run in the testing 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// daemon. In the future, if it grows too large and needs much more 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// time to finish, we should consider separating this file into a 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// stand-alone regression test. 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <iostream> 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 52731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "gtest/gtest.h" 53731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "gtest/gtest-spi.h" 54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// A user-defined data type. 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochstruct Bool { 57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch explicit Bool(int val) : value(val != 0) {} 58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool operator>(int n) const { return value > Bool(n).value; } 60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool operator+(const Bool& rhs) const { return Bool(value + rhs.value); } 62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool operator==(const Bool& rhs) const { return value == rhs.value; } 64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool value; 66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Enables Bool to be used in assertions. 69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochstd::ostream& operator<<(std::ostream& os, const Bool& x) { 70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return os << (x.value ? "true" : "false"); 71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Sample functions/functors for testing unary predicate assertions. 74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 75c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// A unary predicate function. 76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtemplate <typename T1> 77c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochbool PredFunction1(T1 v1) { 78c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return v1 > 0; 79c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 80c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 81c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// The following two functions are needed to circumvent a bug in 82c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// gcc 2.95.3, which sometimes has problem with the above template 83c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// function. 84c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochbool PredFunction1Int(int v1) { 85c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return v1 > 0; 86c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 87c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochbool PredFunction1Bool(Bool v1) { 88c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return v1 > 0; 89c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 90c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 91c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// A unary predicate functor. 92c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochstruct PredFunctor1 { 93c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch template <typename T1> 94c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool operator()(const T1& v1) { 95c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return v1 > 0; 96c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 97c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 98c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 99c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// A unary predicate-formatter function. 100c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtemplate <typename T1> 101c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtesting::AssertionResult PredFormatFunction1(const char* e1, 102c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T1& v1) { 103c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (PredFunction1(v1)) 104c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return testing::AssertionSuccess(); 105c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 106731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick return testing::AssertionFailure() 107731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick << e1 108c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch << " is expected to be positive, but evaluates to " 109c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch << v1 << "."; 110c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 111c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 112c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// A unary predicate-formatter functor. 113c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochstruct PredFormatFunctor1 { 114c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch template <typename T1> 115c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch testing::AssertionResult operator()(const char* e1, 116c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T1& v1) const { 117c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return PredFormatFunction1(e1, v1); 118c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 119c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 120c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 121c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests for {EXPECT|ASSERT}_PRED_FORMAT1. 122c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 123c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass Predicate1Test : public testing::Test { 124c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch protected: 125c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void SetUp() { 126c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = true; 127c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = false; 128c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_ = 0; 129c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 130c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 131c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void TearDown() { 132c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Verifies that each of the predicate's arguments was evaluated 133c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // exactly once. 134c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(1, n1_) << 135c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "The predicate assertion didn't evaluate argument 2 " 136c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "exactly once."; 137c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 138c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Verifies that the control flow in the test function is expected. 139c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (expected_to_finish_ && !finished_) { 140c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch FAIL() << "The predicate assertion unexpactedly aborted the test."; 141c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } else if (!expected_to_finish_ && finished_) { 142c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch FAIL() << "The failed predicate assertion didn't abort the test " 143c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "as expected."; 144c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 145c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 146c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 147c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // true iff the test function is expected to run to finish. 148c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static bool expected_to_finish_; 149c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 150c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // true iff the test function did run to finish. 151c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static bool finished_; 152c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 153c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static int n1_; 154c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 155c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 156c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochbool Predicate1Test::expected_to_finish_; 157c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochbool Predicate1Test::finished_; 158c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochint Predicate1Test::n1_; 159c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 160c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtypedef Predicate1Test EXPECT_PRED_FORMAT1Test; 161c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtypedef Predicate1Test ASSERT_PRED_FORMAT1Test; 162c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtypedef Predicate1Test EXPECT_PRED1Test; 163c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtypedef Predicate1Test ASSERT_PRED1Test; 164c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 165c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED1 where the 166c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 167c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED1Test, FunctionOnBuiltInTypeSuccess) { 168c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED1(PredFunction1Int, 169c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_); 170c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 171c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 172c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 173c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED1 where the 174c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 175c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED1Test, FunctionOnUserTypeSuccess) { 176c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED1(PredFunction1Bool, 177c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_)); 178c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 179c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 180c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 181c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED1 where the 182c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 183c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED1Test, FunctorOnBuiltInTypeSuccess) { 184c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED1(PredFunctor1(), 185c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_); 186c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 187c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 188c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 189c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED1 where the 190c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 191c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED1Test, FunctorOnUserTypeSuccess) { 192c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED1(PredFunctor1(), 193c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_)); 194c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 195c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 196c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 197c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED1 where the 198c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 199c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED1Test, FunctionOnBuiltInTypeFailure) { 200c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 201c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED1(PredFunction1Int, 202c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++); 203c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 204c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 205c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 206c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 207c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED1 where the 208c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 209c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED1Test, FunctionOnUserTypeFailure) { 210c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 211c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED1(PredFunction1Bool, 212c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++)); 213c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 214c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 215c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 216c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 217c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED1 where the 218c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 219c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED1Test, FunctorOnBuiltInTypeFailure) { 220c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 221c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED1(PredFunctor1(), 222c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++); 223c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 224c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 225c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 226c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 227c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED1 where the 228c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 229c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED1Test, FunctorOnUserTypeFailure) { 230c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 231c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED1(PredFunctor1(), 232c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++)); 233c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 234c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 235c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 236c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 237c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED1 where the 238c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 239c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED1Test, FunctionOnBuiltInTypeSuccess) { 240c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED1(PredFunction1Int, 241c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_); 242c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 243c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 244c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 245c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED1 where the 246c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 247c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED1Test, FunctionOnUserTypeSuccess) { 248c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED1(PredFunction1Bool, 249c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_)); 250c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 251c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 252c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 253c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED1 where the 254c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 255c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED1Test, FunctorOnBuiltInTypeSuccess) { 256c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED1(PredFunctor1(), 257c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_); 258c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 259c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 260c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 261c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED1 where the 262c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 263c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED1Test, FunctorOnUserTypeSuccess) { 264c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED1(PredFunctor1(), 265c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_)); 266c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 267c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 268c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 269c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED1 where the 270c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 271c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED1Test, FunctionOnBuiltInTypeFailure) { 272c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 273c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 274c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED1(PredFunction1Int, 275c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++); 276c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 277c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 278c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 279c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 280c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED1 where the 281c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 282c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED1Test, FunctionOnUserTypeFailure) { 283c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 284c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 285c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED1(PredFunction1Bool, 286c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++)); 287c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 288c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 289c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 290c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 291c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED1 where the 292c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 293c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED1Test, FunctorOnBuiltInTypeFailure) { 294c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 295c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 296c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED1(PredFunctor1(), 297c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++); 298c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 299c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 300c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 301c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 302c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED1 where the 303c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 304c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED1Test, FunctorOnUserTypeFailure) { 305c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 306c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 307c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED1(PredFunctor1(), 308c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++)); 309c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 310c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 311c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 312c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 313c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED_FORMAT1 where the 314c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 315c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT1Test, FunctionOnBuiltInTypeSuccess) { 316c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT1(PredFormatFunction1, 317c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_); 318c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 319c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 320c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 321c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED_FORMAT1 where the 322c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 323c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT1Test, FunctionOnUserTypeSuccess) { 324c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT1(PredFormatFunction1, 325c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_)); 326c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 327c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 328c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 329c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED_FORMAT1 where the 330c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 331c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT1Test, FunctorOnBuiltInTypeSuccess) { 332c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT1(PredFormatFunctor1(), 333c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_); 334c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 335c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 336c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 337c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED_FORMAT1 where the 338c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 339c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT1Test, FunctorOnUserTypeSuccess) { 340c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT1(PredFormatFunctor1(), 341c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_)); 342c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 343c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 344c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 345c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED_FORMAT1 where the 346c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 347c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT1Test, FunctionOnBuiltInTypeFailure) { 348c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 349c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT1(PredFormatFunction1, 350c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++); 351c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 352c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 353c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 354c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 355c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED_FORMAT1 where the 356c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 357c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT1Test, FunctionOnUserTypeFailure) { 358c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 359c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT1(PredFormatFunction1, 360c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++)); 361c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 362c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 363c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 364c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 365c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED_FORMAT1 where the 366c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 367c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT1Test, FunctorOnBuiltInTypeFailure) { 368c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 369c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT1(PredFormatFunctor1(), 370c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++); 371c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 372c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 373c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 374c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 375c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED_FORMAT1 where the 376c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 377c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT1Test, FunctorOnUserTypeFailure) { 378c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 379c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT1(PredFormatFunctor1(), 380c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++)); 381c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 382c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 383c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 384c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 385c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED_FORMAT1 where the 386c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 387c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT1Test, FunctionOnBuiltInTypeSuccess) { 388c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT1(PredFormatFunction1, 389c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_); 390c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 391c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 392c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 393c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED_FORMAT1 where the 394c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 395c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT1Test, FunctionOnUserTypeSuccess) { 396c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT1(PredFormatFunction1, 397c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_)); 398c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 399c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 400c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 401c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED_FORMAT1 where the 402c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 403c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT1Test, FunctorOnBuiltInTypeSuccess) { 404c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT1(PredFormatFunctor1(), 405c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_); 406c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 407c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 408c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 409c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED_FORMAT1 where the 410c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 411c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT1Test, FunctorOnUserTypeSuccess) { 412c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT1(PredFormatFunctor1(), 413c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_)); 414c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 415c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 416c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 417c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED_FORMAT1 where the 418c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 419c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT1Test, FunctionOnBuiltInTypeFailure) { 420c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 421c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 422c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT1(PredFormatFunction1, 423c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++); 424c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 425c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 426c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 427c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 428c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED_FORMAT1 where the 429c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 430c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT1Test, FunctionOnUserTypeFailure) { 431c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 432c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 433c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT1(PredFormatFunction1, 434c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++)); 435c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 436c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 437c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 438c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 439c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED_FORMAT1 where the 440c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 441c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT1Test, FunctorOnBuiltInTypeFailure) { 442c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 443c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 444c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT1(PredFormatFunctor1(), 445c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++); 446c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 447c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 448c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 449c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 450c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED_FORMAT1 where the 451c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 452c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT1Test, FunctorOnUserTypeFailure) { 453c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 454c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 455c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT1(PredFormatFunctor1(), 456c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++)); 457c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 458c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 459c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 460c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Sample functions/functors for testing binary predicate assertions. 461c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 462c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// A binary predicate function. 463c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtemplate <typename T1, typename T2> 464c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochbool PredFunction2(T1 v1, T2 v2) { 465c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return v1 + v2 > 0; 466c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 467c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 468c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// The following two functions are needed to circumvent a bug in 469c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// gcc 2.95.3, which sometimes has problem with the above template 470c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// function. 471c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochbool PredFunction2Int(int v1, int v2) { 472c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return v1 + v2 > 0; 473c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 474c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochbool PredFunction2Bool(Bool v1, Bool v2) { 475c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return v1 + v2 > 0; 476c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 477c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 478c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// A binary predicate functor. 479c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochstruct PredFunctor2 { 480c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch template <typename T1, typename T2> 481c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool operator()(const T1& v1, 482c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T2& v2) { 483c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return v1 + v2 > 0; 484c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 485c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 486c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 487c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// A binary predicate-formatter function. 488c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtemplate <typename T1, typename T2> 489c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtesting::AssertionResult PredFormatFunction2(const char* e1, 490c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const char* e2, 491c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T1& v1, 492c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T2& v2) { 493c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (PredFunction2(v1, v2)) 494c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return testing::AssertionSuccess(); 495c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 496731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick return testing::AssertionFailure() 497731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick << e1 << " + " << e2 498c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch << " is expected to be positive, but evaluates to " 499c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch << v1 + v2 << "."; 500c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 501c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 502c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// A binary predicate-formatter functor. 503c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochstruct PredFormatFunctor2 { 504c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch template <typename T1, typename T2> 505c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch testing::AssertionResult operator()(const char* e1, 506c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const char* e2, 507c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T1& v1, 508c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T2& v2) const { 509c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return PredFormatFunction2(e1, e2, v1, v2); 510c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 511c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 512c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 513c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests for {EXPECT|ASSERT}_PRED_FORMAT2. 514c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 515c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass Predicate2Test : public testing::Test { 516c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch protected: 517c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void SetUp() { 518c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = true; 519c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = false; 520c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_ = n2_ = 0; 521c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 522c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 523c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void TearDown() { 524c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Verifies that each of the predicate's arguments was evaluated 525c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // exactly once. 526c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(1, n1_) << 527c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "The predicate assertion didn't evaluate argument 2 " 528c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "exactly once."; 529c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(1, n2_) << 530c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "The predicate assertion didn't evaluate argument 3 " 531c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "exactly once."; 532c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 533c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Verifies that the control flow in the test function is expected. 534c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (expected_to_finish_ && !finished_) { 535c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch FAIL() << "The predicate assertion unexpactedly aborted the test."; 536c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } else if (!expected_to_finish_ && finished_) { 537c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch FAIL() << "The failed predicate assertion didn't abort the test " 538c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "as expected."; 539c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 540c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 541c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 542c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // true iff the test function is expected to run to finish. 543c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static bool expected_to_finish_; 544c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 545c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // true iff the test function did run to finish. 546c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static bool finished_; 547c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 548c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static int n1_; 549c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static int n2_; 550c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 551c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 552c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochbool Predicate2Test::expected_to_finish_; 553c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochbool Predicate2Test::finished_; 554c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochint Predicate2Test::n1_; 555c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochint Predicate2Test::n2_; 556c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 557c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtypedef Predicate2Test EXPECT_PRED_FORMAT2Test; 558c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtypedef Predicate2Test ASSERT_PRED_FORMAT2Test; 559c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtypedef Predicate2Test EXPECT_PRED2Test; 560c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtypedef Predicate2Test ASSERT_PRED2Test; 561c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 562c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED2 where the 563c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 564c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED2Test, FunctionOnBuiltInTypeSuccess) { 565c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED2(PredFunction2Int, 566c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_, 567c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n2_); 568c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 569c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 570c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 571c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED2 where the 572c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 573c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED2Test, FunctionOnUserTypeSuccess) { 574c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED2(PredFunction2Bool, 575c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_), 576c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n2_)); 577c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 578c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 579c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 580c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED2 where the 581c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 582c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED2Test, FunctorOnBuiltInTypeSuccess) { 583c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED2(PredFunctor2(), 584c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_, 585c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n2_); 586c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 587c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 588c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 589c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED2 where the 590c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 591c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED2Test, FunctorOnUserTypeSuccess) { 592c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED2(PredFunctor2(), 593c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_), 594c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n2_)); 595c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 596c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 597c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 598c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED2 where the 599c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 600c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED2Test, FunctionOnBuiltInTypeFailure) { 601c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 602c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED2(PredFunction2Int, 603c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++, 604c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n2_++); 605c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 606c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 607c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 608c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 609c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED2 where the 610c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 611c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED2Test, FunctionOnUserTypeFailure) { 612c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 613c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED2(PredFunction2Bool, 614c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++), 615c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n2_++)); 616c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 617c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 618c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 619c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 620c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED2 where the 621c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 622c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED2Test, FunctorOnBuiltInTypeFailure) { 623c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 624c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED2(PredFunctor2(), 625c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++, 626c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n2_++); 627c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 628c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 629c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 630c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 631c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED2 where the 632c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 633c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED2Test, FunctorOnUserTypeFailure) { 634c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 635c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED2(PredFunctor2(), 636c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++), 637c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n2_++)); 638c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 639c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 640c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 641c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 642c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED2 where the 643c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 644c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED2Test, FunctionOnBuiltInTypeSuccess) { 645c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED2(PredFunction2Int, 646c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_, 647c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n2_); 648c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 649c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 650c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 651c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED2 where the 652c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 653c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED2Test, FunctionOnUserTypeSuccess) { 654c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED2(PredFunction2Bool, 655c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_), 656c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n2_)); 657c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 658c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 659c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 660c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED2 where the 661c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 662c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED2Test, FunctorOnBuiltInTypeSuccess) { 663c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED2(PredFunctor2(), 664c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_, 665c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n2_); 666c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 667c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 668c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 669c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED2 where the 670c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 671c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED2Test, FunctorOnUserTypeSuccess) { 672c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED2(PredFunctor2(), 673c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_), 674c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n2_)); 675c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 676c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 677c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 678c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED2 where the 679c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 680c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED2Test, FunctionOnBuiltInTypeFailure) { 681c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 682c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 683c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED2(PredFunction2Int, 684c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++, 685c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n2_++); 686c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 687c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 688c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 689c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 690c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED2 where the 691c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 692c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED2Test, FunctionOnUserTypeFailure) { 693c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 694c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 695c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED2(PredFunction2Bool, 696c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++), 697c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n2_++)); 698c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 699c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 700c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 701c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 702c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED2 where the 703c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 704c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED2Test, FunctorOnBuiltInTypeFailure) { 705c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 706c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 707c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED2(PredFunctor2(), 708c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++, 709c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n2_++); 710c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 711c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 712c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 713c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 714c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED2 where the 715c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 716c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED2Test, FunctorOnUserTypeFailure) { 717c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 718c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 719c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED2(PredFunctor2(), 720c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++), 721c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n2_++)); 722c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 723c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 724c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 725c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 726c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED_FORMAT2 where the 727c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 728c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT2Test, FunctionOnBuiltInTypeSuccess) { 729c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT2(PredFormatFunction2, 730c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_, 731c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n2_); 732c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 733c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 734c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 735c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED_FORMAT2 where the 736c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 737c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT2Test, FunctionOnUserTypeSuccess) { 738c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT2(PredFormatFunction2, 739c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_), 740c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n2_)); 741c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 742c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 743c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 744c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED_FORMAT2 where the 745c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 746c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT2Test, FunctorOnBuiltInTypeSuccess) { 747c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT2(PredFormatFunctor2(), 748c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_, 749c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n2_); 750c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 751c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 752c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 753c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED_FORMAT2 where the 754c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 755c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT2Test, FunctorOnUserTypeSuccess) { 756c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT2(PredFormatFunctor2(), 757c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_), 758c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n2_)); 759c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 760c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 761c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 762c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED_FORMAT2 where the 763c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 764c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT2Test, FunctionOnBuiltInTypeFailure) { 765c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 766c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT2(PredFormatFunction2, 767c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++, 768c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n2_++); 769c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 770c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 771c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 772c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 773c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED_FORMAT2 where the 774c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 775c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT2Test, FunctionOnUserTypeFailure) { 776c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 777c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT2(PredFormatFunction2, 778c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++), 779c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n2_++)); 780c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 781c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 782c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 783c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 784c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED_FORMAT2 where the 785c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 786c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT2Test, FunctorOnBuiltInTypeFailure) { 787c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 788c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT2(PredFormatFunctor2(), 789c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++, 790c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n2_++); 791c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 792c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 793c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 794c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 795c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED_FORMAT2 where the 796c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 797c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT2Test, FunctorOnUserTypeFailure) { 798c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 799c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT2(PredFormatFunctor2(), 800c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++), 801c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n2_++)); 802c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 803c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 804c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 805c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 806c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED_FORMAT2 where the 807c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 808c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT2Test, FunctionOnBuiltInTypeSuccess) { 809c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT2(PredFormatFunction2, 810c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_, 811c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n2_); 812c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 813c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 814c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 815c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED_FORMAT2 where the 816c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 817c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT2Test, FunctionOnUserTypeSuccess) { 818c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT2(PredFormatFunction2, 819c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_), 820c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n2_)); 821c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 822c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 823c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 824c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED_FORMAT2 where the 825c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 826c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT2Test, FunctorOnBuiltInTypeSuccess) { 827c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT2(PredFormatFunctor2(), 828c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_, 829c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n2_); 830c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 831c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 832c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 833c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED_FORMAT2 where the 834c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 835c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT2Test, FunctorOnUserTypeSuccess) { 836c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT2(PredFormatFunctor2(), 837c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_), 838c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n2_)); 839c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 840c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 841c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 842c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED_FORMAT2 where the 843c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 844c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT2Test, FunctionOnBuiltInTypeFailure) { 845c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 846c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 847c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT2(PredFormatFunction2, 848c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++, 849c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n2_++); 850c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 851c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 852c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 853c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 854c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED_FORMAT2 where the 855c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 856c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT2Test, FunctionOnUserTypeFailure) { 857c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 858c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 859c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT2(PredFormatFunction2, 860c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++), 861c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n2_++)); 862c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 863c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 864c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 865c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 866c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED_FORMAT2 where the 867c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 868c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT2Test, FunctorOnBuiltInTypeFailure) { 869c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 870c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 871c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT2(PredFormatFunctor2(), 872c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++, 873c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n2_++); 874c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 875c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 876c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 877c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 878c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED_FORMAT2 where the 879c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 880c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT2Test, FunctorOnUserTypeFailure) { 881c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 882c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 883c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT2(PredFormatFunctor2(), 884c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++), 885c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n2_++)); 886c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 887c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 888c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 889c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Sample functions/functors for testing ternary predicate assertions. 890c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 891c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// A ternary predicate function. 892c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtemplate <typename T1, typename T2, typename T3> 893c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochbool PredFunction3(T1 v1, T2 v2, T3 v3) { 894c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return v1 + v2 + v3 > 0; 895c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 896c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 897c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// The following two functions are needed to circumvent a bug in 898c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// gcc 2.95.3, which sometimes has problem with the above template 899c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// function. 900c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochbool PredFunction3Int(int v1, int v2, int v3) { 901c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return v1 + v2 + v3 > 0; 902c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 903c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochbool PredFunction3Bool(Bool v1, Bool v2, Bool v3) { 904c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return v1 + v2 + v3 > 0; 905c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 906c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 907c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// A ternary predicate functor. 908c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochstruct PredFunctor3 { 909c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch template <typename T1, typename T2, typename T3> 910c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool operator()(const T1& v1, 911c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T2& v2, 912c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T3& v3) { 913c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return v1 + v2 + v3 > 0; 914c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 915c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 916c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 917c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// A ternary predicate-formatter function. 918c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtemplate <typename T1, typename T2, typename T3> 919c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtesting::AssertionResult PredFormatFunction3(const char* e1, 920c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const char* e2, 921c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const char* e3, 922c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T1& v1, 923c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T2& v2, 924c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T3& v3) { 925c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (PredFunction3(v1, v2, v3)) 926c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return testing::AssertionSuccess(); 927c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 928731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick return testing::AssertionFailure() 929731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick << e1 << " + " << e2 << " + " << e3 930c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch << " is expected to be positive, but evaluates to " 931c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch << v1 + v2 + v3 << "."; 932c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 933c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 934c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// A ternary predicate-formatter functor. 935c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochstruct PredFormatFunctor3 { 936c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch template <typename T1, typename T2, typename T3> 937c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch testing::AssertionResult operator()(const char* e1, 938c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const char* e2, 939c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const char* e3, 940c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T1& v1, 941c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T2& v2, 942c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T3& v3) const { 943c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return PredFormatFunction3(e1, e2, e3, v1, v2, v3); 944c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 945c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 946c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 947c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests for {EXPECT|ASSERT}_PRED_FORMAT3. 948c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 949c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass Predicate3Test : public testing::Test { 950c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch protected: 951c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void SetUp() { 952c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = true; 953c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = false; 954c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_ = n2_ = n3_ = 0; 955c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 956c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 957c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void TearDown() { 958c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Verifies that each of the predicate's arguments was evaluated 959c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // exactly once. 960c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(1, n1_) << 961c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "The predicate assertion didn't evaluate argument 2 " 962c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "exactly once."; 963c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(1, n2_) << 964c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "The predicate assertion didn't evaluate argument 3 " 965c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "exactly once."; 966c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(1, n3_) << 967c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "The predicate assertion didn't evaluate argument 4 " 968c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "exactly once."; 969c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 970c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Verifies that the control flow in the test function is expected. 971c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (expected_to_finish_ && !finished_) { 972c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch FAIL() << "The predicate assertion unexpactedly aborted the test."; 973c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } else if (!expected_to_finish_ && finished_) { 974c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch FAIL() << "The failed predicate assertion didn't abort the test " 975c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "as expected."; 976c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 977c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 978c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 979c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // true iff the test function is expected to run to finish. 980c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static bool expected_to_finish_; 981c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 982c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // true iff the test function did run to finish. 983c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static bool finished_; 984c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 985c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static int n1_; 986c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static int n2_; 987c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static int n3_; 988c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 989c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 990c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochbool Predicate3Test::expected_to_finish_; 991c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochbool Predicate3Test::finished_; 992c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochint Predicate3Test::n1_; 993c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochint Predicate3Test::n2_; 994c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochint Predicate3Test::n3_; 995c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 996c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtypedef Predicate3Test EXPECT_PRED_FORMAT3Test; 997c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtypedef Predicate3Test ASSERT_PRED_FORMAT3Test; 998c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtypedef Predicate3Test EXPECT_PRED3Test; 999c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtypedef Predicate3Test ASSERT_PRED3Test; 1000c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1001c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED3 where the 1002c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 1003c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED3Test, FunctionOnBuiltInTypeSuccess) { 1004c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED3(PredFunction3Int, 1005c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_, 1006c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n2_, 1007c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n3_); 1008c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1009c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1010c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1011c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED3 where the 1012c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 1013c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED3Test, FunctionOnUserTypeSuccess) { 1014c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED3(PredFunction3Bool, 1015c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_), 1016c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n2_), 1017c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n3_)); 1018c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1019c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1020c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1021c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED3 where the 1022c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 1023c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED3Test, FunctorOnBuiltInTypeSuccess) { 1024c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED3(PredFunctor3(), 1025c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_, 1026c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n2_, 1027c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n3_); 1028c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1029c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1030c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1031c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED3 where the 1032c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 1033c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED3Test, FunctorOnUserTypeSuccess) { 1034c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED3(PredFunctor3(), 1035c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_), 1036c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n2_), 1037c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n3_)); 1038c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1039c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1040c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1041c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED3 where the 1042c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 1043c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED3Test, FunctionOnBuiltInTypeFailure) { 1044c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 1045c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED3(PredFunction3Int, 1046c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++, 1047c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n2_++, 1048c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n3_++); 1049c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1050c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 1051c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1052c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1053c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED3 where the 1054c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 1055c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED3Test, FunctionOnUserTypeFailure) { 1056c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 1057c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED3(PredFunction3Bool, 1058c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++), 1059c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n2_++), 1060c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n3_++)); 1061c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1062c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 1063c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1064c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1065c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED3 where the 1066c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 1067c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED3Test, FunctorOnBuiltInTypeFailure) { 1068c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 1069c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED3(PredFunctor3(), 1070c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++, 1071c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n2_++, 1072c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n3_++); 1073c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1074c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 1075c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1076c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1077c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED3 where the 1078c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 1079c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED3Test, FunctorOnUserTypeFailure) { 1080c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 1081c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED3(PredFunctor3(), 1082c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++), 1083c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n2_++), 1084c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n3_++)); 1085c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1086c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 1087c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1088c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1089c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED3 where the 1090c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 1091c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED3Test, FunctionOnBuiltInTypeSuccess) { 1092c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED3(PredFunction3Int, 1093c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_, 1094c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n2_, 1095c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n3_); 1096c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1097c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1098c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1099c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED3 where the 1100c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 1101c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED3Test, FunctionOnUserTypeSuccess) { 1102c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED3(PredFunction3Bool, 1103c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_), 1104c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n2_), 1105c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n3_)); 1106c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1107c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1108c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1109c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED3 where the 1110c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 1111c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED3Test, FunctorOnBuiltInTypeSuccess) { 1112c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED3(PredFunctor3(), 1113c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_, 1114c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n2_, 1115c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n3_); 1116c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1117c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1118c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1119c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED3 where the 1120c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 1121c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED3Test, FunctorOnUserTypeSuccess) { 1122c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED3(PredFunctor3(), 1123c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_), 1124c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n2_), 1125c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n3_)); 1126c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1127c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1128c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1129c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED3 where the 1130c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 1131c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED3Test, FunctionOnBuiltInTypeFailure) { 1132c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 1133c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 1134c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED3(PredFunction3Int, 1135c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++, 1136c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n2_++, 1137c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n3_++); 1138c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1139c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 1140c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1141c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1142c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED3 where the 1143c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 1144c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED3Test, FunctionOnUserTypeFailure) { 1145c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 1146c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 1147c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED3(PredFunction3Bool, 1148c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++), 1149c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n2_++), 1150c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n3_++)); 1151c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1152c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 1153c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1154c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1155c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED3 where the 1156c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 1157c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED3Test, FunctorOnBuiltInTypeFailure) { 1158c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 1159c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 1160c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED3(PredFunctor3(), 1161c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++, 1162c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n2_++, 1163c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n3_++); 1164c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1165c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 1166c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1167c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1168c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED3 where the 1169c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 1170c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED3Test, FunctorOnUserTypeFailure) { 1171c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 1172c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 1173c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED3(PredFunctor3(), 1174c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++), 1175c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n2_++), 1176c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n3_++)); 1177c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1178c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 1179c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1180c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1181c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED_FORMAT3 where the 1182c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 1183c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT3Test, FunctionOnBuiltInTypeSuccess) { 1184c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT3(PredFormatFunction3, 1185c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_, 1186c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n2_, 1187c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n3_); 1188c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1189c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1190c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1191c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED_FORMAT3 where the 1192c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 1193c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT3Test, FunctionOnUserTypeSuccess) { 1194c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT3(PredFormatFunction3, 1195c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_), 1196c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n2_), 1197c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n3_)); 1198c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1199c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1200c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1201c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED_FORMAT3 where the 1202c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 1203c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT3Test, FunctorOnBuiltInTypeSuccess) { 1204c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT3(PredFormatFunctor3(), 1205c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_, 1206c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n2_, 1207c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n3_); 1208c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1209c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1210c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1211c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED_FORMAT3 where the 1212c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 1213c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT3Test, FunctorOnUserTypeSuccess) { 1214c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT3(PredFormatFunctor3(), 1215c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_), 1216c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n2_), 1217c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n3_)); 1218c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1219c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1220c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1221c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED_FORMAT3 where the 1222c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 1223c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT3Test, FunctionOnBuiltInTypeFailure) { 1224c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 1225c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT3(PredFormatFunction3, 1226c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++, 1227c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n2_++, 1228c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n3_++); 1229c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1230c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 1231c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1232c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1233c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED_FORMAT3 where the 1234c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 1235c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT3Test, FunctionOnUserTypeFailure) { 1236c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 1237c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT3(PredFormatFunction3, 1238c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++), 1239c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n2_++), 1240c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n3_++)); 1241c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1242c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 1243c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1244c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1245c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED_FORMAT3 where the 1246c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 1247c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT3Test, FunctorOnBuiltInTypeFailure) { 1248c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 1249c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT3(PredFormatFunctor3(), 1250c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++, 1251c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n2_++, 1252c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n3_++); 1253c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1254c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 1255c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1256c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1257c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED_FORMAT3 where the 1258c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 1259c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT3Test, FunctorOnUserTypeFailure) { 1260c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 1261c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT3(PredFormatFunctor3(), 1262c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++), 1263c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n2_++), 1264c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n3_++)); 1265c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1266c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 1267c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1268c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1269c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED_FORMAT3 where the 1270c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 1271c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT3Test, FunctionOnBuiltInTypeSuccess) { 1272c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT3(PredFormatFunction3, 1273c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_, 1274c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n2_, 1275c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n3_); 1276c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1277c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1278c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1279c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED_FORMAT3 where the 1280c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 1281c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT3Test, FunctionOnUserTypeSuccess) { 1282c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT3(PredFormatFunction3, 1283c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_), 1284c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n2_), 1285c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n3_)); 1286c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1287c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1288c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1289c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED_FORMAT3 where the 1290c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 1291c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT3Test, FunctorOnBuiltInTypeSuccess) { 1292c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT3(PredFormatFunctor3(), 1293c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_, 1294c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n2_, 1295c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n3_); 1296c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1297c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1298c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1299c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED_FORMAT3 where the 1300c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 1301c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT3Test, FunctorOnUserTypeSuccess) { 1302c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT3(PredFormatFunctor3(), 1303c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_), 1304c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n2_), 1305c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n3_)); 1306c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1307c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1308c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1309c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED_FORMAT3 where the 1310c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 1311c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT3Test, FunctionOnBuiltInTypeFailure) { 1312c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 1313c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 1314c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT3(PredFormatFunction3, 1315c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++, 1316c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n2_++, 1317c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n3_++); 1318c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1319c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 1320c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1321c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1322c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED_FORMAT3 where the 1323c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 1324c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT3Test, FunctionOnUserTypeFailure) { 1325c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 1326c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 1327c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT3(PredFormatFunction3, 1328c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++), 1329c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n2_++), 1330c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n3_++)); 1331c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1332c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 1333c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1334c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1335c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED_FORMAT3 where the 1336c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 1337c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT3Test, FunctorOnBuiltInTypeFailure) { 1338c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 1339c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 1340c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT3(PredFormatFunctor3(), 1341c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++, 1342c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n2_++, 1343c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n3_++); 1344c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1345c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 1346c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1347c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1348c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED_FORMAT3 where the 1349c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 1350c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT3Test, FunctorOnUserTypeFailure) { 1351c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 1352c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 1353c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT3(PredFormatFunctor3(), 1354c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++), 1355c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n2_++), 1356c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n3_++)); 1357c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1358c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 1359c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1360c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Sample functions/functors for testing 4-ary predicate assertions. 1361c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1362c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// A 4-ary predicate function. 1363c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtemplate <typename T1, typename T2, typename T3, typename T4> 1364c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochbool PredFunction4(T1 v1, T2 v2, T3 v3, T4 v4) { 1365c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return v1 + v2 + v3 + v4 > 0; 1366c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1367c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1368c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// The following two functions are needed to circumvent a bug in 1369c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// gcc 2.95.3, which sometimes has problem with the above template 1370c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// function. 1371c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochbool PredFunction4Int(int v1, int v2, int v3, int v4) { 1372c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return v1 + v2 + v3 + v4 > 0; 1373c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1374c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochbool PredFunction4Bool(Bool v1, Bool v2, Bool v3, Bool v4) { 1375c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return v1 + v2 + v3 + v4 > 0; 1376c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1377c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1378c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// A 4-ary predicate functor. 1379c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochstruct PredFunctor4 { 1380c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch template <typename T1, typename T2, typename T3, typename T4> 1381c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool operator()(const T1& v1, 1382c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T2& v2, 1383c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T3& v3, 1384c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T4& v4) { 1385c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return v1 + v2 + v3 + v4 > 0; 1386c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 1387c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 1388c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1389c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// A 4-ary predicate-formatter function. 1390c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtemplate <typename T1, typename T2, typename T3, typename T4> 1391c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtesting::AssertionResult PredFormatFunction4(const char* e1, 1392c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const char* e2, 1393c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const char* e3, 1394c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const char* e4, 1395c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T1& v1, 1396c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T2& v2, 1397c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T3& v3, 1398c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T4& v4) { 1399c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (PredFunction4(v1, v2, v3, v4)) 1400c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return testing::AssertionSuccess(); 1401c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1402731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick return testing::AssertionFailure() 1403731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick << e1 << " + " << e2 << " + " << e3 << " + " << e4 1404c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch << " is expected to be positive, but evaluates to " 1405c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch << v1 + v2 + v3 + v4 << "."; 1406c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1407c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1408c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// A 4-ary predicate-formatter functor. 1409c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochstruct PredFormatFunctor4 { 1410c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch template <typename T1, typename T2, typename T3, typename T4> 1411c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch testing::AssertionResult operator()(const char* e1, 1412c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const char* e2, 1413c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const char* e3, 1414c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const char* e4, 1415c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T1& v1, 1416c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T2& v2, 1417c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T3& v3, 1418c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T4& v4) const { 1419c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return PredFormatFunction4(e1, e2, e3, e4, v1, v2, v3, v4); 1420c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 1421c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 1422c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1423c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests for {EXPECT|ASSERT}_PRED_FORMAT4. 1424c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1425c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass Predicate4Test : public testing::Test { 1426c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch protected: 1427c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void SetUp() { 1428c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = true; 1429c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = false; 1430c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_ = n2_ = n3_ = n4_ = 0; 1431c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 1432c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1433c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void TearDown() { 1434c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Verifies that each of the predicate's arguments was evaluated 1435c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // exactly once. 1436c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(1, n1_) << 1437c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "The predicate assertion didn't evaluate argument 2 " 1438c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "exactly once."; 1439c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(1, n2_) << 1440c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "The predicate assertion didn't evaluate argument 3 " 1441c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "exactly once."; 1442c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(1, n3_) << 1443c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "The predicate assertion didn't evaluate argument 4 " 1444c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "exactly once."; 1445c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(1, n4_) << 1446c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "The predicate assertion didn't evaluate argument 5 " 1447c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "exactly once."; 1448c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1449c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Verifies that the control flow in the test function is expected. 1450c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (expected_to_finish_ && !finished_) { 1451c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch FAIL() << "The predicate assertion unexpactedly aborted the test."; 1452c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } else if (!expected_to_finish_ && finished_) { 1453c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch FAIL() << "The failed predicate assertion didn't abort the test " 1454c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "as expected."; 1455c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 1456c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 1457c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1458c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // true iff the test function is expected to run to finish. 1459c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static bool expected_to_finish_; 1460c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1461c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // true iff the test function did run to finish. 1462c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static bool finished_; 1463c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1464c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static int n1_; 1465c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static int n2_; 1466c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static int n3_; 1467c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static int n4_; 1468c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 1469c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1470c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochbool Predicate4Test::expected_to_finish_; 1471c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochbool Predicate4Test::finished_; 1472c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochint Predicate4Test::n1_; 1473c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochint Predicate4Test::n2_; 1474c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochint Predicate4Test::n3_; 1475c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochint Predicate4Test::n4_; 1476c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1477c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtypedef Predicate4Test EXPECT_PRED_FORMAT4Test; 1478c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtypedef Predicate4Test ASSERT_PRED_FORMAT4Test; 1479c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtypedef Predicate4Test EXPECT_PRED4Test; 1480c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtypedef Predicate4Test ASSERT_PRED4Test; 1481c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1482c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED4 where the 1483c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 1484c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED4Test, FunctionOnBuiltInTypeSuccess) { 1485c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED4(PredFunction4Int, 1486c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_, 1487c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n2_, 1488c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n3_, 1489c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n4_); 1490c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1491c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1492c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1493c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED4 where the 1494c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 1495c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED4Test, FunctionOnUserTypeSuccess) { 1496c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED4(PredFunction4Bool, 1497c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_), 1498c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n2_), 1499c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n3_), 1500c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n4_)); 1501c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1502c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1503c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1504c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED4 where the 1505c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 1506c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED4Test, FunctorOnBuiltInTypeSuccess) { 1507c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED4(PredFunctor4(), 1508c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_, 1509c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n2_, 1510c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n3_, 1511c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n4_); 1512c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1513c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1514c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1515c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED4 where the 1516c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 1517c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED4Test, FunctorOnUserTypeSuccess) { 1518c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED4(PredFunctor4(), 1519c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_), 1520c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n2_), 1521c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n3_), 1522c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n4_)); 1523c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1524c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1525c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1526c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED4 where the 1527c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 1528c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED4Test, FunctionOnBuiltInTypeFailure) { 1529c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 1530c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED4(PredFunction4Int, 1531c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++, 1532c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n2_++, 1533c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n3_++, 1534c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n4_++); 1535c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1536c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 1537c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1538c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1539c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED4 where the 1540c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 1541c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED4Test, FunctionOnUserTypeFailure) { 1542c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 1543c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED4(PredFunction4Bool, 1544c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++), 1545c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n2_++), 1546c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n3_++), 1547c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n4_++)); 1548c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1549c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 1550c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1551c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1552c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED4 where the 1553c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 1554c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED4Test, FunctorOnBuiltInTypeFailure) { 1555c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 1556c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED4(PredFunctor4(), 1557c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++, 1558c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n2_++, 1559c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n3_++, 1560c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n4_++); 1561c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1562c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 1563c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1564c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1565c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED4 where the 1566c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 1567c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED4Test, FunctorOnUserTypeFailure) { 1568c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 1569c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED4(PredFunctor4(), 1570c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++), 1571c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n2_++), 1572c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n3_++), 1573c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n4_++)); 1574c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1575c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 1576c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1577c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1578c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED4 where the 1579c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 1580c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED4Test, FunctionOnBuiltInTypeSuccess) { 1581c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED4(PredFunction4Int, 1582c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_, 1583c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n2_, 1584c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n3_, 1585c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n4_); 1586c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1587c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1588c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1589c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED4 where the 1590c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 1591c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED4Test, FunctionOnUserTypeSuccess) { 1592c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED4(PredFunction4Bool, 1593c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_), 1594c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n2_), 1595c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n3_), 1596c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n4_)); 1597c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1598c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1599c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1600c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED4 where the 1601c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 1602c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED4Test, FunctorOnBuiltInTypeSuccess) { 1603c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED4(PredFunctor4(), 1604c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_, 1605c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n2_, 1606c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n3_, 1607c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n4_); 1608c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1609c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1610c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1611c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED4 where the 1612c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 1613c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED4Test, FunctorOnUserTypeSuccess) { 1614c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED4(PredFunctor4(), 1615c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_), 1616c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n2_), 1617c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n3_), 1618c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n4_)); 1619c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1620c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1621c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1622c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED4 where the 1623c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 1624c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED4Test, FunctionOnBuiltInTypeFailure) { 1625c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 1626c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 1627c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED4(PredFunction4Int, 1628c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++, 1629c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n2_++, 1630c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n3_++, 1631c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n4_++); 1632c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1633c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 1634c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1635c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1636c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED4 where the 1637c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 1638c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED4Test, FunctionOnUserTypeFailure) { 1639c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 1640c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 1641c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED4(PredFunction4Bool, 1642c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++), 1643c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n2_++), 1644c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n3_++), 1645c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n4_++)); 1646c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1647c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 1648c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1649c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1650c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED4 where the 1651c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 1652c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED4Test, FunctorOnBuiltInTypeFailure) { 1653c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 1654c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 1655c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED4(PredFunctor4(), 1656c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++, 1657c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n2_++, 1658c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n3_++, 1659c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n4_++); 1660c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1661c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 1662c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1663c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1664c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED4 where the 1665c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 1666c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED4Test, FunctorOnUserTypeFailure) { 1667c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 1668c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 1669c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED4(PredFunctor4(), 1670c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++), 1671c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n2_++), 1672c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n3_++), 1673c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n4_++)); 1674c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1675c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 1676c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1677c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1678c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED_FORMAT4 where the 1679c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 1680c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT4Test, FunctionOnBuiltInTypeSuccess) { 1681c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT4(PredFormatFunction4, 1682c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_, 1683c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n2_, 1684c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n3_, 1685c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n4_); 1686c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1687c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1688c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1689c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED_FORMAT4 where the 1690c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 1691c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT4Test, FunctionOnUserTypeSuccess) { 1692c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT4(PredFormatFunction4, 1693c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_), 1694c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n2_), 1695c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n3_), 1696c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n4_)); 1697c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1698c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1699c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1700c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED_FORMAT4 where the 1701c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 1702c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT4Test, FunctorOnBuiltInTypeSuccess) { 1703c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT4(PredFormatFunctor4(), 1704c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_, 1705c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n2_, 1706c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n3_, 1707c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n4_); 1708c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1709c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1710c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1711c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED_FORMAT4 where the 1712c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 1713c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT4Test, FunctorOnUserTypeSuccess) { 1714c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT4(PredFormatFunctor4(), 1715c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_), 1716c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n2_), 1717c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n3_), 1718c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n4_)); 1719c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1720c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1721c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1722c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED_FORMAT4 where the 1723c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 1724c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT4Test, FunctionOnBuiltInTypeFailure) { 1725c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 1726c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT4(PredFormatFunction4, 1727c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++, 1728c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n2_++, 1729c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n3_++, 1730c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n4_++); 1731c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1732c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 1733c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1734c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1735c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED_FORMAT4 where the 1736c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 1737c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT4Test, FunctionOnUserTypeFailure) { 1738c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 1739c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT4(PredFormatFunction4, 1740c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++), 1741c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n2_++), 1742c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n3_++), 1743c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n4_++)); 1744c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1745c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 1746c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1747c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1748c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED_FORMAT4 where the 1749c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 1750c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT4Test, FunctorOnBuiltInTypeFailure) { 1751c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 1752c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT4(PredFormatFunctor4(), 1753c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++, 1754c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n2_++, 1755c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n3_++, 1756c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n4_++); 1757c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1758c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 1759c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1760c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1761c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED_FORMAT4 where the 1762c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 1763c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT4Test, FunctorOnUserTypeFailure) { 1764c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 1765c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT4(PredFormatFunctor4(), 1766c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++), 1767c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n2_++), 1768c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n3_++), 1769c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n4_++)); 1770c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1771c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 1772c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1773c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1774c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED_FORMAT4 where the 1775c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 1776c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT4Test, FunctionOnBuiltInTypeSuccess) { 1777c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT4(PredFormatFunction4, 1778c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_, 1779c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n2_, 1780c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n3_, 1781c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n4_); 1782c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1783c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1784c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1785c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED_FORMAT4 where the 1786c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 1787c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT4Test, FunctionOnUserTypeSuccess) { 1788c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT4(PredFormatFunction4, 1789c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_), 1790c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n2_), 1791c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n3_), 1792c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n4_)); 1793c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1794c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1795c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1796c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED_FORMAT4 where the 1797c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 1798c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT4Test, FunctorOnBuiltInTypeSuccess) { 1799c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT4(PredFormatFunctor4(), 1800c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_, 1801c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n2_, 1802c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n3_, 1803c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n4_); 1804c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1805c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1806c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1807c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED_FORMAT4 where the 1808c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 1809c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT4Test, FunctorOnUserTypeSuccess) { 1810c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT4(PredFormatFunctor4(), 1811c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_), 1812c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n2_), 1813c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n3_), 1814c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n4_)); 1815c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1816c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1817c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1818c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED_FORMAT4 where the 1819c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 1820c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT4Test, FunctionOnBuiltInTypeFailure) { 1821c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 1822c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 1823c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT4(PredFormatFunction4, 1824c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++, 1825c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n2_++, 1826c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n3_++, 1827c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n4_++); 1828c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1829c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 1830c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1831c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1832c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED_FORMAT4 where the 1833c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 1834c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT4Test, FunctionOnUserTypeFailure) { 1835c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 1836c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 1837c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT4(PredFormatFunction4, 1838c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++), 1839c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n2_++), 1840c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n3_++), 1841c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n4_++)); 1842c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1843c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 1844c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1845c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1846c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED_FORMAT4 where the 1847c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 1848c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT4Test, FunctorOnBuiltInTypeFailure) { 1849c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 1850c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 1851c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT4(PredFormatFunctor4(), 1852c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++, 1853c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n2_++, 1854c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n3_++, 1855c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n4_++); 1856c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1857c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 1858c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1859c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1860c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED_FORMAT4 where the 1861c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 1862c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT4Test, FunctorOnUserTypeFailure) { 1863c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 1864c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 1865c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT4(PredFormatFunctor4(), 1866c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++), 1867c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n2_++), 1868c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n3_++), 1869c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n4_++)); 1870c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 1871c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 1872c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1873c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Sample functions/functors for testing 5-ary predicate assertions. 1874c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1875c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// A 5-ary predicate function. 1876c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtemplate <typename T1, typename T2, typename T3, typename T4, typename T5> 1877c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochbool PredFunction5(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5) { 1878c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return v1 + v2 + v3 + v4 + v5 > 0; 1879c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1880c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1881c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// The following two functions are needed to circumvent a bug in 1882c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// gcc 2.95.3, which sometimes has problem with the above template 1883c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// function. 1884c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochbool PredFunction5Int(int v1, int v2, int v3, int v4, int v5) { 1885c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return v1 + v2 + v3 + v4 + v5 > 0; 1886c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1887c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochbool PredFunction5Bool(Bool v1, Bool v2, Bool v3, Bool v4, Bool v5) { 1888c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return v1 + v2 + v3 + v4 + v5 > 0; 1889c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1890c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1891c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// A 5-ary predicate functor. 1892c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochstruct PredFunctor5 { 1893c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch template <typename T1, typename T2, typename T3, typename T4, typename T5> 1894c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool operator()(const T1& v1, 1895c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T2& v2, 1896c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T3& v3, 1897c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T4& v4, 1898c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T5& v5) { 1899c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return v1 + v2 + v3 + v4 + v5 > 0; 1900c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 1901c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 1902c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1903c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// A 5-ary predicate-formatter function. 1904c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtemplate <typename T1, typename T2, typename T3, typename T4, typename T5> 1905c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtesting::AssertionResult PredFormatFunction5(const char* e1, 1906c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const char* e2, 1907c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const char* e3, 1908c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const char* e4, 1909c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const char* e5, 1910c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T1& v1, 1911c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T2& v2, 1912c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T3& v3, 1913c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T4& v4, 1914c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T5& v5) { 1915c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (PredFunction5(v1, v2, v3, v4, v5)) 1916c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return testing::AssertionSuccess(); 1917c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1918731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick return testing::AssertionFailure() 1919731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick << e1 << " + " << e2 << " + " << e3 << " + " << e4 << " + " << e5 1920c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch << " is expected to be positive, but evaluates to " 1921c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch << v1 + v2 + v3 + v4 + v5 << "."; 1922c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1923c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1924c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// A 5-ary predicate-formatter functor. 1925c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochstruct PredFormatFunctor5 { 1926c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch template <typename T1, typename T2, typename T3, typename T4, typename T5> 1927c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch testing::AssertionResult operator()(const char* e1, 1928c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const char* e2, 1929c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const char* e3, 1930c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const char* e4, 1931c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const char* e5, 1932c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T1& v1, 1933c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T2& v2, 1934c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T3& v3, 1935c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T4& v4, 1936c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const T5& v5) const { 1937c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return PredFormatFunction5(e1, e2, e3, e4, e5, v1, v2, v3, v4, v5); 1938c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 1939c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 1940c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1941c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests for {EXPECT|ASSERT}_PRED_FORMAT5. 1942c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1943c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass Predicate5Test : public testing::Test { 1944c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch protected: 1945c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void SetUp() { 1946c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = true; 1947c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = false; 1948c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_ = n2_ = n3_ = n4_ = n5_ = 0; 1949c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 1950c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1951c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void TearDown() { 1952c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Verifies that each of the predicate's arguments was evaluated 1953c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // exactly once. 1954c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(1, n1_) << 1955c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "The predicate assertion didn't evaluate argument 2 " 1956c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "exactly once."; 1957c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(1, n2_) << 1958c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "The predicate assertion didn't evaluate argument 3 " 1959c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "exactly once."; 1960c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(1, n3_) << 1961c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "The predicate assertion didn't evaluate argument 4 " 1962c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "exactly once."; 1963c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(1, n4_) << 1964c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "The predicate assertion didn't evaluate argument 5 " 1965c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "exactly once."; 1966c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(1, n5_) << 1967c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "The predicate assertion didn't evaluate argument 6 " 1968c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "exactly once."; 1969c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1970c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Verifies that the control flow in the test function is expected. 1971c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (expected_to_finish_ && !finished_) { 1972c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch FAIL() << "The predicate assertion unexpactedly aborted the test."; 1973c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } else if (!expected_to_finish_ && finished_) { 1974c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch FAIL() << "The failed predicate assertion didn't abort the test " 1975c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "as expected."; 1976c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 1977c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 1978c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1979c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // true iff the test function is expected to run to finish. 1980c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static bool expected_to_finish_; 1981c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1982c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // true iff the test function did run to finish. 1983c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static bool finished_; 1984c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1985c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static int n1_; 1986c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static int n2_; 1987c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static int n3_; 1988c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static int n4_; 1989c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static int n5_; 1990c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 1991c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1992c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochbool Predicate5Test::expected_to_finish_; 1993c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochbool Predicate5Test::finished_; 1994c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochint Predicate5Test::n1_; 1995c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochint Predicate5Test::n2_; 1996c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochint Predicate5Test::n3_; 1997c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochint Predicate5Test::n4_; 1998c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochint Predicate5Test::n5_; 1999c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2000c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtypedef Predicate5Test EXPECT_PRED_FORMAT5Test; 2001c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtypedef Predicate5Test ASSERT_PRED_FORMAT5Test; 2002c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtypedef Predicate5Test EXPECT_PRED5Test; 2003c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtypedef Predicate5Test ASSERT_PRED5Test; 2004c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2005c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED5 where the 2006c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 2007c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED5Test, FunctionOnBuiltInTypeSuccess) { 2008c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED5(PredFunction5Int, 2009c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_, 2010c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n2_, 2011c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n3_, 2012c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n4_, 2013c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n5_); 2014c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 2015c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 2016c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2017c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED5 where the 2018c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 2019c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED5Test, FunctionOnUserTypeSuccess) { 2020c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED5(PredFunction5Bool, 2021c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_), 2022c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n2_), 2023c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n3_), 2024c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n4_), 2025c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n5_)); 2026c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 2027c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 2028c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2029c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED5 where the 2030c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 2031c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED5Test, FunctorOnBuiltInTypeSuccess) { 2032c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED5(PredFunctor5(), 2033c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_, 2034c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n2_, 2035c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n3_, 2036c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n4_, 2037c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n5_); 2038c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 2039c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 2040c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2041c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED5 where the 2042c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 2043c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED5Test, FunctorOnUserTypeSuccess) { 2044c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED5(PredFunctor5(), 2045c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_), 2046c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n2_), 2047c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n3_), 2048c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n4_), 2049c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n5_)); 2050c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 2051c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 2052c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2053c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED5 where the 2054c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 2055c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED5Test, FunctionOnBuiltInTypeFailure) { 2056c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 2057c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED5(PredFunction5Int, 2058c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++, 2059c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n2_++, 2060c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n3_++, 2061c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n4_++, 2062c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n5_++); 2063c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 2064c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 2065c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 2066c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2067c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED5 where the 2068c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 2069c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED5Test, FunctionOnUserTypeFailure) { 2070c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 2071c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED5(PredFunction5Bool, 2072c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++), 2073c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n2_++), 2074c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n3_++), 2075c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n4_++), 2076c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n5_++)); 2077c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 2078c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 2079c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 2080c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2081c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED5 where the 2082c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 2083c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED5Test, FunctorOnBuiltInTypeFailure) { 2084c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 2085c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED5(PredFunctor5(), 2086c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++, 2087c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n2_++, 2088c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n3_++, 2089c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n4_++, 2090c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n5_++); 2091c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 2092c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 2093c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 2094c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2095c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED5 where the 2096c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 2097c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED5Test, FunctorOnUserTypeFailure) { 2098c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 2099c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED5(PredFunctor5(), 2100c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++), 2101c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n2_++), 2102c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n3_++), 2103c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n4_++), 2104c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n5_++)); 2105c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 2106c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 2107c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 2108c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2109c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED5 where the 2110c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 2111c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED5Test, FunctionOnBuiltInTypeSuccess) { 2112c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED5(PredFunction5Int, 2113c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_, 2114c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n2_, 2115c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n3_, 2116c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n4_, 2117c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n5_); 2118c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 2119c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 2120c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2121c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED5 where the 2122c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 2123c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED5Test, FunctionOnUserTypeSuccess) { 2124c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED5(PredFunction5Bool, 2125c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_), 2126c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n2_), 2127c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n3_), 2128c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n4_), 2129c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n5_)); 2130c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 2131c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 2132c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2133c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED5 where the 2134c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 2135c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED5Test, FunctorOnBuiltInTypeSuccess) { 2136c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED5(PredFunctor5(), 2137c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_, 2138c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n2_, 2139c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n3_, 2140c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n4_, 2141c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n5_); 2142c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 2143c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 2144c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2145c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED5 where the 2146c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 2147c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED5Test, FunctorOnUserTypeSuccess) { 2148c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED5(PredFunctor5(), 2149c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_), 2150c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n2_), 2151c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n3_), 2152c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n4_), 2153c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n5_)); 2154c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 2155c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 2156c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2157c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED5 where the 2158c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 2159c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED5Test, FunctionOnBuiltInTypeFailure) { 2160c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 2161c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 2162c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED5(PredFunction5Int, 2163c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++, 2164c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n2_++, 2165c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n3_++, 2166c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n4_++, 2167c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n5_++); 2168c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 2169c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 2170c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 2171c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2172c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED5 where the 2173c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 2174c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED5Test, FunctionOnUserTypeFailure) { 2175c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 2176c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 2177c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED5(PredFunction5Bool, 2178c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++), 2179c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n2_++), 2180c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n3_++), 2181c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n4_++), 2182c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n5_++)); 2183c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 2184c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 2185c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 2186c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2187c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED5 where the 2188c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 2189c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED5Test, FunctorOnBuiltInTypeFailure) { 2190c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 2191c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 2192c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED5(PredFunctor5(), 2193c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++, 2194c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n2_++, 2195c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n3_++, 2196c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n4_++, 2197c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n5_++); 2198c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 2199c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 2200c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 2201c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2202c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED5 where the 2203c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 2204c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED5Test, FunctorOnUserTypeFailure) { 2205c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 2206c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 2207c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED5(PredFunctor5(), 2208c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++), 2209c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n2_++), 2210c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n3_++), 2211c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n4_++), 2212c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n5_++)); 2213c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 2214c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 2215c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 2216c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2217c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED_FORMAT5 where the 2218c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 2219c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT5Test, FunctionOnBuiltInTypeSuccess) { 2220c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT5(PredFormatFunction5, 2221c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_, 2222c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n2_, 2223c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n3_, 2224c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n4_, 2225c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n5_); 2226c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 2227c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 2228c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2229c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED_FORMAT5 where the 2230c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 2231c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT5Test, FunctionOnUserTypeSuccess) { 2232c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT5(PredFormatFunction5, 2233c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_), 2234c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n2_), 2235c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n3_), 2236c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n4_), 2237c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n5_)); 2238c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 2239c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 2240c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2241c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED_FORMAT5 where the 2242c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 2243c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT5Test, FunctorOnBuiltInTypeSuccess) { 2244c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT5(PredFormatFunctor5(), 2245c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_, 2246c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n2_, 2247c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n3_, 2248c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n4_, 2249c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n5_); 2250c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 2251c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 2252c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2253c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful EXPECT_PRED_FORMAT5 where the 2254c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 2255c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT5Test, FunctorOnUserTypeSuccess) { 2256c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT5(PredFormatFunctor5(), 2257c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_), 2258c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n2_), 2259c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n3_), 2260c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n4_), 2261c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n5_)); 2262c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 2263c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 2264c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2265c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED_FORMAT5 where the 2266c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 2267c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT5Test, FunctionOnBuiltInTypeFailure) { 2268c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 2269c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT5(PredFormatFunction5, 2270c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++, 2271c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n2_++, 2272c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n3_++, 2273c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n4_++, 2274c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n5_++); 2275c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 2276c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 2277c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 2278c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2279c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED_FORMAT5 where the 2280c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 2281c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT5Test, FunctionOnUserTypeFailure) { 2282c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 2283c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT5(PredFormatFunction5, 2284c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++), 2285c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n2_++), 2286c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n3_++), 2287c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n4_++), 2288c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n5_++)); 2289c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 2290c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 2291c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 2292c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2293c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED_FORMAT5 where the 2294c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 2295c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT5Test, FunctorOnBuiltInTypeFailure) { 2296c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 2297c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT5(PredFormatFunctor5(), 2298c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++, 2299c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n2_++, 2300c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n3_++, 2301c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n4_++, 2302c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n5_++); 2303c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 2304c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 2305c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 2306c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2307c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed EXPECT_PRED_FORMAT5 where the 2308c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 2309c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(EXPECT_PRED_FORMAT5Test, FunctorOnUserTypeFailure) { 2310c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NONFATAL_FAILURE({ // NOLINT 2311c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_PRED_FORMAT5(PredFormatFunctor5(), 2312c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++), 2313c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n2_++), 2314c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n3_++), 2315c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n4_++), 2316c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n5_++)); 2317c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 2318c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 2319c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 2320c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2321c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED_FORMAT5 where the 2322c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 2323c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT5Test, FunctionOnBuiltInTypeSuccess) { 2324c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT5(PredFormatFunction5, 2325c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_, 2326c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n2_, 2327c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n3_, 2328c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n4_, 2329c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n5_); 2330c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 2331c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 2332c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2333c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED_FORMAT5 where the 2334c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 2335c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT5Test, FunctionOnUserTypeSuccess) { 2336c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT5(PredFormatFunction5, 2337c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_), 2338c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n2_), 2339c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n3_), 2340c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n4_), 2341c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n5_)); 2342c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 2343c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 2344c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2345c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED_FORMAT5 where the 2346c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 2347c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT5Test, FunctorOnBuiltInTypeSuccess) { 2348c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT5(PredFormatFunctor5(), 2349c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n1_, 2350c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n2_, 2351c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n3_, 2352c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n4_, 2353c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++n5_); 2354c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 2355c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 2356c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2357c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a successful ASSERT_PRED_FORMAT5 where the 2358c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 2359c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT5Test, FunctorOnUserTypeSuccess) { 2360c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT5(PredFormatFunctor5(), 2361c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n1_), 2362c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n2_), 2363c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n3_), 2364c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n4_), 2365c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(++n5_)); 2366c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 2367c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 2368c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2369c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED_FORMAT5 where the 2370c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a built-in type (int). 2371c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT5Test, FunctionOnBuiltInTypeFailure) { 2372c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 2373c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 2374c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT5(PredFormatFunction5, 2375c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++, 2376c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n2_++, 2377c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n3_++, 2378c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n4_++, 2379c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n5_++); 2380c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 2381c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 2382c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 2383c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2384c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED_FORMAT5 where the 2385c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a function on a user-defined type (Bool). 2386c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT5Test, FunctionOnUserTypeFailure) { 2387c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 2388c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 2389c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT5(PredFormatFunction5, 2390c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++), 2391c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n2_++), 2392c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n3_++), 2393c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n4_++), 2394c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n5_++)); 2395c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 2396c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 2397c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 2398c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2399c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED_FORMAT5 where the 2400c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a built-in type (int). 2401c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT5Test, FunctorOnBuiltInTypeFailure) { 2402c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 2403c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 2404c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT5(PredFormatFunctor5(), 2405c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n1_++, 2406c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n2_++, 2407c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n3_++, 2408c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n4_++, 2409c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch n5_++); 2410c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 2411c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 2412c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 2413c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2414c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Tests a failed ASSERT_PRED_FORMAT5 where the 2415c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// predicate-formatter is a functor on a user-defined type (Bool). 2416c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ASSERT_PRED_FORMAT5Test, FunctorOnUserTypeFailure) { 2417c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected_to_finish_ = false; 2418c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FATAL_FAILURE({ // NOLINT 2419c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_PRED_FORMAT5(PredFormatFunctor5(), 2420c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n1_++), 2421c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n2_++), 2422c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n3_++), 2423c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n4_++), 2424c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Bool(n5_++)); 2425c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch finished_ = true; 2426c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, ""); 2427c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 2428