diff options
Diffstat (limited to 'IrcTokens/Tests/FormatTests.cs')
-rw-r--r-- | IrcTokens/Tests/FormatTests.cs | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/IrcTokens/Tests/FormatTests.cs b/IrcTokens/Tests/FormatTests.cs new file mode 100644 index 0000000..a804c1d --- /dev/null +++ b/IrcTokens/Tests/FormatTests.cs @@ -0,0 +1,150 @@ +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<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(); + }); + } + } +} |