using System.Collections.Generic; using IRCStates; using IRCTokens; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace IRCSharp.Tests.State { [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 { "+x", "+i", "-i", "+w", "+i", "-w", "-i" }, emit.Tokens); } } }