|
|
@@ -0,0 +1,66 @@
|
|
|
+//
|
|
|
+// common_test.cpp
|
|
|
+// logger-test
|
|
|
+//
|
|
|
+// Created by Sam Jaffe on 8/13/20.
|
|
|
+//
|
|
|
+
|
|
|
+#include "logger/level.h"
|
|
|
+
|
|
|
+#include <gmock/gmock.h>
|
|
|
+
|
|
|
+#include "logger/exception.h"
|
|
|
+#include "../src/common.h"
|
|
|
+
|
|
|
+using level_info = std::pair<logging::level, std::string>;
|
|
|
+struct SerializerTest : testing::TestWithParam<level_info> {};
|
|
|
+
|
|
|
+using namespace logging;
|
|
|
+
|
|
|
+TEST_P(SerializerTest, LevelFromString) {
|
|
|
+ EXPECT_THAT(level_from_string(GetParam().second), GetParam().first);
|
|
|
+}
|
|
|
+
|
|
|
+TEST_P(SerializerTest, LevelToString) {
|
|
|
+ EXPECT_THAT(level_to_string(GetParam().first),
|
|
|
+ testing::Eq(GetParam().second));
|
|
|
+}
|
|
|
+
|
|
|
+MATCHER(IsUpperCase, "") {
|
|
|
+ return !std::any_of(arg.begin(), arg.end(), &islower);
|
|
|
+}
|
|
|
+
|
|
|
+TEST_P(SerializerTest, OstreamWritesUppercase) {
|
|
|
+ std::stringstream ss;
|
|
|
+ ss << GetParam().first;
|
|
|
+ EXPECT_THAT(ss.str(), testing::StrCaseEq(GetParam().second));
|
|
|
+ EXPECT_THAT(ss.str(), IsUpperCase());
|
|
|
+}
|
|
|
+
|
|
|
+TEST_P(SerializerTest, ToStringCanWriteBothCases) {
|
|
|
+ EXPECT_THAT(to_string(GetParam().first, false),
|
|
|
+ testing::Eq(GetParam().second));
|
|
|
+ EXPECT_THAT(to_string(GetParam().first, true),
|
|
|
+ testing::StrCaseEq(GetParam().second));
|
|
|
+ EXPECT_THAT(to_string(GetParam().first, true), IsUpperCase());
|
|
|
+}
|
|
|
+
|
|
|
+level_info pairs[] = {
|
|
|
+ {level::trace, "trace"},
|
|
|
+ {level::debug, "debug"},
|
|
|
+ {level::info, "info"},
|
|
|
+ {level::warning, "warning"},
|
|
|
+ {level::error, "error"},
|
|
|
+ {level::critical, "critical"},
|
|
|
+ {level::fatal, "fatal"},
|
|
|
+ {level::none, "none"},
|
|
|
+};
|
|
|
+INSTANTIATE_TEST_CASE_P(LogLevel, SerializerTest, testing::ValuesIn(pairs));
|
|
|
+
|
|
|
+TEST(LogLevelSerializerTest, LevelFromStringThrowsOnUnknown) {
|
|
|
+ EXPECT_THROW(level_from_string("FAKE"), invalid_property);
|
|
|
+}
|
|
|
+
|
|
|
+TEST(LogLevelSerializerTest, LevelToStringThrowsOnUnknown) {
|
|
|
+ EXPECT_THROW(level_to_string(static_cast<level>(100)), std::domain_error);
|
|
|
+}
|