summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften/Base/UnitTest/LogTest.cpp')
-rw-r--r--Swiften/Base/UnitTest/LogTest.cpp49
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
15using namespace Swift;
16
17struct 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.
29class LogCallbackSetter {
30public:
31 LogCallbackSetter(Log::Callback callback) {
32 Log::setLogCallback(callback);
33 }
34 ~LogCallbackSetter() {
35 Log::setLogCallback({});
36 }
37};
38
39TEST(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}