ircsharp/IRCSharp.Tests/States/Cap.cs

126 lines
3.8 KiB
C#

namespace IRCSharp.Tests.States;
[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<string, string>(), _server.AvailableCaps);
_server.Parse(new("CAP * LS :a b"));
CollectionAssert.AreEqual(new Dictionary<string, string> {{"a", ""}, {"b", ""}}, _server.AvailableCaps);
}
[TestMethod]
public void LsTwoLines()
{
_server.Parse(new("CAP * LS * :a b"));
CollectionAssert.AreEqual(new Dictionary<string, string>(), _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<string, string> {{"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<string> {"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<string> {"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<string>(), _server.AgreedCaps);
}
[TestMethod]
public void NewNoLs()
{
_server.Parse(new("CAP * NEW :a"));
CollectionAssert.AreEqual(new Dictionary<string, string> {{"a", ""}}, _server.AvailableCaps);
}
[TestMethod]
public void NewOneLine()
{
_server.Parse(new("CAP * LS :a"));
_server.Parse(new("CAP * NEW :b"));
CollectionAssert.AreEqual(new Dictionary<string, string> {{"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<string, string> {{"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<string, string>(), _server.AvailableCaps);
CollectionAssert.AreEqual(new List<string>(), _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<string, string> {{"b", ""}}, _server.AvailableCaps);
CollectionAssert.AreEqual(new List<string> {"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<string, string>(), _server.AvailableCaps);
CollectionAssert.AreEqual(new List<string>(), _server.AgreedCaps);
}
}