add two new constructors.

This commit is contained in:
Liu Ming 2016-06-08 15:30:52 +02:00
parent 46b7b2a114
commit af9b0977f6
2 changed files with 79 additions and 20 deletions

View File

@ -52,20 +52,30 @@ namespace Opm
: use_prefix_(use_prefix),
use_color_coding_(use_color_coding)
{
if (use_prefix_) {
prefix_flag_ = Log::DefaultMessageTypes;
}
}
SimpleMessageFormatter(const int64_t prefix_flag, const bool use_color_coding)
: prefix_flag_(prefix_flag),
use_color_coding_(use_color_coding)
{
}
SimpleMessageFormatter(const bool use_color_coding)
: use_color_coding_(use_color_coding)
{
prefix_flag_ = Log::MessageType::Warning + Log::MessageType::Error
+ Log::MessageType::Problem + Log::MessageType::Bug;
}
/// Returns a copy of the input string with a flag-dependant
/// prefix (if use_prefix) and the entire message in a
/// flag-dependent color (if use_color_coding).
virtual std::string format(const int64_t message_flag, const std::string& message) override
{
std::string msg = message;
const int64_t prefix_flag = Log::MessageType::Warning + Log::MessageType::Error
+ Log::MessageType::Problem + Log::MessageType::Bug;
if (message_flag & prefix_flag) {
msg = Log::prefixMessage(message_flag, msg);
}
if (use_prefix_ && !(message_flag & prefix_flag)) {
if (message_flag & prefix_flag_) {
msg = Log::prefixMessage(message_flag, msg);
}
if (use_color_coding_) {
@ -76,6 +86,7 @@ namespace Opm
private:
bool use_prefix_ = false;
bool use_color_coding_ = false;
int64_t prefix_flag_ = 0;
};

View File

@ -287,10 +287,10 @@ BOOST_AUTO_TEST_CASE(TestOpmLogWithColors)
OpmLog::info("Info");
OpmLog::bug("Bug");
const std::string expected = Log::colorCodeMessage(Log::MessageType::Warning, "Warning: Warning") + "\n"
+ Log::colorCodeMessage(Log::MessageType::Error, "Error: Error") + "\n"
const std::string expected = Log::colorCodeMessage(Log::MessageType::Warning, "Warning") + "\n"
+ Log::colorCodeMessage(Log::MessageType::Error, "Error") + "\n"
+ Log::colorCodeMessage(Log::MessageType::Info, "Info") + "\n"
+ Log::colorCodeMessage(Log::MessageType::Bug, "Bug: Bug") + "\n";
+ Log::colorCodeMessage(Log::MessageType::Bug, "Bug") + "\n";
BOOST_CHECK_EQUAL(log_stream.str(), expected);
@ -340,22 +340,22 @@ BOOST_AUTO_TEST_CASE(TestOpmLogWithLimits)
OpmLog::warning(tag, "Warning");
OpmLog::warning(tag, "Warning");
const std::string expected1 = Log::colorCodeMessage(Log::MessageType::Warning, "Warning: Warning") + "\n"
+ Log::colorCodeMessage(Log::MessageType::Error, "Error: Error") + "\n"
const std::string expected1 = Log::colorCodeMessage(Log::MessageType::Warning, "Warning") + "\n"
+ Log::colorCodeMessage(Log::MessageType::Error, "Error") + "\n"
+ Log::colorCodeMessage(Log::MessageType::Info, "Info") + "\n"
+ Log::colorCodeMessage(Log::MessageType::Bug, "Bug: Bug") + "\n"
+ Log::colorCodeMessage(Log::MessageType::Warning, "Warning: Warning") + "\n"
+ Log::colorCodeMessage(Log::MessageType::Warning, "Warning: Message limit reached for message tag: " + tag) + "\n";
+ Log::colorCodeMessage(Log::MessageType::Bug, "Bug") + "\n"
+ Log::colorCodeMessage(Log::MessageType::Warning, "Warning") + "\n"
+ Log::colorCodeMessage(Log::MessageType::Warning, "Message limit reached for message tag: " + tag) + "\n";
BOOST_CHECK_EQUAL(log_stream1.str(), expected1);
const std::string expected2 = Log::colorCodeMessage(Log::MessageType::Warning, "Warning: Warning") + "\n"
+ Log::colorCodeMessage(Log::MessageType::Error, "Error: Error") + "\n"
const std::string expected2 = Log::colorCodeMessage(Log::MessageType::Warning, "Warning") + "\n"
+ Log::colorCodeMessage(Log::MessageType::Error, "Error") + "\n"
+ Log::colorCodeMessage(Log::MessageType::Info, "Info") + "\n"
+ Log::colorCodeMessage(Log::MessageType::Bug, "Bug: Bug") + "\n"
+ Log::colorCodeMessage(Log::MessageType::Warning, "Warning: Warning") + "\n"
+ Log::colorCodeMessage(Log::MessageType::Warning, "Warning: Warning") + "\n"
+ Log::colorCodeMessage(Log::MessageType::Warning, "Warning: Warning") + "\n";
+ Log::colorCodeMessage(Log::MessageType::Bug, "Bug") + "\n"
+ Log::colorCodeMessage(Log::MessageType::Warning, "Warning") + "\n"
+ Log::colorCodeMessage(Log::MessageType::Warning, "Warning") + "\n"
+ Log::colorCodeMessage(Log::MessageType::Warning, "Warning") + "\n";
BOOST_CHECK_EQUAL(log_stream2.str(), expected2);
@ -372,3 +372,51 @@ BOOST_AUTO_TEST_CASE(TestsetupSimpleLog)
OpmLog::setupSimpleDefaultLogging(use_prefix);
BOOST_CHECK_EQUAL(true, OpmLog::hasBackend("SimpleDefaultLog"));
}
BOOST_AUTO_TEST_CASE(TestFormat)
{
OpmLog::removeAllBackends();
std::ostringstream log_stream1;
std::ostringstream log_stream2;
std::ostringstream log_stream3;
{
std::shared_ptr<StreamLog> streamLog1 = std::make_shared<StreamLog>(log_stream1, Log::DefaultMessageTypes);
std::shared_ptr<StreamLog> streamLog2 = std::make_shared<StreamLog>(log_stream2, Log::DefaultMessageTypes);
std::shared_ptr<StreamLog> streamLog3 = std::make_shared<StreamLog>(log_stream3, Log::DefaultMessageTypes);
OpmLog::addBackend("STREAM1" , streamLog1);
OpmLog::addBackend("STREAM2" , streamLog2);
OpmLog::addBackend("STREAM3" , streamLog3);
BOOST_CHECK_EQUAL( true , OpmLog::hasBackend("STREAM1"));
BOOST_CHECK_EQUAL( true , OpmLog::hasBackend("STREAM2"));
BOOST_CHECK_EQUAL( true , OpmLog::hasBackend("STREAM3"));
streamLog1->setMessageFormatter(std::make_shared<SimpleMessageFormatter>(false, true));
streamLog2->setMessageFormatter(std::make_shared<SimpleMessageFormatter>(Log::MessageType::Info, true));
streamLog3->setMessageFormatter(std::make_shared<SimpleMessageFormatter>(false));
}
OpmLog::warning("Warning");
OpmLog::error("Error");
OpmLog::info("Info");
OpmLog::bug("Bug");
const std::string expected1 = Log::colorCodeMessage(Log::MessageType::Warning, "Warning") + "\n"
+ Log::colorCodeMessage(Log::MessageType::Error, "Error") + "\n"
+ Log::colorCodeMessage(Log::MessageType::Info, "Info") + "\n"
+ Log::colorCodeMessage(Log::MessageType::Bug, "Bug") + "\n";
const std::string expected2 = Log::colorCodeMessage(Log::MessageType::Warning, "Warning") + "\n"
+ Log::colorCodeMessage(Log::MessageType::Error, "Error") + "\n"
+ Log::colorCodeMessage(Log::MessageType::Info, "Info: Info") + "\n"
+ Log::colorCodeMessage(Log::MessageType::Bug, "Bug") + "\n";
const std::string expected3 = Log::prefixMessage(Log::MessageType::Warning, "Warning") + "\n"
+ Log::prefixMessage(Log::MessageType::Error, "Error") + "\n"
+ "Info" + "\n"
+ Log::prefixMessage(Log::MessageType::Bug, "Bug") + "\n";
BOOST_CHECK_EQUAL(log_stream1.str(), expected1);
BOOST_CHECK_EQUAL(log_stream2.str(), expected2);
BOOST_CHECK_EQUAL(log_stream3.str(), expected3);
}