add all missing tests
continuous-integration/drone/push Build is failing Details

This commit is contained in:
Ben Harris 2020-05-06 11:48:07 -04:00
parent dfe5a0035b
commit 0117d9d9a0
2 changed files with 250 additions and 0 deletions

View File

@ -34,71 +34,148 @@ namespace IrcStates.Tests
[TestMethod] [TestMethod]
public void PrefixAdd() public void PrefixAdd()
{ {
_server.ParseTokens(new Line(":nickname JOIN #chan"));
_server.ParseTokens(new Line("MODE #chan +ov nickname nickname"));
var user = _server.Users["nickname"];
var channel = _server.Channels["#chan"];
var channelUser = channel.Users[user.NickNameLower];
CollectionAssert.AreEqual(new List<string> {"o", "v"}, channelUser.Modes);
} }
[TestMethod] [TestMethod]
public void PrefixRemove() public void PrefixRemove()
{ {
_server.ParseTokens(new Line(":nickname JOIN #chan"));
_server.ParseTokens(new Line("MODE #chan +ov nickname nickname"));
_server.ParseTokens(new Line("MODE #chan -ov nickname nickname"));
var user = _server.Users["nickname"];
var channel = _server.Channels["#chan"];
var channelUser = channel.Users[user.NickNameLower];
CollectionAssert.AreEqual(new List<string>(), channelUser.Modes);
} }
[TestMethod] [TestMethod]
public void ChannelListAdd() public void ChannelListAdd()
{ {
_server.ParseTokens(new Line(":nickname JOIN #chan"));
_server.ParseTokens(new Line("MODE #chan +b asd!*@*"));
var channel = _server.Channels["#chan"];
CollectionAssert.AreEqual(new Dictionary<string, List<string>> {{"b", new List<string> {"asd!*@*"}}},
channel.ListModes);
} }
[TestMethod] [TestMethod]
public void ChannelListRemove() public void ChannelListRemove()
{ {
_server.ParseTokens(new Line(":nickname JOIN #chan"));
_server.ParseTokens(new Line("MODE #chan +b asd!*@*"));
_server.ParseTokens(new Line("MODE #chan -b asd!*@*"));
var channel = _server.Channels["#chan"];
CollectionAssert.AreEqual(new Dictionary<string, List<string>>(), channel.ListModes);
} }
[TestMethod] [TestMethod]
public void ChannelTypeBAdd() public void ChannelTypeBAdd()
{ {
_server.ParseTokens(new Line(":nickname JOIN #chan"));
_server.ParseTokens(new Line("MODE #chan +k password"));
var channel = _server.Channels["#chan"];
CollectionAssert.AreEqual(new Dictionary<string, string> {{"k", "password"}}, channel.Modes);
} }
[TestMethod] [TestMethod]
public void ChannelTypeBRemove() public void ChannelTypeBRemove()
{ {
_server.ParseTokens(new Line(":nickname JOIN #chan"));
_server.ParseTokens(new Line("MODE #chan +k password"));
_server.ParseTokens(new Line("MODE #chan -k *"));
var channel = _server.Channels["#chan"];
CollectionAssert.AreEqual(new Dictionary<string, string>(), channel.Modes);
} }
[TestMethod] [TestMethod]
public void ChannelTypeCAdd() public void ChannelTypeCAdd()
{ {
_server.ParseTokens(new Line(":nickname JOIN #chan"));
_server.ParseTokens(new Line("MODE #chan +l 100"));
var channel = _server.Channels["#chan"];
CollectionAssert.AreEqual(new Dictionary<string, string> {{"l", "100"}}, channel.Modes);
} }
[TestMethod] [TestMethod]
public void ChannelTypeCRemove() public void ChannelTypeCRemove()
{ {
_server.ParseTokens(new Line(":nickname JOIN #chan"));
_server.ParseTokens(new Line("MODE #chan +l 100"));
_server.ParseTokens(new Line("MODE #chan -l"));
var channel = _server.Channels["#chan"];
CollectionAssert.AreEqual(new Dictionary<string, string>(), channel.Modes);
} }
[TestMethod] [TestMethod]
public void ChannelTypeDAdd() public void ChannelTypeDAdd()
{ {
_server.ParseTokens(new Line(":nickname JOIN #chan"));
_server.ParseTokens(new Line("MODE #chan +i"));
var channel = _server.Channels["#chan"];
CollectionAssert.AreEqual(new Dictionary<string, string> {{"i", null}}, channel.Modes);
} }
[TestMethod] [TestMethod]
public void ChannelTypeDRemove() public void ChannelTypeDRemove()
{ {
_server.ParseTokens(new Line(":nickname JOIN #chan"));
_server.ParseTokens(new Line("MODE #chan +i"));
_server.ParseTokens(new Line("MODE #chan -i"));
var channel = _server.Channels["#chan"];
CollectionAssert.AreEqual(new Dictionary<string, string>(), channel.Modes);
} }
[TestMethod] [TestMethod]
public void ChannelNumeric() public void ChannelNumeric()
{ {
_server.ParseTokens(new Line(":nickname JOIN #chan"));
_server.ParseTokens(new Line("324 * #chan +bkli *!*@* pass 10"));
var channel = _server.Channels["#chan"];
CollectionAssert.AreEqual(new Dictionary<string, string> {{"k", "pass"}, {"l", "10"}, {"i", null}},
channel.Modes);
CollectionAssert.AreEqual(new Dictionary<string, List<string>> {{"b", new List<string> {"*!*@*"}}},
channel.ListModes);
} }
[TestMethod] [TestMethod]
public void ChannelNumericWithoutPlus() public void ChannelNumericWithoutPlus()
{ {
_server.ParseTokens(new Line(":nickname JOIN #chan"));
_server.ParseTokens(new Line("324 * #chan il 10"));
var channel = _server.Channels["#chan"];
CollectionAssert.AreEqual(new Dictionary<string, string> {{"i", null}, {"l", "10"}}, channel.Modes);
} }
[TestMethod] [TestMethod]
public void UserNumeric() public void UserNumeric()
{ {
_server.ParseTokens(new Line("221 * +iw"));
CollectionAssert.AreEqual(new List<string> {"i", "w"}, _server.Modes);
} }
[TestMethod] [TestMethod]
public void UserNumericWithoutPlus() public void UserNumericWithoutPlus()
{ {
_server.ParseTokens(new Line("221 * iw"));
CollectionAssert.AreEqual(new List<string> {"i", "w"}, _server.Modes);
} }
} }
} }

View File

@ -18,101 +18,274 @@ namespace IrcStates.Tests
[TestMethod] [TestMethod]
public void NicknameChange() public void NicknameChange()
{ {
_server.ParseTokens(new Line(":nickname NICK nickname2"));
Assert.AreEqual("nickname2", _server.NickName);
_server.ParseTokens(new Line(":nickname2 JOIN #chan"));
_server.ParseTokens(new Line(":other JOIN #chan"));
Assert.IsTrue(_server.Users.ContainsKey("other"));
_server.ParseTokens(new Line(":other NICK other2"));
Assert.IsFalse(_server.Users.ContainsKey("other"));
Assert.IsTrue(_server.Users.ContainsKey("other2"));
} }
[TestMethod] [TestMethod]
public void HostmaskJoinBoth() public void HostmaskJoinBoth()
{ {
_server.ParseTokens(new Line(":nickname!user@host JOIN #chan"));
Assert.AreEqual("user", _server.UserName);
Assert.AreEqual("host", _server.HostName);
_server.ParseTokens(new Line(":other!user@host JOIN #chan"));
var user = _server.Users["other"];
Assert.AreEqual("user", user.UserName);
Assert.AreEqual("host", user.HostName);
} }
[TestMethod] [TestMethod]
public void HostmaskJoinUser() public void HostmaskJoinUser()
{ {
_server.ParseTokens(new Line(":nickname!user JOIN #chan"));
Assert.AreEqual("user", _server.UserName);
Assert.IsNull(_server.HostName);
_server.ParseTokens(new Line(":other!user JOIN #chan"));
var user = _server.Users["other"];
Assert.AreEqual("user", user.UserName);
Assert.IsNull(user.HostName);
} }
[TestMethod] [TestMethod]
public void HostmaskJoinHost() public void HostmaskJoinHost()
{ {
_server.ParseTokens(new Line(":nickname@host JOIN #chan"));
Assert.IsNull(_server.UserName);
Assert.AreEqual("host", _server.HostName);
_server.ParseTokens(new Line(":other@host JOIN #chan"));
var user = _server.Users["other"];
Assert.IsNull(user.UserName);
Assert.AreEqual("host", user.HostName);
} }
[TestMethod] [TestMethod]
public void ExtendedJoinWithoutExtendedJoin() public void ExtendedJoinWithoutExtendedJoin()
{ {
_server.ParseTokens(new Line(":nickname JOIN #chan"));
Assert.IsNull(_server.Account);
Assert.IsNull(_server.RealName);
_server.ParseTokens(new Line(":other JOIN #chan"));
var user = _server.Users["other"];
Assert.IsNull(user.Account);
Assert.IsNull(user.RealName);
} }
[TestMethod] [TestMethod]
public void ExtendedJoinWithAccount() public void ExtendedJoinWithAccount()
{ {
_server.ParseTokens(new Line(":nickname JOIN #chan acc :realname"));
Assert.AreEqual("acc", _server.Account);
Assert.AreEqual("realname", _server.RealName);
_server.ParseTokens(new Line(":other JOIN #chan acc2 :realname2"));
var user = _server.Users["other"];
Assert.AreEqual("acc2", user.Account);
Assert.AreEqual("realname2", user.RealName);
} }
[TestMethod] [TestMethod]
public void ExtendedJoinWithoutAccount() public void ExtendedJoinWithoutAccount()
{ {
_server.ParseTokens(new Line(":nickname JOIN #chan * :realname"));
Assert.AreEqual("", _server.Account);
Assert.AreEqual("realname", _server.RealName);
_server.ParseTokens(new Line(":other JOIN #chan * :realname2"));
var user = _server.Users["other"];
Assert.AreEqual("", user.Account);
Assert.AreEqual("realname2", user.RealName);
} }
[TestMethod] [TestMethod]
public void AccountNotifyWithAccount() public void AccountNotifyWithAccount()
{ {
_server.ParseTokens(new Line(":nickname JOIN #chan"));
_server.ParseTokens(new Line(":nickname ACCOUNT acc"));
Assert.AreEqual("acc", _server.Account);
_server.ParseTokens(new Line(":other JOIN #chan"));
_server.ParseTokens(new Line(":other ACCOUNT acc2"));
var user = _server.Users["other"];
Assert.AreEqual("acc2", user.Account);
} }
[TestMethod] [TestMethod]
public void AccountNotifyWithoutAccount() public void AccountNotifyWithoutAccount()
{ {
_server.ParseTokens(new Line(":nickname JOIN #chan"));
_server.ParseTokens(new Line(":nickname ACCOUNT *"));
Assert.AreEqual("", _server.Account);
_server.ParseTokens(new Line(":other JOIN #chan"));
_server.ParseTokens(new Line(":other ACCOUNT *"));
var user = _server.Users["other"];
Assert.AreEqual("", user.Account);
} }
[TestMethod] [TestMethod]
public void HostmaskPrivmsgBoth() public void HostmaskPrivmsgBoth()
{ {
_server.ParseTokens(new Line(":nickname JOIN #chan"));
_server.ParseTokens(new Line(":nickname!user@host PRIVMSG #chan :hi"));
Assert.AreEqual("user", _server.UserName);
Assert.AreEqual("host", _server.HostName);
_server.ParseTokens(new Line(":other!user@host PRIVMSG #chan :hi"));
var user = _server.Users["other"];
Assert.AreEqual("user", user.UserName);
Assert.AreEqual("host", user.HostName);
} }
[TestMethod] [TestMethod]
public void HostmaskPrivmsgUser() public void HostmaskPrivmsgUser()
{ {
_server.ParseTokens(new Line(":nickname JOIN #chan"));
_server.ParseTokens(new Line(":nickname!user PRIVMSG #chan :hi"));
Assert.AreEqual("user", _server.UserName);
Assert.IsNull(_server.HostName);
_server.ParseTokens(new Line(":other!user PRIVMSG #chan :hi"));
var user = _server.Users["other"];
Assert.AreEqual("user", user.UserName);
Assert.IsNull(user.HostName);
} }
[TestMethod] [TestMethod]
public void HostmaskPrivmsgHost() public void HostmaskPrivmsgHost()
{ {
_server.ParseTokens(new Line(":nickname JOIN #chan"));
_server.ParseTokens(new Line(":nickname@host PRIVMSG #chan :hi"));
Assert.IsNull(_server.UserName);
Assert.AreEqual("host", _server.HostName);
_server.ParseTokens(new Line(":other@host PRIVMSG #chan :hi"));
var user = _server.Users["other"];
Assert.IsNull(user.UserName);
Assert.AreEqual("host", user.HostName);
} }
[TestMethod] [TestMethod]
public void VisibleHostWithoutUsername() public void VisibleHostWithoutUsername()
{ {
_server.ParseTokens(new Line("396 * hostname"));
Assert.IsNull(_server.UserName);
Assert.AreEqual("hostname", _server.HostName);
} }
[TestMethod] [TestMethod]
public void VisibleHostWithUsername() public void VisibleHostWithUsername()
{ {
_server.ParseTokens(new Line("396 * username@hostname"));
Assert.AreEqual("username", _server.UserName);
Assert.AreEqual("hostname", _server.HostName);
} }
[TestMethod] [TestMethod]
public void Who() public void Who()
{ {
_server.ParseTokens(new Line(":nickname JOIN #chan"));
_server.ParseTokens(new Line(":other JOIN #chan"));
_server.ParseTokens(new Line("352 * #chan user host * nickname * :0 real"));
_server.ParseTokens(new Line("352 * #chan user2 host2 * other * :0 real2"));
Assert.AreEqual("user", _server.UserName);
Assert.AreEqual("host", _server.HostName);
Assert.AreEqual("real", _server.RealName);
var user = _server.Users["other"];
Assert.AreEqual("user2", user.UserName);
Assert.AreEqual("host2", user.HostName);
Assert.AreEqual("real2", user.RealName);
} }
[TestMethod] [TestMethod]
public void Chghost() public void Chghost()
{ {
_server.ParseTokens(new Line(":nickname!user@host JOIN #chan"));
_server.ParseTokens(new Line(":nickname CHGHOST u h"));
Assert.AreEqual("u", _server.UserName);
Assert.AreEqual("h", _server.HostName);
_server.ParseTokens(new Line(":other!user2@host2 JOIN #chan"));
_server.ParseTokens(new Line(":other CHGHOST u2 h2"));
var user = _server.Users["other"];
Assert.AreEqual("u2", user.UserName);
Assert.AreEqual("h2", user.HostName);
} }
[TestMethod] [TestMethod]
public void Whois() public void Whois()
{ {
_server.ParseTokens(new Line(":nickname JOIN #chan"));
_server.ParseTokens(new Line("311 * nickname u h * :r"));
Assert.AreEqual("u", _server.UserName);
Assert.AreEqual("h", _server.HostName);
Assert.AreEqual("r", _server.RealName);
_server.ParseTokens(new Line(":other JOIN #chan"));
_server.ParseTokens(new Line(":other CHGHOST u2 h2"));
_server.ParseTokens(new Line("311 * other u2 h2 * :r2"));
var user = _server.Users["other"];
Assert.AreEqual("u2", user.UserName);
Assert.AreEqual("h2", user.HostName);
Assert.AreEqual("r2", user.RealName);
} }
[TestMethod] [TestMethod]
public void AwaySet() public void AwaySet()
{ {
_server.ParseTokens(new Line(":nickname JOIN #chan"));
_server.ParseTokens(new Line(":other JOIN #chan"));
var user = _server.Users["other"];
Assert.IsNull(_server.Away);
Assert.IsNull(user.Away);
_server.ParseTokens(new Line(":nickname AWAY :bye bye"));
_server.ParseTokens(new Line(":other AWAY :ich geh weg"));
Assert.AreEqual("bye bye", _server.Away);
Assert.AreEqual("ich geh weg", user.Away);
} }
[TestMethod] [TestMethod]
public void AwayUnset() public void AwayUnset()
{ {
_server.ParseTokens(new Line(":nickname JOIN #chan"));
_server.ParseTokens(new Line(":other JOIN #chan"));
_server.ParseTokens(new Line(":nickname AWAY :bye bye"));
_server.ParseTokens(new Line(":nickname AWAY"));
_server.ParseTokens(new Line(":other AWAY :ich geh weg"));
_server.ParseTokens(new Line(":other AWAY"));
var user = _server.Users["other"];
Assert.IsNull(_server.Away);
Assert.IsNull(user.Away);
} }
[TestMethod] [TestMethod]
public void Setname() public void Setname()
{ {
_server.ParseTokens(new Line(":nickname JOIN #chan"));
_server.ParseTokens(new Line(":other JOIN #chan"));
var user = _server.Users["other"];
Assert.IsNull(user.RealName);
Assert.IsNull(_server.RealName);
_server.ParseTokens(new Line(":nickname SETNAME :new now know how"));
_server.ParseTokens(new Line(":other SETNAME :tyrannosaurus hex"));
Assert.AreEqual("new now know how", _server.RealName);
Assert.AreEqual("tyrannosaurus hex", user.RealName);
} }
} }
} }