Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/basictypes.h" | 5 #include "base/basictypes.h" |
| 6 #include "base/compiler_specific.h" | 6 #include "base/compiler_specific.h" |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 | 8 |
| 9 #include "testing/gmock/include/gmock/gmock.h" | 9 #include "testing/gmock/include/gmock/gmock.h" |
| 10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
| (...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 227 | 227 |
| 228 TEST_F(LoggingTest, DcheckReleaseBehavior) { | 228 TEST_F(LoggingTest, DcheckReleaseBehavior) { |
| 229 int some_variable = 1; | 229 int some_variable = 1; |
| 230 // These should still reference |some_variable| so we don't get | 230 // These should still reference |some_variable| so we don't get |
| 231 // unused variable warnings. | 231 // unused variable warnings. |
| 232 DCHECK(some_variable) << "test"; | 232 DCHECK(some_variable) << "test"; |
| 233 DPCHECK(some_variable) << "test"; | 233 DPCHECK(some_variable) << "test"; |
| 234 DCHECK_EQ(some_variable, 1) << "test"; | 234 DCHECK_EQ(some_variable, 1) << "test"; |
| 235 } | 235 } |
| 236 | 236 |
| 237 TEST_F(LoggingTest, DCheckStatements) { | |
| 238 SetLogAssertHandler(&LogSink); | |
| 239 | |
| 240 EXPECT_EQ(0, log_sink_call_count); | |
| 241 | |
| 242 bool reached = false; | |
|
Sigurður Ásgeirsson
2015/06/25 12:25:09
It's totally opaque what's being tested here and t
erikwright (departed)
2015/07/07 18:30:56
I've updated this particular test case with some s
| |
| 243 if (false) | |
| 244 DCHECK(false); | |
| 245 else | |
| 246 DCHECK(reached = true); | |
| 247 ASSERT_EQ(DCHECK_IS_ON(), reached); | |
| 248 | |
| 249 reached = false; | |
| 250 if (true) | |
| 251 DCHECK(reached = true); | |
| 252 else | |
| 253 DCHECK(false); | |
| 254 ASSERT_EQ(DCHECK_IS_ON(), reached); | |
| 255 | |
| 256 reached = false; | |
| 257 switch (2) { | |
| 258 case 1: | |
| 259 DCHECK(false); | |
| 260 case 2: | |
| 261 DCHECK(reached=true); | |
| 262 default: | |
| 263 break; | |
| 264 } | |
| 265 ASSERT_EQ(DCHECK_IS_ON(), reached); | |
| 266 | |
| 267 // Cases with failing checks. | |
| 268 EXPECT_EQ(0, log_sink_call_count); | |
| 269 | |
| 270 reached = false; | |
| 271 if (false) | |
| 272 DCHECK(reached = true); | |
| 273 else | |
| 274 DCHECK(false); | |
| 275 ASSERT_FALSE(reached); | |
| 276 ASSERT_EQ(DCHECK_IS_ON() ? 1 : 0, log_sink_call_count); | |
| 277 | |
| 278 reached = false; | |
| 279 if (true) | |
| 280 DCHECK(false); | |
| 281 else | |
| 282 DCHECK(reached = true); | |
| 283 ASSERT_FALSE(reached); | |
| 284 ASSERT_EQ(DCHECK_IS_ON() ? 2 : 0, log_sink_call_count); | |
| 285 | |
| 286 reached = false; | |
| 287 switch (2) { | |
| 288 case 1: | |
| 289 DCHECK(reached = true); | |
| 290 case 2: | |
| 291 DCHECK(false); | |
| 292 default: | |
| 293 break; | |
| 294 } | |
| 295 ASSERT_FALSE(reached); | |
| 296 ASSERT_EQ(DCHECK_IS_ON() ? 3 : 0, log_sink_call_count); | |
| 297 } | |
| 298 | |
| 299 TEST_F(LoggingTest, CheckStatements) { | |
| 300 SetLogAssertHandler(&LogSink); | |
| 301 | |
| 302 EXPECT_EQ(0, log_sink_call_count); | |
| 303 | |
| 304 bool reached = false; | |
| 305 if (false) | |
| 306 CHECK(false); | |
| 307 else | |
| 308 CHECK(reached = true); | |
| 309 ASSERT_TRUE(reached); | |
| 310 | |
| 311 reached = false; | |
| 312 if (true) | |
| 313 CHECK(reached = true); | |
| 314 else | |
| 315 CHECK(false); | |
| 316 ASSERT_TRUE(reached); | |
| 317 | |
| 318 reached = false; | |
| 319 switch (2) { | |
| 320 case 1: | |
| 321 CHECK(false); | |
| 322 case 2: | |
| 323 CHECK(reached=true); | |
| 324 default: | |
| 325 break; | |
| 326 } | |
| 327 ASSERT_TRUE(reached); | |
| 328 | |
| 329 // Cases with failing checks. | |
| 330 EXPECT_EQ(0, log_sink_call_count); | |
| 331 | |
| 332 reached = false; | |
| 333 if (false) | |
| 334 CHECK(reached = true); | |
| 335 else | |
| 336 CHECK(false); | |
| 337 ASSERT_FALSE(reached); | |
| 338 ASSERT_EQ(1, log_sink_call_count); | |
| 339 | |
| 340 reached = false; | |
| 341 if (true) | |
| 342 CHECK(false); | |
| 343 else | |
| 344 CHECK(reached = true); | |
| 345 ASSERT_FALSE(reached); | |
| 346 ASSERT_EQ(2, log_sink_call_count); | |
| 347 | |
| 348 reached = false; | |
| 349 switch (2) { | |
| 350 case 1: | |
| 351 CHECK(reached = true); | |
| 352 case 2: | |
| 353 CHECK(false); | |
| 354 default: | |
| 355 break; | |
| 356 } | |
| 357 ASSERT_FALSE(reached); | |
| 358 ASSERT_EQ(3, log_sink_call_count); | |
| 359 } | |
| 360 | |
| 361 TEST_F(LoggingTest, DCheckEqStatements) { | |
| 362 SetLogAssertHandler(&LogSink); | |
| 363 | |
| 364 EXPECT_EQ(0, log_sink_call_count); | |
| 365 | |
| 366 bool reached = false; | |
| 367 if (false) | |
| 368 DCHECK_EQ(false, true); | |
| 369 else | |
| 370 DCHECK_EQ(true, reached = true); | |
| 371 ASSERT_EQ(DCHECK_IS_ON(), reached); | |
| 372 | |
| 373 reached = false; | |
| 374 if (true) | |
| 375 DCHECK_EQ(true, reached = true); | |
| 376 else | |
| 377 DCHECK_EQ(false, true); | |
| 378 ASSERT_EQ(DCHECK_IS_ON(), reached); | |
| 379 | |
| 380 reached = false; | |
| 381 switch (2) { | |
| 382 case 1: | |
| 383 DCHECK_EQ(false, true); | |
| 384 case 2: | |
| 385 DCHECK_EQ(true, reached=true); | |
| 386 default: | |
| 387 break; | |
| 388 } | |
| 389 ASSERT_EQ(DCHECK_IS_ON(), reached); | |
| 390 | |
| 391 // Cases with failing checks. | |
| 392 EXPECT_EQ(0, log_sink_call_count); | |
| 393 | |
| 394 reached = false; | |
| 395 if (false) | |
| 396 DCHECK_EQ(true, reached = true); | |
| 397 else | |
| 398 DCHECK_EQ(false, true); | |
| 399 ASSERT_FALSE(reached); | |
| 400 ASSERT_EQ(DCHECK_IS_ON() ? 1 : 0, log_sink_call_count); | |
| 401 | |
| 402 reached = false; | |
| 403 if (true) | |
| 404 DCHECK_EQ(false, true); | |
| 405 else | |
| 406 DCHECK_EQ(true, reached = true); | |
| 407 ASSERT_FALSE(reached); | |
| 408 ASSERT_EQ(DCHECK_IS_ON() ? 2 : 0, log_sink_call_count); | |
| 409 | |
| 410 reached = false; | |
| 411 switch (2) { | |
| 412 case 1: | |
| 413 DCHECK_EQ(true, reached = true); | |
| 414 case 2: | |
| 415 DCHECK_EQ(false, true); | |
| 416 default: | |
| 417 break; | |
| 418 } | |
| 419 ASSERT_FALSE(reached); | |
| 420 ASSERT_EQ(DCHECK_IS_ON() ? 3 : 0, log_sink_call_count); | |
| 421 } | |
| 422 | |
| 423 TEST_F(LoggingTest, CheckEqStatements) { | |
| 424 SetLogAssertHandler(&LogSink); | |
| 425 | |
| 426 EXPECT_EQ(0, log_sink_call_count); | |
| 427 | |
| 428 bool reached = false; | |
| 429 if (false) | |
| 430 CHECK_EQ(false, true); | |
| 431 else | |
| 432 CHECK_EQ(true, reached = true); | |
| 433 ASSERT_TRUE(reached); | |
| 434 | |
| 435 reached = false; | |
| 436 if (true) | |
| 437 CHECK_EQ(true, reached = true); | |
| 438 else | |
| 439 CHECK_EQ(false, true); | |
| 440 ASSERT_TRUE(reached); | |
| 441 | |
| 442 reached = false; | |
| 443 switch (2) { | |
| 444 case 1: | |
| 445 CHECK_EQ(false, true); | |
| 446 case 2: | |
| 447 CHECK_EQ(true, reached = true); | |
| 448 default: | |
| 449 break; | |
| 450 } | |
| 451 ASSERT_TRUE(reached); | |
| 452 | |
| 453 // Cases with failing checks. | |
| 454 EXPECT_EQ(0, log_sink_call_count); | |
| 455 | |
| 456 reached = false; | |
| 457 if (false) | |
| 458 CHECK_EQ(true, reached = true); | |
| 459 else | |
| 460 CHECK_EQ(false, true); | |
| 461 ASSERT_FALSE(reached); | |
| 462 ASSERT_EQ(1, log_sink_call_count); | |
| 463 | |
| 464 reached = false; | |
| 465 if (true) | |
| 466 CHECK_EQ(false, true); | |
| 467 else | |
| 468 CHECK_EQ(true, reached = true); | |
| 469 ASSERT_FALSE(reached); | |
| 470 ASSERT_EQ(2, log_sink_call_count); | |
| 471 | |
| 472 reached = false; | |
| 473 switch (2) { | |
| 474 case 1: | |
| 475 CHECK_EQ(true, reached = true); | |
| 476 case 2: | |
| 477 CHECK_EQ(false, true); | |
| 478 default: | |
| 479 break; | |
| 480 } | |
| 481 ASSERT_FALSE(reached); | |
| 482 ASSERT_EQ(3, log_sink_call_count); | |
| 483 } | |
| 484 | |
| 485 TEST_F(LoggingTest, LogStatements) { | |
| 486 bool reached = false; | |
| 487 if (true) | |
| 488 LOG(INFO) << "Hello: " << (reached = true); | |
| 489 else | |
| 490 LOG(FATAL) << "Goodbye."; | |
| 491 ASSERT_TRUE(reached); | |
| 492 | |
| 493 reached = false; | |
| 494 if (false) | |
| 495 LOG(FATAL) << "Goodbye."; | |
| 496 else | |
| 497 LOG(INFO) << "Hello: " << (reached = true); | |
| 498 ASSERT_TRUE(reached); | |
| 499 | |
| 500 reached = false; | |
| 501 if (true) | |
| 502 LOG_IF(INFO, reached = true) << "Hello."; | |
| 503 else | |
| 504 LOG_IF(FATAL, true) << "Goodbye."; | |
| 505 ASSERT_TRUE(reached); | |
| 506 | |
| 507 reached = false; | |
| 508 if (false) | |
| 509 LOG_IF(FATAL, true) << "Goodbye."; | |
| 510 else | |
| 511 LOG_IF(INFO, reached = true) << "Hello."; | |
| 512 ASSERT_TRUE(reached); | |
| 513 | |
| 514 reached = false; | |
| 515 if (false) | |
| 516 LOG_IF(FATAL, true) << "Goodbye."; | |
| 517 else | |
| 518 LOG_IF(INFO, false) << "Derp: " << (reached = true); | |
| 519 ASSERT_FALSE(reached); | |
| 520 | |
| 521 reached = false; | |
| 522 if (true) | |
| 523 DLOG(INFO) << "Hello: " << (reached = true); | |
| 524 else | |
| 525 DLOG(FATAL) << "Goodbye."; | |
| 526 ASSERT_EQ(DLOG_IS_ON(INFO), reached); | |
| 527 | |
| 528 reached = false; | |
| 529 if (false) | |
| 530 DLOG(FATAL) << "Goodbye."; | |
| 531 else | |
| 532 DLOG(INFO) << "Hello: " << (reached = true); | |
| 533 ASSERT_EQ(DLOG_IS_ON(INFO), reached); | |
| 534 | |
| 535 reached = false; | |
| 536 if (true) | |
| 537 DLOG_IF(INFO, true) << "Hello: " << (reached = true); | |
| 538 else | |
| 539 DLOG_IF(FATAL, true) << "Goodbye."; | |
| 540 ASSERT_EQ(DLOG_IS_ON(INFO), reached); | |
| 541 | |
| 542 reached = false; | |
| 543 if (false) | |
| 544 DLOG_IF(FATAL, true) << "Goodbye."; | |
| 545 else | |
| 546 DLOG_IF(INFO, true) << "Hello: " << (reached = true); | |
| 547 ASSERT_EQ(DLOG_IS_ON(INFO), reached); | |
| 548 | |
| 549 reached = false; | |
| 550 if (false) | |
| 551 DLOG_IF(FATAL, true) << "Goodbye."; | |
| 552 else | |
| 553 DLOG_IF(INFO, false) << "Derp: " << (reached = true); | |
| 554 ASSERT_FALSE(reached); | |
| 555 } | |
| 556 | |
| 237 // Test that defining an operator<< for a type in a namespace doesn't prevent | 557 // Test that defining an operator<< for a type in a namespace doesn't prevent |
| 238 // other code in that namespace from calling the operator<<(ostream, wstring) | 558 // other code in that namespace from calling the operator<<(ostream, wstring) |
| 239 // defined by logging.h. This can fail if operator<<(ostream, wstring) can't be | 559 // defined by logging.h. This can fail if operator<<(ostream, wstring) can't be |
| 240 // found by ADL, since defining another operator<< prevents name lookup from | 560 // found by ADL, since defining another operator<< prevents name lookup from |
| 241 // looking in the global namespace. | 561 // looking in the global namespace. |
| 242 namespace nested_test { | 562 namespace nested_test { |
| 243 class Streamable {}; | 563 class Streamable {}; |
| 244 ALLOW_UNUSED_TYPE std::ostream& operator<<(std::ostream& out, | 564 ALLOW_UNUSED_TYPE std::ostream& operator<<(std::ostream& out, |
| 245 const Streamable&) { | 565 const Streamable&) { |
| 246 return out << "Streamable"; | 566 return out << "Streamable"; |
| 247 } | 567 } |
| 248 TEST_F(LoggingTest, StreamingWstringFindsCorrectOperator) { | 568 TEST_F(LoggingTest, StreamingWstringFindsCorrectOperator) { |
| 249 std::wstring wstr = L"Hello World"; | 569 std::wstring wstr = L"Hello World"; |
| 250 std::ostringstream ostr; | 570 std::ostringstream ostr; |
| 251 ostr << wstr; | 571 ostr << wstr; |
| 252 EXPECT_EQ("Hello World", ostr.str()); | 572 EXPECT_EQ("Hello World", ostr.str()); |
| 253 } | 573 } |
| 254 } // namespace nested_test | 574 } // namespace nested_test |
| 255 | 575 |
| 256 } // namespace | 576 } // namespace |
| 257 | 577 |
| 258 } // namespace logging | 578 } // namespace logging |
| OLD | NEW |