common_test.cxx 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. //
  2. // common_test.cpp
  3. // logger-test
  4. //
  5. // Created by Sam Jaffe on 8/13/20.
  6. //
  7. #include "logger/level.h"
  8. #include <gmock/gmock.h>
  9. #include "../src/common.h"
  10. #include "logger/exception.h"
  11. using level_info = std::pair<logging::level, std::string>;
  12. struct SerializerTest : testing::TestWithParam<level_info> {};
  13. using namespace logging;
  14. TEST_P(SerializerTest, LevelFromString) {
  15. EXPECT_THAT(level_from_string(GetParam().second), GetParam().first);
  16. }
  17. TEST_P(SerializerTest, LevelToString) {
  18. EXPECT_THAT(level_to_string(GetParam().first),
  19. testing::Eq(GetParam().second));
  20. }
  21. MATCHER(IsUpperCase, "") {
  22. return !std::any_of(arg.begin(), arg.end(), &islower);
  23. }
  24. TEST_P(SerializerTest, OstreamWritesUppercase) {
  25. std::stringstream ss;
  26. ss << GetParam().first;
  27. EXPECT_THAT(ss.str(), testing::StrCaseEq(GetParam().second));
  28. EXPECT_THAT(ss.str(), IsUpperCase());
  29. }
  30. TEST_P(SerializerTest, ToStringCanWriteBothCases) {
  31. EXPECT_THAT(to_string(GetParam().first, false),
  32. testing::Eq(GetParam().second));
  33. EXPECT_THAT(to_string(GetParam().first, true),
  34. testing::StrCaseEq(GetParam().second));
  35. EXPECT_THAT(to_string(GetParam().first, true), IsUpperCase());
  36. }
  37. level_info pairs[] = {
  38. {level::trace, "trace"}, {level::debug, "debug"},
  39. {level::info, "info"}, {level::warning, "warning"},
  40. {level::error, "error"}, {level::critical, "critical"},
  41. {level::fatal, "fatal"}, {level::none, "none"},
  42. };
  43. INSTANTIATE_TEST_CASE_P(LogLevel, SerializerTest, testing::ValuesIn(pairs));
  44. TEST(LogLevelSerializerTest, LevelFromStringThrowsOnUnknown) {
  45. EXPECT_THROW(level_from_string("FAKE"), invalid_property);
  46. }
  47. TEST(LogLevelSerializerTest, LevelToStringThrowsOnUnknown) {
  48. EXPECT_THROW(level_to_string(static_cast<level>(100)), std::domain_error);
  49. }