292 lines
11 KiB
C#
292 lines
11 KiB
C#
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.ParseTokens(new Line("001 nickname"));
|
|
}
|
|
|
|
[TestMethod]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
public void VisibleHostWithoutUsername()
|
|
{
|
|
_server.ParseTokens(new Line("396 * hostname"));
|
|
Assert.IsNull(_server.UserName);
|
|
Assert.AreEqual("hostname", _server.HostName);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void VisibleHostWithUsername()
|
|
{
|
|
_server.ParseTokens(new Line("396 * username@hostname"));
|
|
Assert.AreEqual("username", _server.UserName);
|
|
Assert.AreEqual("hostname", _server.HostName);
|
|
}
|
|
|
|
[TestMethod]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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]
|
|
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);
|
|
}
|
|
}
|
|
}
|