OLD | NEW |
| (Empty) |
1 // Copyright 2014 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 <mojo/environment/logger.h> | |
6 | |
7 #include "gtest/gtest.h" | |
8 #include "mojo/public/cpp/environment/environment.h" | |
9 | |
10 namespace mojo { | |
11 namespace { | |
12 | |
13 std::vector<std::string> g_log_msgs; | |
14 const MojoLogger kTestLogger = { | |
15 [](MojoLogLevel log_level, | |
16 const char* source_file, | |
17 uint32_t source_line, | |
18 const char* message) { g_log_msgs.push_back(message); }, | |
19 []() { return MOJO_LOG_LEVEL_INFO; }, [](MojoLogLevel lvl) {}}; | |
20 | |
21 TEST(LoggerTest, Basic) { | |
22 const char kPath[] = "/fake/path/to/file.cc"; | |
23 | |
24 const MojoLogger* const logger = Environment::GetDefaultLogger(); | |
25 | |
26 logger->LogMessage(MOJO_LOG_LEVEL_VERBOSE - 1, kPath, 123, | |
27 "Logged at VERBOSE-1 level"); | |
28 logger->LogMessage(MOJO_LOG_LEVEL_VERBOSE, kPath, 123, | |
29 "Logged at VERBOSE level"); | |
30 logger->LogMessage(MOJO_LOG_LEVEL_INFO, kPath, 123, "Logged at INFO level"); | |
31 logger->LogMessage(MOJO_LOG_LEVEL_WARNING, kPath, 123, | |
32 "Logged at WARNING level"); | |
33 logger->LogMessage(MOJO_LOG_LEVEL_ERROR, kPath, 123, "Logged at ERROR level"); | |
34 | |
35 // This should kill us: | |
36 EXPECT_DEATH_IF_SUPPORTED({ | |
37 logger->LogMessage(MOJO_LOG_LEVEL_FATAL, kPath, 123, | |
38 "Logged at FATAL level"); | |
39 }, ""); | |
40 } | |
41 | |
42 TEST(LoggerTest, LogLevels) { | |
43 const char kPath[] = "/fake/path/to/file.cc"; | |
44 | |
45 const MojoLogger* const logger = Environment::GetDefaultLogger(); | |
46 | |
47 for (MojoLogLevel log_level = MOJO_LOG_LEVEL_VERBOSE - 1; | |
48 log_level <= MOJO_LOG_LEVEL_FATAL + 1; | |
49 log_level++) { | |
50 logger->SetMinimumLogLevel(log_level); | |
51 | |
52 if (log_level <= MOJO_LOG_LEVEL_FATAL) | |
53 EXPECT_EQ(log_level, logger->GetMinimumLogLevel()); | |
54 else | |
55 EXPECT_EQ(MOJO_LOG_LEVEL_FATAL, logger->GetMinimumLogLevel()); | |
56 | |
57 logger->LogMessage(MOJO_LOG_LEVEL_VERBOSE - 1, kPath, 123, | |
58 "Logged at VERBOSE-1 level"); | |
59 logger->LogMessage(MOJO_LOG_LEVEL_VERBOSE, kPath, 123, | |
60 "Logged at VERBOSE level"); | |
61 logger->LogMessage(MOJO_LOG_LEVEL_INFO, kPath, 123, "Logged at INFO level"); | |
62 logger->LogMessage(MOJO_LOG_LEVEL_WARNING, kPath, 123, | |
63 "Logged at WARNING level"); | |
64 logger->LogMessage(MOJO_LOG_LEVEL_ERROR, kPath, 123, | |
65 "Logged at ERROR level"); | |
66 | |
67 // This should kill us: | |
68 EXPECT_DEATH_IF_SUPPORTED({ | |
69 logger->LogMessage(MOJO_LOG_LEVEL_FATAL, kPath, 123, | |
70 "Logged at FATAL level"); | |
71 }, ""); | |
72 } | |
73 } | |
74 | |
75 TEST(LoggerTest, NoFile) { | |
76 const MojoLogger* const logger = Environment::GetDefaultLogger(); | |
77 | |
78 logger->LogMessage(MOJO_LOG_LEVEL_VERBOSE - 1, nullptr, 0, | |
79 "Logged at VERBOSE-1 level"); | |
80 logger->LogMessage(MOJO_LOG_LEVEL_VERBOSE, nullptr, 0, | |
81 "Logged at VERBOSE level"); | |
82 logger->LogMessage(MOJO_LOG_LEVEL_INFO, nullptr, 0, "Logged at INFO level"); | |
83 logger->LogMessage(MOJO_LOG_LEVEL_WARNING, nullptr, 0, | |
84 "Logged at WARNING level"); | |
85 logger->LogMessage(MOJO_LOG_LEVEL_ERROR, nullptr, 0, "Logged at ERROR level"); | |
86 | |
87 // This should kill us: | |
88 EXPECT_DEATH_IF_SUPPORTED({ | |
89 logger->LogMessage(MOJO_LOG_LEVEL_FATAL, nullptr, 0, | |
90 "Logged at FATAL level"); | |
91 }, ""); | |
92 } | |
93 | |
94 TEST(LoggerTest, SetDefaultLogger) { | |
95 Environment::SetDefaultLogger(&kTestLogger); | |
96 | |
97 std::vector<std::string> expected_msgs; | |
98 expected_msgs.push_back("First message!"); | |
99 expected_msgs.push_back("Second message!"); | |
100 expected_msgs.push_back("Third message!"); | |
101 Environment::GetDefaultLogger()->LogMessage(MOJO_LOG_LEVEL_INFO, nullptr, 0, | |
102 expected_msgs[0].c_str()); | |
103 Environment::GetDefaultLogger()->LogMessage(MOJO_LOG_LEVEL_INFO, nullptr, 0, | |
104 expected_msgs[1].c_str()); | |
105 Environment::GetDefaultLogger()->LogMessage(MOJO_LOG_LEVEL_INFO, nullptr, 0, | |
106 expected_msgs[2].c_str()); | |
107 | |
108 EXPECT_EQ(expected_msgs, g_log_msgs); | |
109 | |
110 // This should restore the default logger. | |
111 Environment::SetDefaultLogger(nullptr); | |
112 | |
113 EXPECT_NE(&kTestLogger, Environment::GetDefaultLogger()); | |
114 EXPECT_NE(nullptr, Environment::GetDefaultLogger()); | |
115 } | |
116 | |
117 } // namespace | |
118 } // namespace mojo | |
OLD | NEW |