Add specialized types and hooks for the most common msgs

PRIVMSG, NOTICE, JOIN, PART, QUIT, NICK, KICK, TOPIC
This commit is contained in:
J-P Nurmi
2015-07-13 20:33:48 +02:00
parent 50ab019901
commit ff181a4a85
6 changed files with 431 additions and 65 deletions

View File

@@ -55,6 +55,149 @@ TEST(MessageTest, FormatFlags) {
EXPECT_EQ("COMMAND param", msg.ToString(CMessage::ExcludePrefix|CMessage::ExcludeTags));
}
TEST(MessageTest, ChanAction) {
CMessage msg(":sender PRIVMSG #chan :\001ACTION text\001");
CChanAction& chan = static_cast<CChanAction&>(msg);
EXPECT_EQ("sender", chan.GetNick().GetNick());
EXPECT_EQ("PRIVMSG", chan.GetCommand());
EXPECT_EQ("text", chan.GetText());
chan.SetText("foo bar");
EXPECT_EQ("foo bar", chan.GetText());
EXPECT_EQ(":sender PRIVMSG #chan :\001ACTION foo bar\001", chan.ToString());
}
TEST(MessageTest, ChanCTCP) {
CMessage msg(":sender PRIVMSG #chan :\001text\001");
CChanCTCP& chan = static_cast<CChanCTCP&>(msg);
EXPECT_EQ("sender", chan.GetNick().GetNick());
EXPECT_EQ("PRIVMSG", chan.GetCommand());
EXPECT_EQ("text", chan.GetText());
chan.SetText("foo bar");
EXPECT_EQ("foo bar", chan.GetText());
EXPECT_EQ(":sender PRIVMSG #chan :\001foo bar\001", chan.ToString());
}
TEST(MessageTest, ChanMsg) {
CMessage msg(":sender PRIVMSG #chan :text");
CChanMessage& priv = static_cast<CChanMessage&>(msg);
EXPECT_EQ("sender", priv.GetNick().GetNick());
EXPECT_EQ("PRIVMSG", priv.GetCommand());
EXPECT_EQ("text", priv.GetText());
priv.SetText("foo bar");
EXPECT_EQ("foo bar", priv.GetText());
EXPECT_EQ(":sender PRIVMSG #chan :foo bar", priv.ToString());
}
TEST(MessageTest, Kick) {
CMessage msg(":nick KICK #chan person :reason");
CKickMessage& kick = static_cast<CKickMessage&>(msg);
EXPECT_EQ("nick", kick.GetNick().GetNick());
EXPECT_EQ("KICK", kick.GetCommand());
EXPECT_EQ("person", kick.GetKickedNick());
EXPECT_EQ("reason", kick.GetReason());
kick.SetKickedNick("noone");
EXPECT_EQ("noone", kick.GetKickedNick());
kick.SetReason("test");
EXPECT_EQ("test", kick.GetReason());
EXPECT_EQ(":nick KICK #chan noone test", kick.ToString());
}
TEST(MessageTest, Join) {
CMessage msg(":nick JOIN #chan");
EXPECT_EQ("nick", msg.GetNick().GetNick());
EXPECT_EQ("JOIN", msg.GetCommand());
EXPECT_EQ("#chan", msg.GetParam(0));
}
TEST(MessageTest, Nick) {
CMessage msg(":nick NICK person");
CNickMessage& nick = static_cast<CNickMessage&>(msg);
EXPECT_EQ("nick", nick.GetNick().GetNick());
EXPECT_EQ("NICK", nick.GetCommand());
EXPECT_EQ("nick", nick.GetOldNick());
EXPECT_EQ("person", nick.GetNewNick());
nick.SetNewNick("test");
EXPECT_EQ("test", nick.GetNewNick());
EXPECT_EQ(":nick NICK test", nick.ToString());
}
TEST(MessageTest, Part) {
CMessage msg(":nick PART #chan :reason");
CPartMessage& part = static_cast<CPartMessage&>(msg);
EXPECT_EQ("nick", part.GetNick().GetNick());
EXPECT_EQ("PART", part.GetCommand());
EXPECT_EQ("reason", part.GetReason());
part.SetReason("test");
EXPECT_EQ("test", part.GetReason());
EXPECT_EQ(":nick PART #chan test", part.ToString());
}
TEST(MessageTest, PrivAction) {
CMessage msg(":sender PRIVMSG receiver :\001ACTION text\001");
CPrivAction& priv = static_cast<CPrivAction&>(msg);
EXPECT_EQ("sender", priv.GetNick().GetNick());
EXPECT_EQ("PRIVMSG", priv.GetCommand());
EXPECT_EQ("text", priv.GetText());
priv.SetText("foo bar");
EXPECT_EQ("foo bar", priv.GetText());
EXPECT_EQ(":sender PRIVMSG receiver :\001ACTION foo bar\001", priv.ToString());
}
TEST(MessageTest, PrivCTCP) {
CMessage msg(":sender PRIVMSG receiver :\001text\001");
CPrivCTCP& priv = static_cast<CPrivCTCP&>(msg);
EXPECT_EQ("sender", priv.GetNick().GetNick());
EXPECT_EQ("PRIVMSG", priv.GetCommand());
EXPECT_EQ("text", priv.GetText());
priv.SetText("foo bar");
EXPECT_EQ("foo bar", priv.GetText());
EXPECT_EQ(":sender PRIVMSG receiver :\001foo bar\001", priv.ToString());
}
TEST(MessageTest, PrivMsg) {
CMessage msg(":sender PRIVMSG receiver :text");
CPrivMessage& priv = static_cast<CPrivMessage&>(msg);
EXPECT_EQ("sender", priv.GetNick().GetNick());
EXPECT_EQ("PRIVMSG", priv.GetCommand());
EXPECT_EQ("text", priv.GetText());
priv.SetText("foo bar");
EXPECT_EQ("foo bar", priv.GetText());
EXPECT_EQ(":sender PRIVMSG receiver :foo bar", priv.ToString());
}
TEST(MessageTest, Quit) {
CMessage msg(":nick QUIT :reason");
CQuitMessage& quit = static_cast<CQuitMessage&>(msg);
EXPECT_EQ("nick", quit.GetNick().GetNick());
EXPECT_EQ("QUIT", quit.GetCommand());
EXPECT_EQ("reason", quit.GetReason());
quit.SetReason("test");
EXPECT_EQ("test", quit.GetReason());
EXPECT_EQ(":nick QUIT test", quit.ToString());
}
TEST(MessageTest, Topic) {
CMessage msg(":nick TOPIC #chan :topic");
CTopicMessage& topic = static_cast<CTopicMessage&>(msg);
EXPECT_EQ("nick", topic.GetNick().GetNick());
EXPECT_EQ("TOPIC", topic.GetCommand());
EXPECT_EQ("topic", topic.GetTopic());
topic.SetTopic("test");
EXPECT_EQ("test", topic.GetTopic());
EXPECT_EQ(":nick TOPIC #chan test", topic.ToString());
}
// The test data for MessageTest.Parse originates from https://github.com/SaberUK/ircparser
//
// IRCParser - Internet Relay Chat Message Parser