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