| Index: mojo/public/cpp/environment/tests/logging_unittest.cc
|
| diff --git a/mojo/public/cpp/environment/tests/logging_unittest.cc b/mojo/public/cpp/environment/tests/logging_unittest.cc
|
| index 2afad88aff26f0ca944220f21727e6eff642d868..695a625cb674d66f7b79dd82b738794b80f404c9 100644
|
| --- a/mojo/public/cpp/environment/tests/logging_unittest.cc
|
| +++ b/mojo/public/cpp/environment/tests/logging_unittest.cc
|
| @@ -19,6 +19,16 @@
|
| namespace mojo {
|
| namespace {
|
|
|
| +class PtrToMemberHelper {
|
| + public:
|
| + int member;
|
| +};
|
| +
|
| +bool DcheckTestHelper(bool* was_called) {
|
| + *was_called = true;
|
| + return false;
|
| +}
|
| +
|
| class LoggingTest : public testing::Test {
|
| public:
|
| LoggingTest() : environment_(NULL, &kMockLogger) {
|
| @@ -169,28 +179,28 @@ TEST_F(LoggingTest, LogStream) {
|
| MOJO_LOG_STREAM(INFO) << "hello";
|
| EXPECT_TRUE(log_message_was_called());
|
| EXPECT_EQ(MOJO_LOG_LEVEL_INFO, last_log_level());
|
| - EXPECT_EQ(ExpectedLogMessage(__LINE__-3, "hello"), last_message());
|
| + EXPECT_EQ(ExpectedLogMessage(__LINE__ - 3, "hello"), last_message());
|
|
|
| ResetMockLogger();
|
|
|
| MOJO_LOG_STREAM(ERROR) << "hi " << 123;
|
| EXPECT_TRUE(log_message_was_called());
|
| EXPECT_EQ(MOJO_LOG_LEVEL_ERROR, last_log_level());
|
| - EXPECT_EQ(ExpectedLogMessage(__LINE__-3, "hi 123"), last_message());
|
| + EXPECT_EQ(ExpectedLogMessage(__LINE__ - 3, "hi 123"), last_message());
|
| }
|
|
|
| TEST_F(LoggingTest, LazyLogStream) {
|
| MOJO_LAZY_LOG_STREAM(INFO, true) << "hello";
|
| EXPECT_TRUE(log_message_was_called());
|
| EXPECT_EQ(MOJO_LOG_LEVEL_INFO, last_log_level());
|
| - EXPECT_EQ(ExpectedLogMessage(__LINE__-3, "hello"), last_message());
|
| + EXPECT_EQ(ExpectedLogMessage(__LINE__ - 3, "hello"), last_message());
|
|
|
| ResetMockLogger();
|
|
|
| MOJO_LAZY_LOG_STREAM(ERROR, true) << "hi " << 123;
|
| EXPECT_TRUE(log_message_was_called());
|
| EXPECT_EQ(MOJO_LOG_LEVEL_ERROR, last_log_level());
|
| - EXPECT_EQ(ExpectedLogMessage(__LINE__-3, "hi 123"), last_message());
|
| + EXPECT_EQ(ExpectedLogMessage(__LINE__ - 3, "hi 123"), last_message());
|
|
|
| ResetMockLogger();
|
|
|
| @@ -204,15 +214,19 @@ TEST_F(LoggingTest, LazyLogStream) {
|
|
|
| ResetMockLogger();
|
|
|
| - bool x = false;
|
| + PtrToMemberHelper helper;
|
| + helper.member = 1;
|
| + int PtrToMemberHelper::*member_ptr = &PtrToMemberHelper::member;
|
| +
|
| // This probably fails to compile if we forget to parenthesize the condition
|
| - // in the macro (= has low precedence, and needs an lvalue on the LHS).
|
| - MOJO_LAZY_LOG_STREAM(ERROR, x = true) << "hello";
|
| + // in the macro (.* has lower precedence than !, which can't apply to
|
| + // |helper|).
|
| + MOJO_LAZY_LOG_STREAM(ERROR, helper.*member_ptr == 1) << "hello";
|
| EXPECT_TRUE(log_message_was_called());
|
|
|
| ResetMockLogger();
|
|
|
| - MOJO_LAZY_LOG_STREAM(WARNING, x = false) << "hello";
|
| + MOJO_LAZY_LOG_STREAM(WARNING, helper.*member_ptr == 0) << "hello";
|
| EXPECT_FALSE(log_message_was_called());
|
| }
|
|
|
| @@ -249,14 +263,14 @@ TEST_F(LoggingTest, Log) {
|
| MOJO_LOG(INFO) << "hello";
|
| EXPECT_TRUE(log_message_was_called());
|
| EXPECT_EQ(MOJO_LOG_LEVEL_INFO, last_log_level());
|
| - EXPECT_EQ(ExpectedLogMessage(__LINE__-3, "hello"), last_message());
|
| + EXPECT_EQ(ExpectedLogMessage(__LINE__ - 3, "hello"), last_message());
|
|
|
| ResetMockLogger();
|
|
|
| MOJO_LOG(ERROR) << "hello";
|
| EXPECT_TRUE(log_message_was_called());
|
| EXPECT_EQ(MOJO_LOG_LEVEL_ERROR, last_log_level());
|
| - EXPECT_EQ(ExpectedLogMessage(__LINE__-3, "hello"), last_message());
|
| + EXPECT_EQ(ExpectedLogMessage(__LINE__ - 3, "hello"), last_message());
|
|
|
| ResetMockLogger();
|
|
|
| @@ -275,7 +289,7 @@ TEST_F(LoggingTest, Log) {
|
| MOJO_LOG(ERROR) << "hello";
|
| EXPECT_TRUE(log_message_was_called());
|
| EXPECT_EQ(MOJO_LOG_LEVEL_ERROR, last_log_level());
|
| - EXPECT_EQ(ExpectedLogMessage(__LINE__-3, "hello"), last_message());
|
| + EXPECT_EQ(ExpectedLogMessage(__LINE__ - 3, "hello"), last_message());
|
| }
|
|
|
| TEST_F(LoggingTest, LogIf) {
|
| @@ -289,43 +303,33 @@ TEST_F(LoggingTest, LogIf) {
|
| EXPECT_FALSE(log_message_was_called());
|
|
|
| ResetMockLogger();
|
| + Environment::GetDefaultLogger()->SetMinimumLogLevel(MOJO_LOG_LEVEL_ERROR);
|
|
|
| - bool x = false;
|
| + bool x = true;
|
| // Also try to make sure that we parenthesize the condition properly.
|
| - MOJO_LOG_IF(INFO, x = true) << "hello";
|
| - EXPECT_TRUE(log_message_was_called());
|
| - EXPECT_EQ(MOJO_LOG_LEVEL_INFO, last_log_level());
|
| - EXPECT_EQ(ExpectedLogMessage(__LINE__-3, "hello"), last_message());
|
| -
|
| - ResetMockLogger();
|
| -
|
| - MOJO_LOG_IF(INFO, x = false) << "hello";
|
| + MOJO_LOG_IF(INFO, false || x) << "hello";
|
| EXPECT_FALSE(log_message_was_called());
|
|
|
| ResetMockLogger();
|
|
|
| - Environment::GetDefaultLogger()->SetMinimumLogLevel(MOJO_LOG_LEVEL_ERROR);
|
| -
|
| - ResetMockLogger();
|
| -
|
| MOJO_LOG_IF(INFO, 0 != 1) << "hello";
|
| EXPECT_FALSE(log_message_was_called());
|
|
|
| ResetMockLogger();
|
|
|
| - MOJO_LOG_IF(WARNING, 1+1 == 2) << "hello";
|
| + MOJO_LOG_IF(WARNING, 1 + 1 == 2) << "hello";
|
| EXPECT_FALSE(log_message_was_called());
|
|
|
| ResetMockLogger();
|
|
|
| - MOJO_LOG_IF(ERROR, 1*2 == 2) << "hello";
|
| + MOJO_LOG_IF(ERROR, 1 * 2 == 2) << "hello";
|
| EXPECT_TRUE(log_message_was_called());
|
| EXPECT_EQ(MOJO_LOG_LEVEL_ERROR, last_log_level());
|
| - EXPECT_EQ(ExpectedLogMessage(__LINE__-3, "hello"), last_message());
|
| + EXPECT_EQ(ExpectedLogMessage(__LINE__ - 3, "hello"), last_message());
|
|
|
| ResetMockLogger();
|
|
|
| - MOJO_LOG_IF(FATAL, 1*2 == 3) << "hello";
|
| + MOJO_LOG_IF(FATAL, 1 * 2 == 3) << "hello";
|
| EXPECT_FALSE(log_message_was_called());
|
|
|
| ResetMockLogger();
|
| @@ -342,21 +346,25 @@ TEST_F(LoggingTest, Check) {
|
|
|
| ResetMockLogger();
|
|
|
| - bool x = true;
|
| + PtrToMemberHelper helper;
|
| + helper.member = 0;
|
| + int PtrToMemberHelper::*member_ptr = &PtrToMemberHelper::member;
|
| +
|
| // Also try to make sure that we parenthesize the condition properly.
|
| - MOJO_CHECK(x = false) << "hello";
|
| + MOJO_CHECK(helper.*member_ptr == 1) << "hello";
|
| EXPECT_TRUE(log_message_was_called());
|
| EXPECT_EQ(MOJO_LOG_LEVEL_FATAL, last_log_level());
|
| // Different compilers have different ideas about the line number of a split
|
| // line.
|
| int line = __LINE__;
|
| - EXPECT_EQ(ExpectedLogMessage(line-5, "Check failed: x = false. hello"),
|
| + EXPECT_EQ(ExpectedLogMessage(line - 5,
|
| + "Check failed: helper.*member_ptr == 1. hello"),
|
| last_message());
|
|
|
| ResetMockLogger();
|
|
|
| // Also test a "naked" |MOJO_CHECK()|s.
|
| - MOJO_CHECK(1+2 == 3);
|
| + MOJO_CHECK(1 + 2 == 3);
|
| EXPECT_FALSE(log_message_was_called());
|
| }
|
|
|
| @@ -373,7 +381,7 @@ TEST_F(LoggingTest, Dlog) {
|
| #else
|
| EXPECT_TRUE(log_message_was_called());
|
| EXPECT_EQ(MOJO_LOG_LEVEL_INFO, last_log_level());
|
| - EXPECT_EQ(ExpectedLogMessage(__LINE__-6, "hello"), last_message());
|
| + EXPECT_EQ(ExpectedLogMessage(__LINE__ - 6, "hello"), last_message());
|
| #endif
|
| }
|
|
|
| @@ -396,7 +404,7 @@ TEST_F(LoggingTest, DlogIf) {
|
| #else
|
| EXPECT_TRUE(log_message_was_called());
|
| EXPECT_EQ(MOJO_LOG_LEVEL_INFO, last_log_level());
|
| - EXPECT_EQ(ExpectedLogMessage(__LINE__-6, "hello"), last_message());
|
| + EXPECT_EQ(ExpectedLogMessage(__LINE__ - 6, "hello"), last_message());
|
| #endif
|
|
|
| ResetMockLogger();
|
| @@ -411,7 +419,7 @@ TEST_F(LoggingTest, DlogIf) {
|
| #else
|
| EXPECT_TRUE(log_message_was_called());
|
| EXPECT_EQ(MOJO_LOG_LEVEL_WARNING, last_log_level());
|
| - EXPECT_EQ(ExpectedLogMessage(__LINE__-6, "hello"), last_message());
|
| + EXPECT_EQ(ExpectedLogMessage(__LINE__ - 6, "hello"), last_message());
|
| #endif
|
| }
|
|
|
| @@ -429,19 +437,30 @@ TEST_F(LoggingTest, Dcheck) {
|
| // |MOJO_DCHECK()| should compile (but not evaluate) its condition even for
|
| // non-debug builds. (Hopefully, we'll get an unused variable error if it
|
| // fails to compile the condition.)
|
| - bool x = true;
|
| - MOJO_DCHECK(x = false) << "hello";
|
| + bool was_called = false;
|
| + MOJO_DCHECK(DcheckTestHelper(&was_called)) << "hello";
|
| #ifdef NDEBUG
|
| + EXPECT_FALSE(was_called);
|
| EXPECT_FALSE(log_message_was_called());
|
| #else
|
| + EXPECT_TRUE(was_called);
|
| EXPECT_TRUE(log_message_was_called());
|
| EXPECT_EQ(MOJO_LOG_LEVEL_FATAL, last_log_level());
|
| // Different compilers have different ideas about the line number of a split
|
| // line.
|
| int line = __LINE__;
|
| - EXPECT_EQ(ExpectedLogMessage(line-8, "Check failed: x = false. hello"),
|
| - last_message());
|
| + EXPECT_EQ(
|
| + ExpectedLogMessage(line - 10,
|
| + "Check failed: DcheckTestHelper(&was_called). hello"),
|
| + last_message());
|
| #endif
|
| +
|
| + ResetMockLogger();
|
| +
|
| + // Also try to make sure that we parenthesize the condition properly.
|
| + bool x = true;
|
| + MOJO_DCHECK(false || x) << "hello";
|
| + EXPECT_FALSE(log_message_was_called());
|
| }
|
|
|
| } // namespace
|
|
|