• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //
2 // Copyright (C) 2012 The Android Open Source Project
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 //      http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 //
16 
17 #include "shill/mock_log.h"
18 
19 #include <gmock/gmock.h>
20 #include <gtest/gtest.h>
21 
22 #include "shill/logging.h"
23 
24 
25 using ::std::string;
26 using ::testing::_;
27 
28 namespace shill {
29 
30 namespace Logging {
31 static auto kModuleLogScope = ScopeLogger::kManager;
ObjectID(testing::Test * m)32 static string ObjectID(testing::Test* m) { return "(mock_log_test)"; }
33 }
34 
35 class MockLogTest : public testing::Test {
36  protected:
MockLogTest()37   MockLogTest() {}
38 
LogSomething(const string & message) const39   void LogSomething(const string& message) const {
40     LOG(INFO) << message;
41   }
SlogSomething(testing::Test * t,const string & message) const42   void SlogSomething(testing::Test* t, const string& message) const {
43     ScopeLogger::GetInstance()->EnableScopesByName("manager");
44     ScopeLogger::GetInstance()->set_verbose_level(2);
45     SLOG(t, 2) << message;
46     ScopeLogger::GetInstance()->EnableScopesByName("-manager");
47     ScopeLogger::GetInstance()->set_verbose_level(0);
48   }
49 };
50 
TEST_F(MockLogTest,MatchMessageOnly)51 TEST_F(MockLogTest, MatchMessageOnly) {
52   ScopedMockLog log;
53   const string kMessage("Something");
54   EXPECT_CALL(log, Log(_, _, kMessage));
55   LogSomething(kMessage);
56 }
57 
TEST_F(MockLogTest,MatchSeverityAndMessage)58 TEST_F(MockLogTest, MatchSeverityAndMessage) {
59   ScopedMockLog log;
60   const string kMessage("Something");
61   EXPECT_CALL(log, Log(logging::LOG_INFO, _, kMessage));
62   LogSomething(kMessage);
63 }
64 
TEST_F(MockLogTest,MatchSeverityAndFileAndMessage)65 TEST_F(MockLogTest, MatchSeverityAndFileAndMessage) {
66   ScopedMockLog log;
67   const string kMessage("Something");
68   EXPECT_CALL(log, Log(logging::LOG_INFO,
69               ::testing::EndsWith("mock_log_unittest.cc"), kMessage));
70   LogSomething(kMessage);
71 }
72 
TEST_F(MockLogTest,MatchEmptyString)73 TEST_F(MockLogTest, MatchEmptyString) {
74   ScopedMockLog log;
75   const string kMessage("");
76   EXPECT_CALL(log, Log(_, _, kMessage));
77   LogSomething(kMessage);
78 }
79 
TEST_F(MockLogTest,MatchMessageContainsBracketAndNewline)80 TEST_F(MockLogTest, MatchMessageContainsBracketAndNewline) {
81   ScopedMockLog log;
82   const string kMessage("blah [and more blah] \n yet more blah\n\n\n");
83   EXPECT_CALL(log, Log(_, _, kMessage));
84   LogSomething(kMessage);
85 }
86 
TEST_F(MockLogTest,MatchSlog)87 TEST_F(MockLogTest, MatchSlog) {
88   ScopedMockLog log;
89   const string kMessage("Something");
90   const string kLogMessage("(anon) Something");
91   EXPECT_CALL(log, Log(_, _, kLogMessage));
92   SlogSomething(nullptr, kMessage);
93 }
94 
TEST_F(MockLogTest,MatchSlogWithObject)95 TEST_F(MockLogTest, MatchSlogWithObject) {
96   ScopedMockLog log;
97   const string kMessage("Something");
98   const string kLogMessage("(mock_log_test) Something");
99   EXPECT_CALL(log, Log(_, _, kLogMessage));
100   SlogSomething(this, kMessage);
101 }
102 
TEST_F(MockLogTest,MatchWithGmockMatchers)103 TEST_F(MockLogTest, MatchWithGmockMatchers) {
104   ScopedMockLog log;
105   const string kMessage("Something");
106   EXPECT_CALL(log, Log(::testing::Lt(::logging::LOG_ERROR),
107                        ::testing::EndsWith(".cc"),
108                        ::testing::StartsWith("Some")));
109   LogSomething(kMessage);
110 }
111 
112 }  // namespace shill
113