Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(286)

Side by Side Diff: base/logging_unittest.cc

Issue 3606003: Revert 61127 - Made logging macros evaluate its stream arguments lazily.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « base/logging.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/logging.h"
6
7 #include "testing/gmock/include/gmock/gmock.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9
10 namespace logging {
11
12 namespace {
13
14 using ::testing::Return;
15
16 class LoggingTest : public testing::Test {
17 };
18
19 class MockLogSource {
20 public:
21 MOCK_METHOD0(Log, const char*());
22 };
23
24 TEST_F(LoggingTest, BasicLogging) {
25 MockLogSource mock_log_source;
26 const int kExpectedDebugOrReleaseCalls = 6;
27 const int kExpectedDebugCalls = 6;
28 const int kExpectedCalls =
29 kExpectedDebugOrReleaseCalls + (DEBUG_MODE ? kExpectedDebugCalls : 0);
30 EXPECT_CALL(mock_log_source, Log()).Times(kExpectedCalls).
31 WillRepeatedly(Return("log message"));
32
33 SetMinLogLevel(LOG_INFO);
34
35 EXPECT_TRUE(LOG_IS_ON(INFO));
36 EXPECT_EQ(DEBUG_MODE != 0, DLOG_IS_ON(INFO));
37 EXPECT_TRUE(VLOG_IS_ON(0));
38
39 LOG(INFO) << mock_log_source.Log();
40 LOG_IF(INFO, true) << mock_log_source.Log();
41 PLOG(INFO) << mock_log_source.Log();
42 PLOG_IF(INFO, true) << mock_log_source.Log();
43 VLOG(0) << mock_log_source.Log();
44 VLOG_IF(0, true) << mock_log_source.Log();
45
46 DLOG(INFO) << mock_log_source.Log();
47 DLOG_IF(INFO, true) << mock_log_source.Log();
48 DPLOG(INFO) << mock_log_source.Log();
49 DPLOG_IF(INFO, true) << mock_log_source.Log();
50 DVLOG(0) << mock_log_source.Log();
51 DVLOG_IF(0, true) << mock_log_source.Log();
52 }
53
54 TEST_F(LoggingTest, LoggingIsLazy) {
55 MockLogSource mock_log_source;
56 EXPECT_CALL(mock_log_source, Log()).Times(0);
57
58 SetMinLogLevel(LOG_WARNING);
59
60 EXPECT_FALSE(LOG_IS_ON(INFO));
61 EXPECT_FALSE(DLOG_IS_ON(INFO));
62 EXPECT_FALSE(VLOG_IS_ON(1));
63
64 LOG(INFO) << mock_log_source.Log();
65 LOG_IF(INFO, false) << mock_log_source.Log();
66 PLOG(INFO) << mock_log_source.Log();
67 PLOG_IF(INFO, false) << mock_log_source.Log();
68 VLOG(1) << mock_log_source.Log();
69 VLOG_IF(1, true) << mock_log_source.Log();
70
71 DLOG(INFO) << mock_log_source.Log();
72 DLOG_IF(INFO, true) << mock_log_source.Log();
73 DPLOG(INFO) << mock_log_source.Log();
74 DPLOG_IF(INFO, true) << mock_log_source.Log();
75 DVLOG(1) << mock_log_source.Log();
76 DVLOG_IF(1, true) << mock_log_source.Log();
77 }
78
79 TEST_F(LoggingTest, ChecksAreLazy) {
80 MockLogSource mock_log_source;
81 EXPECT_CALL(mock_log_source, Log()).Times(0);
82
83 SetMinLogLevel(LOG_FATAL + 1);
84 EXPECT_FALSE(LOG_IS_ON(FATAL));
85
86 CHECK(mock_log_source.Log());
87 PCHECK(mock_log_source.Log());
88 CHECK_EQ(mock_log_source.Log(), static_cast<const char*>(NULL))
89 << mock_log_source.Log();
90 }
91
92 TEST_F(LoggingTest, DchecksAreLazy) {
93 MockLogSource mock_log_source;
94 EXPECT_CALL(mock_log_source, Log()).Times(0);
95
96 #if defined(NDEBUG)
97 logging::g_enable_dcheck = false;
98 #else
99 SetMinLogLevel(LOG_FATAL + 1);
100 EXPECT_FALSE(LOG_IS_ON(FATAL));
101 #endif
102 DCHECK(mock_log_source.Log());
103 DPCHECK(mock_log_source.Log());
104 DCHECK_EQ(0, 0) << mock_log_source.Log();
105 DCHECK_EQ(mock_log_source.Log(), static_cast<const char*>(NULL))
106 << mock_log_source.Log();
107 }
108
109 } // namespace
110
111 } // namespace logging
OLDNEW
« no previous file with comments | « base/logging.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698