using Microsoft.VisualStudio.TestTools.UnitTesting; using System; using System.Collections.Generic; namespace IrcTokens.Tests { [TestClass] public class Format { [TestMethod] public void TestTags() { var line = new Line { Command = "PRIVMSG", Params = new List { "#channel", "hello" }, Tags = new Dictionary { { "id", "\\" + " " + ";" + "\r\n" } } }.Format(); Assert.AreEqual("@id=\\\\\\s\\:\\r\\n PRIVMSG #channel hello", line); } [TestMethod] public void TestMissingTag() { var line = new Line { Command = "PRIVMSG", Params = new List { "#channel", "hello" } }.Format(); Assert.AreEqual("PRIVMSG #channel hello", line); } [TestMethod] public void TestNullTag() { var line = new Line { Command = "PRIVMSG", Params = new List { "#channel", "hello" }, Tags = new Dictionary { { "a", null } } }.Format(); Assert.AreEqual("@a PRIVMSG #channel hello", line); } [TestMethod] public void TestEmptyTag() { var line = new Line { Command = "PRIVMSG", Params = new List { "#channel", "hello" }, Tags = new Dictionary { { "a", "" } } }.Format(); Assert.AreEqual("@a PRIVMSG #channel hello", line); } [TestMethod] public void TestSource() { var line = new Line { Command = "PRIVMSG", Params = new List { "#channel", "hello" }, Source = "nick!user@host" }.Format(); Assert.AreEqual(":nick!user@host PRIVMSG #channel hello", line); } [TestMethod] public void TestCommandLowercase() { var line = new Line { Command = "privmsg" }.Format(); Assert.AreEqual("privmsg", line); } [TestMethod] public void TestCommandUppercase() { var line = new Line { Command = "PRIVMSG" }.Format(); Assert.AreEqual("PRIVMSG", line); } [TestMethod] public void TestTrailingSpace() { var line = new Line { Command = "PRIVMSG", Params = new List { "#channel", "hello world" } }.Format(); Assert.AreEqual("PRIVMSG #channel :hello world", line); } [TestMethod] public void TestTrailingNoSpace() { var line = new Line { Command = "PRIVMSG", Params = new List { "#channel", "helloworld" } }.Format(); Assert.AreEqual("PRIVMSG #channel helloworld", line); } [TestMethod] public void TestTrailingDoubleColon() { var line = new Line { Command = "PRIVMSG", Params = new List { "#channel", ":helloworld" } }.Format(); Assert.AreEqual("PRIVMSG #channel ::helloworld", line); } [TestMethod] public void TestInvalidNonLastSpace() { Assert.ThrowsException(() => { new Line { Command = "USER", Params = new List { "user", "0 *", "real name" } }.Format(); }); } [TestMethod] public void TestInvalidNonLastColon() { Assert.ThrowsException(() => { new Line { Command = "PRIVMSG", Params = new List { ":#channel", "hello" } }.Format(); }); } } }