diff options
Diffstat (limited to 'Swiften/Base/UnitTest/LogTest.cpp')
| -rw-r--r-- | Swiften/Base/UnitTest/LogTest.cpp | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/Swiften/Base/UnitTest/LogTest.cpp b/Swiften/Base/UnitTest/LogTest.cpp new file mode 100644 index 0000000..5d710db --- /dev/null +++ b/Swiften/Base/UnitTest/LogTest.cpp | |||
| @@ -0,0 +1,49 @@ | |||
| 1 | /* | ||
| 2 | * Copyright (c) 2019 Isode Limited. | ||
| 3 | * All rights reserved. | ||
| 4 | * See the COPYING file for more information. | ||
| 5 | */ | ||
| 6 | |||
| 7 | #include <vector> | ||
| 8 | |||
| 9 | #include <boost/algorithm/string/predicate.hpp> | ||
| 10 | |||
| 11 | #include <gtest/gtest.h> | ||
| 12 | |||
| 13 | #include <Swiften/Base/Log.h> | ||
| 14 | |||
| 15 | using namespace Swift; | ||
| 16 | |||
| 17 | struct LogEntry { | ||
| 18 | LogEntry(Log::Severity severity, std::string file, int line, std::string function, std::string message) : severity(severity), file(std::move(file)), line(line), function(std::move(function)), message(std::move(message)) {} | ||
| 19 | |||
| 20 | Log::Severity severity; | ||
| 21 | std::string file; | ||
| 22 | int line; | ||
| 23 | std::string function; | ||
| 24 | std::string message; | ||
| 25 | }; | ||
| 26 | |||
| 27 | // Helper class to set the logging callback. Using this class to set it will ensure the | ||
| 28 | // logCallback is reset to empty (its default state) after each test. | ||
| 29 | class LogCallbackSetter { | ||
| 30 | public: | ||
| 31 | LogCallbackSetter(Log::Callback callback) { | ||
| 32 | Log::setLogCallback(callback); | ||
| 33 | } | ||
| 34 | ~LogCallbackSetter() { | ||
| 35 | Log::setLogCallback({}); | ||
| 36 | } | ||
| 37 | }; | ||
| 38 | |||
| 39 | TEST(LogTest, testCallback) { | ||
| 40 | std::vector<LogEntry> logEntries; | ||
| 41 | LogCallbackSetter callbackSetter = {[&](Log::Severity severity, const std::string& file, int line, const std::string& function, const std::string& message) { | ||
| 42 | logEntries.emplace_back(severity, file, line, function, message); | ||
| 43 | }}; | ||
| 44 | |||
| 45 | SWIFT_LOG(error) << "An error"; | ||
| 46 | ASSERT_EQ(1, logEntries.size()); | ||
| 47 | ASSERT_EQ(Log::error, logEntries[0].severity); | ||
| 48 | ASSERT_EQ("An error", logEntries[0].message); | ||
| 49 | } | ||
Swift