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 |