namespace IRCSharp.Tests.State; [TestClass] public class Cap { private Server _server; [TestInitialize] public void TestInitialize() { _server = new("test"); } [TestMethod] public void LSOneLine() { Assert.IsFalse(_server.HasCap); CollectionAssert.AreEqual(new Dictionary(), _server.AvailableCaps); _server.Parse(new("CAP * LS :a b")); CollectionAssert.AreEqual(new Dictionary {{"a", ""}, {"b", ""}}, _server.AvailableCaps); } [TestMethod] public void LsTwoLines() { _server.Parse(new("CAP * LS * :a b")); CollectionAssert.AreEqual(new Dictionary(), _server.AvailableCaps); _server.Parse(new("CAP * LS :c")); Assert.IsTrue(_server.AvailableCaps.ContainsKey("a")); Assert.IsTrue(_server.AvailableCaps.ContainsKey("b")); Assert.IsTrue(_server.AvailableCaps.ContainsKey("c")); } [TestMethod] public void LsValues() { _server.Parse(new("CAP * LS :a b= c=1")); CollectionAssert.AreEqual(new Dictionary {{"a", ""}, {"b", ""}, {"c", "1"}}, _server.AvailableCaps); } [TestMethod] public void ACKOneLine() { _server.Parse(new("CAP * LS :a b")); _server.Parse(new("CAP * ACK :a b")); CollectionAssert.AreEqual(new List {"a", "b"}, _server.AgreedCaps); } [TestMethod] public void ACKTwoLines() { _server.Parse(new("CAP * LS :a b c")); _server.Parse(new("CAP * ACK * :a b")); _server.Parse(new("CAP * ACK :c")); CollectionAssert.AreEqual(new List {"a", "b", "c"}, _server.AgreedCaps); } [TestMethod] public void ACKNotLs() { _server.Parse(new("CAP * LS a")); _server.Parse(new("CAP * ACK b")); CollectionAssert.AreEqual(new List(), _server.AgreedCaps); } [TestMethod] public void NewNoLs() { _server.Parse(new("CAP * NEW :a")); CollectionAssert.AreEqual(new Dictionary {{"a", ""}}, _server.AvailableCaps); } [TestMethod] public void NewOneLine() { _server.Parse(new("CAP * LS :a")); _server.Parse(new("CAP * NEW :b")); CollectionAssert.AreEqual(new Dictionary {{"a", ""}, {"b", ""}}, _server.AvailableCaps); } [TestMethod] public void NewTwoLines() { _server.Parse(new("CAP * LS :a")); _server.Parse(new("CAP * NEW :b c")); CollectionAssert.AreEqual(new Dictionary {{"a", ""}, {"b", ""}, {"c", ""}}, _server.AvailableCaps); } [TestMethod] public void DelNotAcked() { _server.Parse(new("CAP * DEL a")); } [TestMethod] public void DELOneLS() { _server.Parse(new("CAP * LS :a")); _server.Parse(new("CAP * ACK :a")); _server.Parse(new("CAP * DEL :a")); CollectionAssert.AreEqual(new Dictionary(), _server.AvailableCaps); CollectionAssert.AreEqual(new List(), _server.AgreedCaps); } [TestMethod] public void DelTwoLs() { _server.Parse(new("CAP * LS :a b")); _server.Parse(new("CAP * ACK :a b")); _server.Parse(new("CAP * DEL :a")); CollectionAssert.AreEqual(new Dictionary {{"b", ""}}, _server.AvailableCaps); CollectionAssert.AreEqual(new List {"b"}, _server.AgreedCaps); } [TestMethod] public void DelTwoDel() { _server.Parse(new("CAP * LS :a b")); _server.Parse(new("CAP * ACK :a b")); _server.Parse(new("CAP * DEL :a b")); CollectionAssert.AreEqual(new Dictionary(), _server.AvailableCaps); CollectionAssert.AreEqual(new List(), _server.AgreedCaps); } }