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 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
180 // in release mode. | 180 // in release mode. |
181 DLOG_IF(INFO, debug_only_variable) << "test"; | 181 DLOG_IF(INFO, debug_only_variable) << "test"; |
182 DLOG_ASSERT(debug_only_variable) << "test"; | 182 DLOG_ASSERT(debug_only_variable) << "test"; |
183 DPLOG_IF(INFO, debug_only_variable) << "test"; | 183 DPLOG_IF(INFO, debug_only_variable) << "test"; |
184 DVLOG_IF(1, debug_only_variable) << "test"; | 184 DVLOG_IF(1, debug_only_variable) << "test"; |
185 } | 185 } |
186 | 186 |
187 TEST_F(LoggingTest, DcheckStreamsAreLazy) { | 187 TEST_F(LoggingTest, DcheckStreamsAreLazy) { |
188 MockLogSource mock_log_source; | 188 MockLogSource mock_log_source; |
189 EXPECT_CALL(mock_log_source, Log()).Times(0); | 189 EXPECT_CALL(mock_log_source, Log()).Times(0); |
190 #if DCHECK_IS_ON | 190 #if DCHECK_IS_ON() |
191 DCHECK(true) << mock_log_source.Log(); | 191 DCHECK(true) << mock_log_source.Log(); |
192 DCHECK_EQ(0, 0) << mock_log_source.Log(); | 192 DCHECK_EQ(0, 0) << mock_log_source.Log(); |
193 #else | 193 #else |
194 DCHECK(mock_log_source.Log()) << mock_log_source.Log(); | 194 DCHECK(mock_log_source.Log()) << mock_log_source.Log(); |
195 DPCHECK(mock_log_source.Log()) << mock_log_source.Log(); | 195 DPCHECK(mock_log_source.Log()) << mock_log_source.Log(); |
196 DCHECK_EQ(0, 0) << mock_log_source.Log(); | 196 DCHECK_EQ(0, 0) << mock_log_source.Log(); |
197 DCHECK_EQ(mock_log_source.Log(), static_cast<const char*>(NULL)) | 197 DCHECK_EQ(mock_log_source.Log(), static_cast<const char*>(NULL)) |
198 << mock_log_source.Log(); | 198 << mock_log_source.Log(); |
199 #endif | 199 #endif |
200 } | 200 } |
201 | 201 |
202 TEST_F(LoggingTest, Dcheck) { | 202 TEST_F(LoggingTest, Dcheck) { |
203 #if defined(NDEBUG) && !defined(DCHECK_ALWAYS_ON) | 203 #if defined(NDEBUG) && !defined(DCHECK_ALWAYS_ON) |
204 // Release build. | 204 // Release build. |
205 EXPECT_FALSE(DCHECK_IS_ON); | 205 EXPECT_FALSE(DCHECK_IS_ON()); |
206 EXPECT_FALSE(DLOG_IS_ON(DCHECK)); | 206 EXPECT_FALSE(DLOG_IS_ON(DCHECK)); |
207 #elif defined(NDEBUG) && defined(DCHECK_ALWAYS_ON) | 207 #elif defined(NDEBUG) && defined(DCHECK_ALWAYS_ON) |
208 // Release build with real DCHECKS. | 208 // Release build with real DCHECKS. |
209 SetLogAssertHandler(&LogSink); | 209 SetLogAssertHandler(&LogSink); |
210 EXPECT_TRUE(DCHECK_IS_ON); | 210 EXPECT_TRUE(DCHECK_IS_ON()); |
211 EXPECT_FALSE(DLOG_IS_ON(DCHECK)); | 211 EXPECT_FALSE(DLOG_IS_ON(DCHECK)); |
212 #else | 212 #else |
213 // Debug build. | 213 // Debug build. |
214 SetLogAssertHandler(&LogSink); | 214 SetLogAssertHandler(&LogSink); |
215 EXPECT_TRUE(DCHECK_IS_ON); | 215 EXPECT_TRUE(DCHECK_IS_ON()); |
216 EXPECT_TRUE(DLOG_IS_ON(DCHECK)); | 216 EXPECT_TRUE(DLOG_IS_ON(DCHECK)); |
217 #endif | 217 #endif |
218 | 218 |
219 EXPECT_EQ(0, log_sink_call_count); | 219 EXPECT_EQ(0, log_sink_call_count); |
220 DCHECK(false); | 220 DCHECK(false); |
221 EXPECT_EQ(DCHECK_IS_ON ? 1 : 0, log_sink_call_count); | 221 EXPECT_EQ(DCHECK_IS_ON() ? 1 : 0, log_sink_call_count); |
222 DPCHECK(false); | 222 DPCHECK(false); |
223 EXPECT_EQ(DCHECK_IS_ON ? 2 : 0, log_sink_call_count); | 223 EXPECT_EQ(DCHECK_IS_ON() ? 2 : 0, log_sink_call_count); |
224 DCHECK_EQ(0, 1); | 224 DCHECK_EQ(0, 1); |
225 EXPECT_EQ(DCHECK_IS_ON ? 3 : 0, log_sink_call_count); | 225 EXPECT_EQ(DCHECK_IS_ON() ? 3 : 0, log_sink_call_count); |
226 } | 226 } |
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 } |
(...skipping 13 matching lines...) Expand all Loading... |
249 std::wstring wstr = L"Hello World"; | 249 std::wstring wstr = L"Hello World"; |
250 std::ostringstream ostr; | 250 std::ostringstream ostr; |
251 ostr << wstr; | 251 ostr << wstr; |
252 EXPECT_EQ("Hello World", ostr.str()); | 252 EXPECT_EQ("Hello World", ostr.str()); |
253 } | 253 } |
254 } // namespace nested_test | 254 } // namespace nested_test |
255 | 255 |
256 } // namespace | 256 } // namespace |
257 | 257 |
258 } // namespace logging | 258 } // namespace logging |
OLD | NEW |