Add CMessage::Equals()

Compares sender, command, and parameters. Not timestamp nor tags.
This commit is contained in:
J-P Nurmi
2015-09-17 22:02:46 +02:00
parent c223d3a500
commit cbd860c2a9
3 changed files with 29 additions and 0 deletions
+1
View File
@@ -56,6 +56,7 @@ public:
};
Type GetType() const { return m_eType; }
bool Equals(const CMessage& Other) const;
void Clone(const CMessage& Other);
// ZNC <-> IRC
+7
View File
@@ -29,6 +29,13 @@ CMessage::CMessage(const CNick& Nick, const CString& sCommand, const VCString& v
InitTime();
}
bool CMessage::Equals(const CMessage& Other) const
{
return m_Nick.NickEquals(Other.GetNick().GetNick()) &&
m_sCommand.Equals(Other.GetCommand()) &&
m_vsParams == Other.GetParams();
}
void CMessage::Clone(const CMessage& Message)
{
if (&Message != this) {
+21
View File
@@ -106,6 +106,27 @@ TEST(MessageTest, FormatFlags) {
EXPECT_EQ("COMMAND param", msg.ToString(CMessage::ExcludePrefix|CMessage::ExcludeTags));
}
TEST(MessageTest, Equals) {
EXPECT_TRUE(CMessage("JOIN #chan").Equals(CMessage("JOIN #chan")));
EXPECT_FALSE(CMessage("JOIN #chan").Equals(CMessage("JOIN #znc")));
EXPECT_TRUE(CMessage(":nick JOIN #chan").Equals(CMessage(":nick JOIN #chan")));
EXPECT_FALSE(CMessage(":nick JOIN #chan").Equals(CMessage(":nick JOIN #znc")));
EXPECT_FALSE(CMessage(":nick JOIN #chan").Equals(CMessage(":someone JOIN #chan")));
EXPECT_TRUE(CMessage("PRIVMSG nick :hi").Equals(CMessage("PRIVMSG nick :hi")));
EXPECT_TRUE(CMessage("PRIVMSG nick hi").Equals(CMessage("PRIVMSG nick :hi")));
EXPECT_TRUE(CMessage("PRIVMSG nick :hi").Equals(CMessage("PRIVMSG nick hi")));
EXPECT_TRUE(CMessage("PRIVMSG nick hi").Equals(CMessage("PRIVMSG nick hi")));
EXPECT_TRUE(CMessage("CMD nick p1 p2").Equals(CMessage("CMD nick p1 p2")));
EXPECT_TRUE(CMessage("CMD nick :p1 p2").Equals(CMessage("CMD nick :p1 p2")));
EXPECT_TRUE(CMessage("CMD nick p1 :p2").Equals(CMessage("CMD nick p1 p2")));
EXPECT_FALSE(CMessage("CMD nick :p1 p2").Equals(CMessage("CMD nick p1 p2")));
EXPECT_TRUE(CMessage("@t=now :sender CMD p").Equals(CMessage("@t=then :sender CMD p")));
}
TEST(MessageTest, Type) {
EXPECT_EQ(CMessage::Type::Unknown, CMessage("FOO").GetType());
EXPECT_EQ(CMessage::Type::Account, CMessage("ACCOUNT").GetType());