diff options
Diffstat (limited to 'IrcStates/Tests/Cap.cs')
-rw-r--r-- | IrcStates/Tests/Cap.cs | 123 |
1 files changed, 122 insertions, 1 deletions
diff --git a/IrcStates/Tests/Cap.cs b/IrcStates/Tests/Cap.cs index dcd0e50..159490d 100644 --- a/IrcStates/Tests/Cap.cs +++ b/IrcStates/Tests/Cap.cs @@ -1,9 +1,130 @@ -using Microsoft.VisualStudio.TestTools.UnitTesting; +using System.Collections.Generic; +using IrcTokens; +using Microsoft.VisualStudio.TestTools.UnitTesting; namespace IrcStates.Tests { [TestClass] public class Cap { + private Server _server; + + [TestInitialize] + public void TestInitialize() + { + _server = new Server("test"); + } + + [TestMethod] + public void LSOneLine() + { + Assert.IsFalse(_server.HasCap); + CollectionAssert.AreEqual(new Dictionary<string, string>(), _server.AvailableCaps); + _server.ParseTokens(new Line("CAP * LS :a b")); + CollectionAssert.AreEqual(new Dictionary<string, string> {{"a", ""}, {"b", ""}}, _server.AvailableCaps); + } + + [TestMethod] + public void LSTwoLines() + { + _server.ParseTokens(new Line("CAP * LS * :a b")); + CollectionAssert.AreEqual(new Dictionary<string, string>(), _server.AvailableCaps); + _server.ParseTokens(new Line("CAP * LS :c")); + CollectionAssert.AreEqual(new Dictionary<string, string> {{"a", ""}, {"b", ""}, {"c", ""}}, + _server.AvailableCaps); + } + + [TestMethod] + public void LSValues() + { + _server.ParseTokens(new Line("CAP * LS :a b= c=1")); + CollectionAssert.AreEqual(new Dictionary<string, string> {{"a", ""}, {"b", ""}, {"c", "1"}}, + _server.AvailableCaps); + } + + [TestMethod] + public void ACKOneLine() + { + _server.ParseTokens(new Line("CAP * LS :a b")); + _server.ParseTokens(new Line("CAP * ACK :a b")); + CollectionAssert.AreEqual(new List<string> {"a", "b"}, _server.AgreedCaps); + } + + [TestMethod] + public void ACKTwoLines() + { + _server.ParseTokens(new Line("CAP * LS :a b c")); + _server.ParseTokens(new Line("CAP * ACK * :a b")); + _server.ParseTokens(new Line("CAP * ACK :c")); + CollectionAssert.AreEqual(new List<string> {"a", "b", "c"}, _server.AgreedCaps); + } + + [TestMethod] + public void ACKNotLS() + { + _server.ParseTokens(new Line("CAP * LS a")); + _server.ParseTokens(new Line("CAP * ACK b")); + CollectionAssert.AreEqual(new List<string>(), _server.AgreedCaps); + } + + [TestMethod] + public void NEWNoLS() + { + _server.ParseTokens(new Line("CAP * NEW :a")); + CollectionAssert.AreEqual(new Dictionary<string, string> {{"a", ""}}, _server.AvailableCaps); + } + + [TestMethod] + public void NEWOneLine() + { + _server.ParseTokens(new Line("CAP * LS :a")); + _server.ParseTokens(new Line("CAP * NEW :b")); + CollectionAssert.AreEqual(new Dictionary<string, string> {{"a", ""}, {"b", ""}}, _server.AvailableCaps); + } + + [TestMethod] + public void NEWTwoLines() + { + _server.ParseTokens(new Line("CAP * LS :a")); + _server.ParseTokens(new Line("CAP * NEW :b c")); + CollectionAssert.AreEqual(new Dictionary<string, string> {{"a", ""}, {"b", ""}, {"c", ""}}, + _server.AvailableCaps); + } + + [TestMethod] + public void DELNotAcked() + { + _server.ParseTokens(new Line("CAP * DEL a")); + } + + [TestMethod] + public void DELOneLS() + { + _server.ParseTokens(new Line("CAP * LS :a")); + _server.ParseTokens(new Line("CAP * ACK :a")); + _server.ParseTokens(new Line("CAP * DEL :a")); + CollectionAssert.AreEqual(new Dictionary<string, string>(), _server.AvailableCaps); + CollectionAssert.AreEqual(new List<string>(), _server.AgreedCaps); + } + + [TestMethod] + public void DELTwoLS() + { + _server.ParseTokens(new Line("CAP * LS :a b")); + _server.ParseTokens(new Line("CAP * ACK :a b")); + _server.ParseTokens(new Line("CAP * DEL :a")); + CollectionAssert.AreEqual(new Dictionary<string, string> {{"b", ""}}, _server.AvailableCaps); + CollectionAssert.AreEqual(new List<string> {"b"}, _server.AgreedCaps); + } + + [TestMethod] + public void DELTwoDEL() + { + _server.ParseTokens(new Line("CAP * LS :a b")); + _server.ParseTokens(new Line("CAP * ACK :a b")); + _server.ParseTokens(new Line("CAP * DEL :a b")); + CollectionAssert.AreEqual(new Dictionary<string, string>(), _server.AvailableCaps); + CollectionAssert.AreEqual(new List<string>(), _server.AgreedCaps); + } } } |