Add a Message constructor that takes a SimpleMessage

This commit is contained in:
Oliver Hamlet
2021-09-23 13:31:35 +01:00
parent 10a83101cc
commit 3cee54de04
3 changed files with 32 additions and 4 deletions
+8
View File
@@ -76,6 +76,14 @@ public:
const std::vector<MessageContent>& content,
const std::string& condition = "");
/**
* Construct a Message object from a SimpleMessage object.
* @param message
* The SimpleMessage object.
* @return A Message object.
*/
LOOT_API explicit Message(const SimpleMessage& message);
/**
* A less-than operator implemented with no semantics so that Message objects
* can be stored in sets.
+8 -4
View File
@@ -34,10 +34,9 @@ Message::Message() : type_(MessageType::say) {}
Message::Message(const MessageType type,
const std::string& content,
const std::string& condition) :
type_(type),
ConditionalMetadata(condition) {
content_.push_back(MessageContent(content));
}
type_(type),
content_({MessageContent(content)}),
ConditionalMetadata(condition) {}
Message::Message(const MessageType type,
const std::vector<MessageContent>& content,
@@ -58,6 +57,11 @@ Message::Message(const MessageType type,
}
}
Message::Message(const SimpleMessage& message) :
type_(message.type),
content_({MessageContent(message.text, message.language)}),
ConditionalMetadata(message.condition) {}
bool Message::operator<(const Message& rhs) const {
if (type_ < rhs.type_) {
return true;
@@ -82,6 +82,22 @@ TEST_P(
std::invalid_argument);
}
TEST_P(MessageTest,
simpleMessageConstructorShouldCreateAMessageWithASingleContentString) {
SimpleMessage simple;
simple.type = MessageType::error;
simple.text = "ERROR";
simple.language = "fr";
simple.condition = "condition";
Message message(simple);
EXPECT_EQ(MessageType::error, message.GetType());
EXPECT_EQ(MessageContents({MessageContent(simple.text, simple.language)}),
message.GetContent());
EXPECT_EQ("condition", message.GetCondition());
}
TEST_P(MessageTest, equalityShouldRequireEqualMessageTypes) {
Message message1(MessageType::say, "content");
Message message2(MessageType::say, "content");