diff options
Diffstat (limited to 'IrcTokens/Tests/Format.cs')
-rw-r--r-- | IrcTokens/Tests/Format.cs | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/IrcTokens/Tests/Format.cs b/IrcTokens/Tests/Format.cs new file mode 100644 index 0000000..64f974a --- /dev/null +++ b/IrcTokens/Tests/Format.cs @@ -0,0 +1,150 @@ +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<string> { "#channel", "hello" }, + Tags = new Dictionary<string, string> { { "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<string> { "#channel", "hello" } + }.Format(); + + Assert.AreEqual("PRIVMSG #channel hello", line); + } + + [TestMethod] + public void TestNullTag() + { + var line = new Line + { + Command = "PRIVMSG", + Params = new List<string> { "#channel", "hello" }, + Tags = new Dictionary<string, string> { { "a", null } } + }.Format(); + + Assert.AreEqual("@a PRIVMSG #channel hello", line); + } + + [TestMethod] + public void TestEmptyTag() + { + var line = new Line + { + Command = "PRIVMSG", + Params = new List<string> { "#channel", "hello" }, + Tags = new Dictionary<string, string> { { "a", "" } } + }.Format(); + + Assert.AreEqual("@a PRIVMSG #channel hello", line); + } + + [TestMethod] + public void TestSource() + { + var line = new Line + { + Command = "PRIVMSG", + Params = new List<string> { "#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<string> { "#channel", "hello world" } + }.Format(); + + Assert.AreEqual("PRIVMSG #channel :hello world", line); + } + + [TestMethod] + public void TestTrailingNoSpace() + { + var line = new Line + { + Command = "PRIVMSG", + Params = new List<string> { "#channel", "helloworld" } + }.Format(); + + Assert.AreEqual("PRIVMSG #channel helloworld", line); + } + + [TestMethod] + public void TestTrailingDoubleColon() + { + var line = new Line + { + Command = "PRIVMSG", + Params = new List<string> { "#channel", ":helloworld" } + }.Format(); + + Assert.AreEqual("PRIVMSG #channel ::helloworld", line); + } + + [TestMethod] + public void TestInvalidNonLastSpace() + { + Assert.ThrowsException<ArgumentException>(() => + { + new Line + { + Command = "USER", + Params = new List<string> { "user", "0 *", "real name" } + }.Format(); + }); + } + + [TestMethod] + public void TestInvalidNonLastColon() + { + Assert.ThrowsException<ArgumentException>(() => + { + new Line + { + Command = "PRIVMSG", + Params = new List<string> { ":#channel", "hello" } + }.Format(); + }); + } + } +} |