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