ErrorLogger: Refactoring/fixing the serializer/deserializer for inconclusive messages

This commit is contained in:
Daniel Marjamäki 2011-04-16 13:42:48 +02:00
parent f9c97c7b56
commit 0beef13794
2 changed files with 30 additions and 2 deletions

View File

@ -70,7 +70,11 @@ std::string ErrorLogger::ErrorMessage::serialize() const
std::ostringstream oss;
oss << _id.length() << " " << _id;
oss << Severity::toString(_severity).length() << " " << Severity::toString(_severity);
oss << (_inconclusive ? "12 inconclusive" : "");
if (_inconclusive)
{
const std::string inconclusive("inconclusive");
oss << inconclusive.length() << " " << inconclusive;
}
oss << _shortMessage.length() << " " << _shortMessage;
oss << _verboseMessage.length() << " " << _verboseMessage;
oss << _callStack.size() << " ";
@ -108,7 +112,7 @@ bool ErrorLogger::ErrorMessage::deserialize(const std::string &data)
if (temp == "inconclusive")
{
_inconclusive = true;
break;
continue;
}
results.push_back(temp);

View File

@ -43,6 +43,9 @@ private:
// Inconclusive results in xml reports..
TEST_CASE(InconclusiveXml);
// Serialize / Deserialize inconclusive message
TEST_CASE(SerializeInconclusiveMessage);
}
void FileLocationDefaults()
@ -184,5 +187,26 @@ private:
// TODO: how should inconclusive messages be saved when the xml version is 2?
ASSERT_EQUALS("", msg.toXML(false, 2));
}
void SerializeInconclusiveMessage()
{
// Inconclusive error message
std::list<ErrorLogger::ErrorMessage::FileLocation> locs;
ErrorMessage msg(locs, Severity::error, "Programming error", "errorId", true);
ASSERT_EQUALS("7 errorId"
"5 error"
"12 inconclusive"
"17 Programming error"
"17 Programming error"
"0 ", msg.serialize());
ErrorMessage msg2;
msg2.deserialize(msg.serialize());
ASSERT_EQUALS("errorId", msg2._id);
ASSERT_EQUALS(Severity::error, msg2._severity);
ASSERT_EQUALS(true, msg2._inconclusive);
ASSERT_EQUALS("Programming error", msg2.shortMessage());
ASSERT_EQUALS("Programming error", msg2.verboseMessage());
}
};
REGISTER_TEST(TestErrorLogger)