using System; using System.Collections.Generic; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace IRCTokens.Tests { [TestClass] public class Format { [TestMethod] public void TestTags() { var line = new Line("PRIVMSG", "#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("PRIVMSG", "#channel", "hello").Format(); Assert.AreEqual("PRIVMSG #channel hello", line); } [TestMethod] public void TestNullTag() { var line = new Line("PRIVMSG", "#channel", "hello") {Tags = new Dictionary {{"a", null}}} .Format(); Assert.AreEqual("@a PRIVMSG #channel hello", line); } [TestMethod] public void TestEmptyTag() { var line = new Line("PRIVMSG", "#channel", "hello") {Tags = new Dictionary {{"a", ""}}} .Format(); Assert.AreEqual("@a PRIVMSG #channel hello", line); } [TestMethod] public void TestSource() { var line = new Line("PRIVMSG", "#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("PRIVMSG", "#channel", "hello world").Format(); Assert.AreEqual("PRIVMSG #channel :hello world", line); } [TestMethod] public void TestTrailingNoSpace() { var line = new Line("PRIVMSG", "#channel", "helloworld").Format(); Assert.AreEqual("PRIVMSG #channel helloworld", line); } [TestMethod] public void TestTrailingDoubleColon() { var line = new Line("PRIVMSG", "#channel", ":helloworld").Format(); Assert.AreEqual("PRIVMSG #channel ::helloworld", line); } [TestMethod] public void TestInvalidNonLastSpace() { Assert.ThrowsException(() => { new Line("USER", "user", "0 *", "real name").Format(); }); } [TestMethod] public void TestInvalidNonLastColon() { Assert.ThrowsException(() => { new Line("PRIVMSG", ":#channel", "hello").Format(); }); } } }