ircsharp/IRCSharp.Tests/State/Emit.cs

118 lines
3.9 KiB
C#

using System.Collections.Generic;
using IRCTokens;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace IRCStates.Tests
{
[TestClass]
public class Emit
{
private Server _server;
[TestInitialize]
public void TestInitialize()
{
_server = new Server("test");
_server.Parse(new Line("001 nickname"));
}
[TestMethod]
public void EmitJoin()
{
var emit = _server.Parse(new Line(":nickname JOIN #chan"));
Assert.AreEqual("JOIN", emit.Command);
Assert.IsTrue(emit.Self);
Assert.AreEqual(_server.Users["nickname"], emit.User);
Assert.AreEqual(_server.Channels["#chan"], emit.Channel);
emit = _server.Parse(new Line(":other JOIN #chan"));
Assert.IsNotNull(emit);
Assert.AreEqual("JOIN", emit.Command);
Assert.IsFalse(emit.Self);
Assert.AreEqual(_server.Users["other"], emit.User);
Assert.AreEqual(_server.Channels["#chan"], emit.Channel);
}
[TestMethod]
public void EmitPrivmsg()
{
_server.Parse(new Line(":nickname JOIN #chan"));
var emit = _server.Parse(new Line(":nickname PRIVMSG #chan :hello"));
Assert.IsNotNull(emit);
Assert.AreEqual("PRIVMSG", emit.Command);
Assert.AreEqual("hello", emit.Text);
Assert.IsTrue(emit.SelfSource);
Assert.AreEqual(_server.Users["nickname"], emit.User);
Assert.AreEqual(_server.Channels["#chan"], emit.Channel);
_server.Parse(new Line(":other JOIN #chan"));
emit = _server.Parse(new Line(":other PRIVMSG #chan :hello2"));
Assert.IsNotNull(emit);
Assert.AreEqual("PRIVMSG", emit.Command);
Assert.AreEqual("hello2", emit.Text);
Assert.IsFalse(emit.SelfSource);
Assert.AreEqual(_server.Users["other"], emit.User);
Assert.AreEqual(_server.Channels["#chan"], emit.Channel);
}
[TestMethod]
public void EmitPrivmsgNoJoin()
{
_server.Parse(new Line(":nickname JOIN #chan"));
var emit = _server.Parse(new Line(":other PRIVMSG #chan :hello"));
Assert.IsNotNull(emit);
Assert.AreEqual("PRIVMSG", emit.Command);
Assert.AreEqual("hello", emit.Text);
Assert.IsFalse(emit.SelfSource);
Assert.IsNotNull(emit.User);
var channel = _server.Channels["#chan"];
Assert.AreEqual(channel, emit.Channel);
}
[TestMethod]
public void EmitKick()
{
_server.Parse(new Line(":nickname JOIN #chan"));
var user = _server.Users["nickname"];
var channel = _server.Channels["#chan"];
_server.Parse(new Line(":other JOIN #chan"));
var userOther = _server.Users["other"];
var emit = _server.Parse(new Line(":nickname KICK #chan other :reason"));
Assert.IsNotNull(emit);
Assert.AreEqual("KICK", emit.Command);
Assert.AreEqual("reason", emit.Text);
Assert.IsTrue(emit.SelfSource);
Assert.AreEqual(user, emit.UserSource);
Assert.AreEqual(userOther, emit.UserTarget);
Assert.AreEqual(channel, emit.Channel);
}
[TestMethod]
public void EmitMode()
{
var emit = _server.Parse(new Line("MODE nickname x+i-i+wi-wi"));
Assert.IsNotNull(emit);
Assert.AreEqual("MODE", emit.Command);
Assert.IsTrue(emit.SelfTarget);
CollectionAssert.AreEqual(new List<string>
{
"+x",
"+i",
"-i",
"+w",
"+i",
"-w",
"-i"
}, emit.Tokens);
}
}
}