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