ircsharp/IRCSharp.Tests/State/Emit.cs

119 lines
3.9 KiB
C#
Raw Normal View History

using System.Collections.Generic;
2022-03-25 19:11:48 +00:00
using IRCStates;
2020-05-15 03:06:10 +00:00
using IRCTokens;
using Microsoft.VisualStudio.TestTools.UnitTesting;
2022-03-25 19:11:48 +00:00
namespace IRCSharp.Tests.State
{
[TestClass]
public class Emit
{
private Server _server;
[TestInitialize]
public void TestInitialize()
{
_server = new Server("test");
2020-05-13 18:20:47 +00:00
_server.Parse(new Line("001 nickname"));
}
[TestMethod]
public void EmitJoin()
{
2020-05-13 18:20:47 +00:00
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);
2020-05-13 18:20:47 +00:00
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()
{
2020-05-13 18:20:47 +00:00
_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);
2020-05-13 18:20:47 +00:00
_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()
{
2020-05-13 18:20:47 +00:00
_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()
{
2020-05-13 18:20:47 +00:00
_server.Parse(new Line(":nickname JOIN #chan"));
var user = _server.Users["nickname"];
var channel = _server.Channels["#chan"];
2020-05-13 18:20:47 +00:00
_server.Parse(new Line(":other JOIN #chan"));
var userOther = _server.Users["other"];
2020-05-13 18:20:47 +00:00
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()
{
2020-05-13 18:20:47 +00:00
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);
}
}
}