| 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 |