| 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/logging.h" | 6 #include "base/logging.h" | 
| 7 | 7 | 
| 8 #include "testing/gmock/include/gmock/gmock.h" | 8 #include "testing/gmock/include/gmock/gmock.h" | 
| 9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" | 
| 10 | 10 | 
| (...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 190   // in release mode. | 190   // in release mode. | 
| 191   DLOG_IF(INFO, debug_only_variable) << "test"; | 191   DLOG_IF(INFO, debug_only_variable) << "test"; | 
| 192   DLOG_ASSERT(debug_only_variable) << "test"; | 192   DLOG_ASSERT(debug_only_variable) << "test"; | 
| 193   DPLOG_IF(INFO, debug_only_variable) << "test"; | 193   DPLOG_IF(INFO, debug_only_variable) << "test"; | 
| 194   DVLOG_IF(1, debug_only_variable) << "test"; | 194   DVLOG_IF(1, debug_only_variable) << "test"; | 
| 195 } | 195 } | 
| 196 | 196 | 
| 197 TEST_F(LoggingTest, DcheckStreamsAreLazy) { | 197 TEST_F(LoggingTest, DcheckStreamsAreLazy) { | 
| 198   MockLogSource mock_log_source; | 198   MockLogSource mock_log_source; | 
| 199   EXPECT_CALL(mock_log_source, Log()).Times(0); | 199   EXPECT_CALL(mock_log_source, Log()).Times(0); | 
| 200 | 200 #if !defined(LOGGING_IS_OFFICIAL_BUILD) && defined(NDEBUG) && \ | 
| 201 #if !defined(LOGGING_IS_OFFICIAL_BUILD) && defined(NDEBUG) | 201     !defined(DCHECK_ALWAYS_ON) | 
| 202   // Unofficial release build. | 202   // Unofficial release build without dcheck enabled. | 
| 203   g_dcheck_state = DISABLE_DCHECK_FOR_NON_OFFICIAL_RELEASE_BUILDS; | 203   g_dcheck_state = DISABLE_DCHECK_FOR_NON_OFFICIAL_RELEASE_BUILDS; | 
| 204   DCHECK(mock_log_source.Log()) << mock_log_source.Log(); | 204   DCHECK(mock_log_source.Log()) << mock_log_source.Log(); | 
| 205   DPCHECK(mock_log_source.Log()) << mock_log_source.Log(); | 205   DPCHECK(mock_log_source.Log()) << mock_log_source.Log(); | 
| 206   DCHECK_EQ(0, 0) << mock_log_source.Log(); | 206   DCHECK_EQ(0, 0) << mock_log_source.Log(); | 
| 207   DCHECK_EQ(mock_log_source.Log(), static_cast<const char*>(NULL)) | 207   DCHECK_EQ(mock_log_source.Log(), static_cast<const char*>(NULL)) | 
| 208       << mock_log_source.Log(); | 208       << mock_log_source.Log(); | 
| 209 #endif  // !defined(LOGGING_IS_OFFICIAL_BUILD) && defined(NDEBUG) | 209 #endif | 
| 210 } | 210 } | 
| 211 | 211 | 
| 212 TEST_F(LoggingTest, Dcheck) { | 212 TEST_F(LoggingTest, Dcheck) { | 
| 213 #if defined(LOGGING_IS_OFFICIAL_BUILD) | 213 #if defined(LOGGING_IS_OFFICIAL_BUILD) | 
| 214   // Official build. | 214   // Official build. | 
| 215   EXPECT_FALSE(DCHECK_IS_ON()); | 215   EXPECT_FALSE(DCHECK_IS_ON()); | 
| 216   EXPECT_FALSE(DLOG_IS_ON(DCHECK)); | 216   EXPECT_FALSE(DLOG_IS_ON(DCHECK)); | 
| 217 #elif defined(NDEBUG) | 217 #elif defined(NDEBUG) && !defined(DCHECK_ALWAYS_ON) | 
| 218   // Unofficial release build. | 218   // Unofficial release build. | 
| 219   g_dcheck_state = ENABLE_DCHECK_FOR_NON_OFFICIAL_RELEASE_BUILDS; | 219   g_dcheck_state = ENABLE_DCHECK_FOR_NON_OFFICIAL_RELEASE_BUILDS; | 
| 220   SetLogReportHandler(&LogSink); | 220   SetLogReportHandler(&LogSink); | 
| 221   EXPECT_TRUE(DCHECK_IS_ON()); | 221   EXPECT_TRUE(DCHECK_IS_ON()); | 
| 222   EXPECT_FALSE(DLOG_IS_ON(DCHECK)); | 222   EXPECT_FALSE(DLOG_IS_ON(DCHECK)); | 
|  | 223 #elif defined(NDEBUG) && defined(DCHECK_ALWAYS_ON) | 
|  | 224   // Unofficial release build with real DCHECKS. | 
|  | 225   g_dcheck_state = ENABLE_DCHECK_FOR_NON_OFFICIAL_RELEASE_BUILDS; | 
|  | 226   SetLogAssertHandler(&LogSink); | 
|  | 227   EXPECT_TRUE(DCHECK_IS_ON()); | 
|  | 228   EXPECT_FALSE(DLOG_IS_ON(DCHECK)); | 
| 223 #else | 229 #else | 
| 224   // Unofficial debug build. | 230   // Unofficial debug build. | 
| 225   SetLogAssertHandler(&LogSink); | 231   SetLogAssertHandler(&LogSink); | 
| 226   EXPECT_TRUE(DCHECK_IS_ON()); | 232   EXPECT_TRUE(DCHECK_IS_ON()); | 
| 227   EXPECT_TRUE(DLOG_IS_ON(DCHECK)); | 233   EXPECT_TRUE(DLOG_IS_ON(DCHECK)); | 
| 228 #endif  // defined(LOGGING_IS_OFFICIAL_BUILD) | 234 #endif  // defined(LOGGING_IS_OFFICIAL_BUILD) | 
| 229 | 235 | 
| 230   EXPECT_EQ(0, log_sink_call_count); | 236   EXPECT_EQ(0, log_sink_call_count); | 
| 231   DCHECK(false); | 237   DCHECK(false); | 
| 232   EXPECT_EQ(DCHECK_IS_ON() ? 1 : 0, log_sink_call_count); | 238   EXPECT_EQ(DCHECK_IS_ON() ? 1 : 0, log_sink_call_count); | 
| 233   DPCHECK(false); | 239   DPCHECK(false); | 
| 234   EXPECT_EQ(DCHECK_IS_ON() ? 2 : 0, log_sink_call_count); | 240   EXPECT_EQ(DCHECK_IS_ON() ? 2 : 0, log_sink_call_count); | 
| 235   DCHECK_EQ(0, 1); | 241   DCHECK_EQ(0, 1); | 
| 236   EXPECT_EQ(DCHECK_IS_ON() ? 3 : 0, log_sink_call_count); | 242   EXPECT_EQ(DCHECK_IS_ON() ? 3 : 0, log_sink_call_count); | 
| 237 } | 243 } | 
| 238 | 244 | 
| 239 TEST_F(LoggingTest, DcheckReleaseBehavior) { | 245 TEST_F(LoggingTest, DcheckReleaseBehavior) { | 
| 240   int some_variable = 1; | 246   int some_variable = 1; | 
| 241   // These should still reference |some_variable| so we don't get | 247   // These should still reference |some_variable| so we don't get | 
| 242   // unused variable warnings. | 248   // unused variable warnings. | 
| 243   DCHECK(some_variable) << "test"; | 249   DCHECK(some_variable) << "test"; | 
| 244   DPCHECK(some_variable) << "test"; | 250   DPCHECK(some_variable) << "test"; | 
| 245   DCHECK_EQ(some_variable, 1) << "test"; | 251   DCHECK_EQ(some_variable, 1) << "test"; | 
| 246 } | 252 } | 
| 247 | 253 | 
| 248 }  // namespace | 254 }  // namespace | 
| 249 | 255 | 
| 250 }  // namespace logging | 256 }  // namespace logging | 
| OLD | NEW | 
|---|