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