| OLD | NEW |
| (Empty) |
| 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 09/24/2010 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 } | |
| OLD | NEW |