diff options
author | Ben Harris <ben@tilde.team> | 2020-11-10 18:35:21 -0500 |
---|---|---|
committer | Ben Harris <ben@tilde.team> | 2020-11-10 18:35:21 -0500 |
commit | 35bbd30c2506b3d0b18397ef1443fb18c0d893d6 (patch) | |
tree | 893862078b9045fbfb73296a0290d16f245b2c2c /IRCSharp.Tests/State/User.cs | |
parent | b8e2634193eef0b7a4db417144fe7f38a5140c3b (diff) |
Move tests to a separate project
Diffstat (limited to 'IRCSharp.Tests/State/User.cs')
-rw-r--r-- | IRCSharp.Tests/State/User.cs | 298 |
1 files changed, 298 insertions, 0 deletions
diff --git a/IRCSharp.Tests/State/User.cs b/IRCSharp.Tests/State/User.cs new file mode 100644 index 0000000..61d7157 --- /dev/null +++ b/IRCSharp.Tests/State/User.cs @@ -0,0 +1,298 @@ +using IRCTokens; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace IRCStates.Tests +{ + [TestClass] + public class User + { + private Server _server; + + [TestInitialize] + public void TestInitialize() + { + _server = new Server("test"); + _server.Parse(new Line("001 nickname")); + } + + [TestMethod] + public void Welcome() + { + Assert.AreEqual("test", _server.Name); + Assert.AreEqual("nickname", _server.NickName); + } + + [TestMethod] + public void NicknameChange() + { + _server.Parse(new Line(":nickname NICK nickname2")); + Assert.AreEqual("nickname2", _server.NickName); + + _server.Parse(new Line(":nickname2 JOIN #chan")); + _server.Parse(new Line(":other JOIN #chan")); + Assert.IsTrue(_server.Users.ContainsKey("other")); + + _server.Parse(new Line(":other NICK other2")); + Assert.IsFalse(_server.Users.ContainsKey("other")); + Assert.IsTrue(_server.Users.ContainsKey("other2")); + } + + [TestMethod] + public void HostmaskJoinBoth() + { + _server.Parse(new Line(":nickname!user@host JOIN #chan")); + Assert.AreEqual("user", _server.UserName); + Assert.AreEqual("host", _server.HostName); + + _server.Parse(new Line(":other!user@host JOIN #chan")); + var user = _server.Users["other"]; + Assert.AreEqual("user", user.UserName); + Assert.AreEqual("host", user.HostName); + } + + [TestMethod] + public void HostmaskJoinUser() + { + _server.Parse(new Line(":nickname!user JOIN #chan")); + Assert.AreEqual("user", _server.UserName); + Assert.IsNull(_server.HostName); + + _server.Parse(new Line(":other!user JOIN #chan")); + var user = _server.Users["other"]; + Assert.AreEqual("user", user.UserName); + Assert.IsNull(user.HostName); + } + + [TestMethod] + public void HostmaskJoinHost() + { + _server.Parse(new Line(":nickname@host JOIN #chan")); + Assert.IsNull(_server.UserName); + Assert.AreEqual("host", _server.HostName); + + _server.Parse(new Line(":other@host JOIN #chan")); + var user = _server.Users["other"]; + Assert.IsNull(user.UserName); + Assert.AreEqual("host", user.HostName); + } + + [TestMethod] + public void ExtendedJoinWithoutExtendedJoin() + { + _server.Parse(new Line(":nickname JOIN #chan")); + Assert.IsNull(_server.Account); + Assert.IsNull(_server.RealName); + + _server.Parse(new Line(":other JOIN #chan")); + var user = _server.Users["other"]; + Assert.IsNull(user.Account); + Assert.IsNull(user.RealName); + } + + [TestMethod] + public void ExtendedJoinWithAccount() + { + _server.Parse(new Line(":nickname JOIN #chan acc :realname")); + Assert.AreEqual("acc", _server.Account); + Assert.AreEqual("realname", _server.RealName); + + _server.Parse(new Line(":other JOIN #chan acc2 :realname2")); + var user = _server.Users["other"]; + Assert.AreEqual("acc2", user.Account); + Assert.AreEqual("realname2", user.RealName); + } + + [TestMethod] + public void ExtendedJoinWithoutAccount() + { + _server.Parse(new Line(":nickname JOIN #chan * :realname")); + Assert.AreEqual("", _server.Account); + Assert.AreEqual("realname", _server.RealName); + + _server.Parse(new Line(":other JOIN #chan * :realname2")); + var user = _server.Users["other"]; + Assert.AreEqual("", user.Account); + Assert.AreEqual("realname2", user.RealName); + } + + [TestMethod] + public void AccountNotifyWithAccount() + { + _server.Parse(new Line(":nickname JOIN #chan")); + _server.Parse(new Line(":nickname ACCOUNT acc")); + Assert.AreEqual("acc", _server.Account); + + _server.Parse(new Line(":other JOIN #chan")); + _server.Parse(new Line(":other ACCOUNT acc2")); + var user = _server.Users["other"]; + Assert.AreEqual("acc2", user.Account); + } + + [TestMethod] + public void AccountNotifyWithoutAccount() + { + _server.Parse(new Line(":nickname JOIN #chan")); + _server.Parse(new Line(":nickname ACCOUNT *")); + Assert.AreEqual("", _server.Account); + + _server.Parse(new Line(":other JOIN #chan")); + _server.Parse(new Line(":other ACCOUNT *")); + var user = _server.Users["other"]; + Assert.AreEqual("", user.Account); + } + + [TestMethod] + public void HostmaskPrivmsgBoth() + { + _server.Parse(new Line(":nickname JOIN #chan")); + _server.Parse(new Line(":nickname!user@host PRIVMSG #chan :hi")); + Assert.AreEqual("user", _server.UserName); + Assert.AreEqual("host", _server.HostName); + + _server.Parse(new Line(":other!user@host PRIVMSG #chan :hi")); + var user = _server.Users["other"]; + Assert.AreEqual("user", user.UserName); + Assert.AreEqual("host", user.HostName); + } + + [TestMethod] + public void HostmaskPrivmsgUser() + { + _server.Parse(new Line(":nickname JOIN #chan")); + _server.Parse(new Line(":nickname!user PRIVMSG #chan :hi")); + Assert.AreEqual("user", _server.UserName); + Assert.IsNull(_server.HostName); + + _server.Parse(new Line(":other!user PRIVMSG #chan :hi")); + var user = _server.Users["other"]; + Assert.AreEqual("user", user.UserName); + Assert.IsNull(user.HostName); + } + + [TestMethod] + public void HostmaskPrivmsgHost() + { + _server.Parse(new Line(":nickname JOIN #chan")); + _server.Parse(new Line(":nickname@host PRIVMSG #chan :hi")); + Assert.IsNull(_server.UserName); + Assert.AreEqual("host", _server.HostName); + + _server.Parse(new Line(":other@host PRIVMSG #chan :hi")); + var user = _server.Users["other"]; + Assert.IsNull(user.UserName); + Assert.AreEqual("host", user.HostName); + } + + [TestMethod] + public void VisibleHostWithoutUsername() + { + _server.Parse(new Line("396 * hostname")); + Assert.IsNull(_server.UserName); + Assert.AreEqual("hostname", _server.HostName); + } + + [TestMethod] + public void VisibleHostWithUsername() + { + _server.Parse(new Line("396 * username@hostname")); + Assert.AreEqual("username", _server.UserName); + Assert.AreEqual("hostname", _server.HostName); + } + + [TestMethod] + public void Who() + { + _server.Parse(new Line(":nickname JOIN #chan")); + _server.Parse(new Line(":other JOIN #chan")); + _server.Parse(new Line("352 * #chan user host * nickname * :0 real")); + _server.Parse(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] + public void Chghost() + { + _server.Parse(new Line(":nickname!user@host JOIN #chan")); + _server.Parse(new Line(":nickname CHGHOST u h")); + Assert.AreEqual("u", _server.UserName); + Assert.AreEqual("h", _server.HostName); + + _server.Parse(new Line(":other!user2@host2 JOIN #chan")); + _server.Parse(new Line(":other CHGHOST u2 h2")); + var user = _server.Users["other"]; + Assert.AreEqual("u2", user.UserName); + Assert.AreEqual("h2", user.HostName); + } + + [TestMethod] + public void Whois() + { + _server.Parse(new Line(":nickname JOIN #chan")); + _server.Parse(new Line("311 * nickname u h * :r")); + Assert.AreEqual("u", _server.UserName); + Assert.AreEqual("h", _server.HostName); + Assert.AreEqual("r", _server.RealName); + + _server.Parse(new Line(":other JOIN #chan")); + _server.Parse(new Line(":other CHGHOST u2 h2")); + _server.Parse(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] + public void AwaySet() + { + _server.Parse(new Line(":nickname JOIN #chan")); + _server.Parse(new Line(":other JOIN #chan")); + var user = _server.Users["other"]; + Assert.IsNull(_server.Away); + Assert.IsNull(user.Away); + + _server.Parse(new Line(":nickname AWAY :bye bye")); + _server.Parse(new Line(":other AWAY :ich geh weg")); + Assert.AreEqual("bye bye", _server.Away); + Assert.AreEqual("ich geh weg", user.Away); + } + + [TestMethod] + public void AwayUnset() + { + _server.Parse(new Line(":nickname JOIN #chan")); + _server.Parse(new Line(":other JOIN #chan")); + _server.Parse(new Line(":nickname AWAY :bye bye")); + _server.Parse(new Line(":nickname AWAY")); + _server.Parse(new Line(":other AWAY :ich geh weg")); + _server.Parse(new Line(":other AWAY")); + + var user = _server.Users["other"]; + Assert.IsNull(_server.Away); + Assert.IsNull(user.Away); + } + + [TestMethod] + public void Setname() + { + _server.Parse(new Line(":nickname JOIN #chan")); + _server.Parse(new Line(":other JOIN #chan")); + var user = _server.Users["other"]; + Assert.IsNull(user.RealName); + Assert.IsNull(_server.RealName); + + _server.Parse(new Line(":nickname SETNAME :new now know how")); + _server.Parse(new Line(":other SETNAME :tyrannosaurus hex")); + Assert.AreEqual("new now know how", _server.RealName); + Assert.AreEqual("tyrannosaurus hex", user.RealName); + } + } +} |