encfs/vendor/github.com/muflihun/easyloggingpp/test/configurations-test.h
Valient Gough 5f0806c5cc Add "easylogging" from "https://github.com/muflihun/easyloggingpp@master"
git-vendor-name: easylogging
git-vendor-dir: vendor/github.com/muflihun/easyloggingpp
git-vendor-repository: https://github.com/muflihun/easyloggingpp
git-vendor-ref: master
2017-08-05 23:23:41 -07:00

143 lines
8.0 KiB
C++

#ifndef CONFIGURATIONS_TEST_H_
#define CONFIGURATIONS_TEST_H_
#include "test.h"
TEST(ConfigurationsTest, Set) {
Configurations c;
c.set(Level::Info, el::ConfigurationType::Enabled, "true");
c.set(Level::Info, el::ConfigurationType::Enabled, "true");
EXPECT_EQ(c.size(), 1);
Configurations c2;
c2 = c;
c2.set(Level::Info, el::ConfigurationType::Enabled, "false");
EXPECT_EQ(c.get(Level::Info, el::ConfigurationType::Enabled)->value(), "true");
EXPECT_EQ(c2.get(Level::Info, el::ConfigurationType::Enabled)->value(), "false");
EXPECT_EQ(c2.size(), 1);
}
TEST(ConfigurationsTest, HasConfiguration) {
Configurations c;
c.set(Level::Info, el::ConfigurationType::Enabled, "true");
c.set(Level::Debug, el::ConfigurationType::Enabled, "false");
c.set(Level::Info, el::ConfigurationType::Format, "%level: %msg");
EXPECT_TRUE(c.hasConfiguration(ConfigurationType::Enabled));
EXPECT_TRUE(c.hasConfiguration(ConfigurationType::Format));
EXPECT_FALSE(c.hasConfiguration(ConfigurationType::Filename));
EXPECT_FALSE(c.hasConfiguration(ConfigurationType::MaxLogFileSize));
EXPECT_TRUE(c.hasConfiguration(Level::Debug, ConfigurationType::Enabled));
EXPECT_FALSE(c.hasConfiguration(Level::Verbose, ConfigurationType::Format));
}
TEST(ConfigurationsTest, SetForAllLevels) {
Configurations c;
c.setGlobally(el::ConfigurationType::Enabled, "true");
EXPECT_FALSE(c.hasConfiguration(Level::Global, ConfigurationType::Enabled));
EXPECT_TRUE(c.hasConfiguration(Level::Debug, ConfigurationType::Enabled));
EXPECT_TRUE(c.hasConfiguration(Level::Info, ConfigurationType::Enabled));
EXPECT_TRUE(c.hasConfiguration(Level::Warning, ConfigurationType::Enabled));
EXPECT_TRUE(c.hasConfiguration(Level::Error, ConfigurationType::Enabled));
EXPECT_TRUE(c.hasConfiguration(Level::Fatal, ConfigurationType::Enabled));
EXPECT_TRUE(c.hasConfiguration(Level::Verbose, ConfigurationType::Enabled));
EXPECT_TRUE(c.hasConfiguration(Level::Trace, ConfigurationType::Enabled));
}
TEST(ConfigurationsTest, ParsingFromFile) {
std::fstream confFile("/tmp/temp-test.conf", std::fstream::out);
confFile << " * GLOBAL:\n"
<< " FORMAT = %datetime %level %msg\n"
<< "* INFO:\n"
// Following should be included in format because its inside the quotes
<< " FORMAT = \"%datetime %level [%user@%host] [%func] [%loc] %msg## This should be included in format\" ## This should be excluded\n"
<< "* DEBUG:\n"
<< " FORMAT = %datetime %level [%user@%host] [%func] [%loc] %msg ## Comment before EOL char\n"
<< "## Comment on empty line\n"
// WARNING is defined by GLOBAL
<< "* ERROR:\n"
<< " FORMAT = %datetime %level %msg\n"
<< "* FATAL:\n"
<< " FORMAT = %datetime %level %msg\n"
<< "* VERBOSE:\n"
<< " FORMAT = %datetime %level-%vlevel %msg\n"
<< "* TRACE:\n"
<< " FORMAT = %datetime %level [%func] [%loc] %msg\n";
confFile.close();
Configurations c("/tmp/temp-test.conf", false, nullptr);
EXPECT_FALSE(c.hasConfiguration(Level::Debug, ConfigurationType::Enabled));
EXPECT_FALSE(c.hasConfiguration(Level::Global, ConfigurationType::Enabled));
EXPECT_TRUE(c.hasConfiguration(Level::Global, ConfigurationType::Format));
EXPECT_TRUE(c.hasConfiguration(Level::Info, ConfigurationType::Format));
EXPECT_EQ("%datetime %level %msg", c.get(Level::Global, ConfigurationType::Format)->value());
EXPECT_EQ("%datetime %level [%user@%host] [%func] [%loc] %msg## This should be included in format", c.get(Level::Info, ConfigurationType::Format)->value());
EXPECT_EQ("%datetime %level [%user@%host] [%func] [%loc] %msg", c.get(Level::Debug, ConfigurationType::Format)->value());
EXPECT_EQ("%datetime %level %msg", c.get(Level::Warning, ConfigurationType::Format)->value());
EXPECT_EQ("%datetime %level %msg", c.get(Level::Error, ConfigurationType::Format)->value());
EXPECT_EQ("%datetime %level %msg", c.get(Level::Fatal, ConfigurationType::Format)->value());
EXPECT_EQ("%datetime %level-%vlevel %msg", c.get(Level::Verbose, ConfigurationType::Format)->value());
EXPECT_EQ("%datetime %level [%func] [%loc] %msg", c.get(Level::Trace, ConfigurationType::Format)->value());
}
TEST(ConfigurationsTest, ParsingFromText) {
std::stringstream ss;
ss << " * GLOBAL:\n"
<< " FORMAT = %datetime{%d/%M/%Y %h:%m:%s,%g} %level %msg\n"
<< "* DEBUG:\n"
<< " FORMAT = %datetime %level [%user@%host] [%func] [%loc] %msg\n"
// INFO and WARNING uses is defined by GLOBAL
<< "* ERROR:\n"
<< " FORMAT = %datetime %level %msg\n"
<< "* FATAL:\n"
<< " FORMAT = %datetime %level %msg\n"
<< "* VERBOSE:\n"
<< " FORMAT = %datetime %level-%vlevel %msg\n"
<< "* TRACE:\n"
<< " FORMAT = %datetime %level [%func] [%loc] %msg\n";
Configurations c;
c.parseFromText(ss.str());
EXPECT_FALSE(c.hasConfiguration(Level::Debug, ConfigurationType::Enabled));
EXPECT_FALSE(c.hasConfiguration(Level::Global, ConfigurationType::Enabled));
EXPECT_TRUE(c.hasConfiguration(Level::Global, ConfigurationType::Format));
EXPECT_TRUE(c.hasConfiguration(Level::Info, ConfigurationType::Format));
EXPECT_EQ("%datetime{%d/%M/%Y %h:%m:%s,%g} %level %msg", c.get(Level::Global, ConfigurationType::Format)->value());
EXPECT_EQ("%datetime{%d/%M/%Y %h:%m:%s,%g} %level %msg", c.get(Level::Info, ConfigurationType::Format)->value());
EXPECT_EQ("%datetime{%d/%M/%Y %h:%m:%s,%g} %level %msg", c.get(Level::Warning, ConfigurationType::Format)->value());
EXPECT_EQ("%datetime %level [%user@%host] [%func] [%loc] %msg", c.get(Level::Debug, ConfigurationType::Format)->value());
EXPECT_EQ("%datetime %level %msg", c.get(Level::Error, ConfigurationType::Format)->value());
EXPECT_EQ("%datetime %level %msg", c.get(Level::Fatal, ConfigurationType::Format)->value());
EXPECT_EQ("%datetime %level-%vlevel %msg", c.get(Level::Verbose, ConfigurationType::Format)->value());
EXPECT_EQ("%datetime %level [%func] [%loc] %msg", c.get(Level::Trace, ConfigurationType::Format)->value());
}
TEST(ConfigurationsTest, ParsingFromTextWithEscape) {
std::stringstream ss;
ss << " * GLOBAL:\n"
<< " FORMAT = %datetime{%d/%M/%Y %h:%m:%s,%g} %level %msg\n"
<< "* DEBUG:\n"
<< " FORMAT = \"%datetime %level [%user@%host] [%func] [%loc] \\\"inside quotes\\\" %msg\"\n"
// INFO and WARNING uses is defined by GLOBAL
<< "* ERROR:\n"
<< " FORMAT = \"%datetime %level \\\"##hash##\\\" %msg\"\n"
<< "* FATAL:\n"
<< " FORMAT = %datetime %level ## Comment out log format specifier temporarily %msg\n"
<< "* VERBOSE:\n"
<< " FORMAT = %datetime %level-%vlevel %msg\n"
<< "* TRACE:\n"
<< " FORMAT = %datetime %level [%func] [%loc] %msg\n";
Configurations c;
c.parseFromText(ss.str());
EXPECT_EQ("%datetime{%d/%M/%Y %h:%m:%s,%g} %level %msg", c.get(Level::Global, ConfigurationType::Format)->value());
EXPECT_EQ("%datetime{%d/%M/%Y %h:%m:%s,%g} %level %msg", c.get(Level::Info, ConfigurationType::Format)->value());
EXPECT_EQ("%datetime{%d/%M/%Y %h:%m:%s,%g} %level %msg", c.get(Level::Warning, ConfigurationType::Format)->value());
EXPECT_EQ("%datetime %level [%user@%host] [%func] [%loc] \"inside quotes\" %msg", c.get(Level::Debug, ConfigurationType::Format)->value());
EXPECT_EQ("%datetime %level \"##hash##\" %msg", c.get(Level::Error, ConfigurationType::Format)->value());
EXPECT_EQ("%datetime %level", c.get(Level::Fatal, ConfigurationType::Format)->value());
EXPECT_EQ("%datetime %level-%vlevel %msg", c.get(Level::Verbose, ConfigurationType::Format)->value());
EXPECT_EQ("%datetime %level [%func] [%loc] %msg", c.get(Level::Trace, ConfigurationType::Format)->value());
}
#endif // CONFIGURATIONS_TEST_H_