using Microsoft.VisualStudio.TestTools.UnitTesting; using System; using System.Collections.Generic; namespace IrcTokens.Tests { [TestClass] public class FormatTests { [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(); }); } } }