From 897b6ecea8266cc56c0ecb992def7f55ddbf2742 Mon Sep 17 00:00:00 2001 From: Oliver Hamlet Date: Thu, 2 Jul 2015 21:24:29 +0100 Subject: [PATCH] Make message comparison operators consistent. Message and MessageContent less-than and equality operators have been tweaked to have consistent behaviour, by comparing only content strings and ignoring message type and language. --- src/backend/metadata/message.cpp | 4 ++-- src/backend/metadata/message_content.cpp | 2 +- src/tests/backend/metadata/test_message_content.h | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/backend/metadata/message.cpp b/src/backend/metadata/message.cpp index bab52011..6af7664d 100644 --- a/src/backend/metadata/message.cpp +++ b/src/backend/metadata/message.cpp @@ -47,14 +47,14 @@ namespace loot { bool Message::operator < (const Message& rhs) const { if (!_content.empty() && !rhs.Content().empty()) return boost::ilexicographical_compare(_content.front().Str(), rhs.Content().front().Str()); - else if (_content.empty()) + else if (_content.empty() && !rhs.Content().empty()) return true; else return false; } bool Message::operator == (const Message& rhs) const { - return (_type == rhs.Type() && _content == rhs.Content()); + return (_content == rhs.Content()); } bool Message::EvalCondition(loot::Game& game, const unsigned int language) { diff --git a/src/backend/metadata/message_content.cpp b/src/backend/metadata/message_content.cpp index 4a3a27c0..3032e51c 100644 --- a/src/backend/metadata/message_content.cpp +++ b/src/backend/metadata/message_content.cpp @@ -47,7 +47,7 @@ namespace loot { } bool MessageContent::operator == (const MessageContent& rhs) const { - return (_language == rhs.Language() && boost::iequals(_str, rhs.Str())); + return (boost::iequals(_str, rhs.Str())); } } diff --git a/src/tests/backend/metadata/test_message_content.h b/src/tests/backend/metadata/test_message_content.h index a88e775c..a4fb7bde 100644 --- a/src/tests/backend/metadata/test_message_content.h +++ b/src/tests/backend/metadata/test_message_content.h @@ -55,7 +55,7 @@ TEST(MessageContent, EqualityOperator) { mc1 = MessageContent("content", Language::english); mc2 = MessageContent("Content", Language::french); - EXPECT_FALSE(mc1 == mc2); + EXPECT_TRUE(mc1 == mc2); } TEST(MessageContent, LessThanOperator) {