2024-04-23 22:17:27 +00:00
|
|
|
|
namespace IRCSharp.Tests.States;
|
2020-04-22 20:28:51 +00:00
|
|
|
|
|
2024-03-26 20:10:54 +00:00
|
|
|
|
[TestClass]
|
|
|
|
|
public class Cap
|
2020-04-22 20:28:51 +00:00
|
|
|
|
{
|
2024-03-26 20:10:54 +00:00
|
|
|
|
private Server _server;
|
2020-04-29 05:28:48 +00:00
|
|
|
|
|
2024-03-26 20:10:54 +00:00
|
|
|
|
[TestInitialize]
|
|
|
|
|
public void TestInitialize()
|
|
|
|
|
{
|
|
|
|
|
_server = new("test");
|
|
|
|
|
}
|
2020-04-29 05:28:48 +00:00
|
|
|
|
|
2024-03-26 20:10:54 +00:00
|
|
|
|
[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);
|
|
|
|
|
}
|
2020-04-29 05:28:48 +00:00
|
|
|
|
|
2024-03-26 20:10:54 +00:00
|
|
|
|
[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"));
|
|
|
|
|
}
|
2020-04-29 05:28:48 +00:00
|
|
|
|
|
2024-03-26 20:10:54 +00:00
|
|
|
|
[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);
|
|
|
|
|
}
|
2020-04-29 05:28:48 +00:00
|
|
|
|
|
2024-03-26 20:10:54 +00:00
|
|
|
|
[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);
|
|
|
|
|
}
|
2020-04-29 05:28:48 +00:00
|
|
|
|
|
2024-03-26 20:10:54 +00:00
|
|
|
|
[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);
|
|
|
|
|
}
|
2020-04-29 05:28:48 +00:00
|
|
|
|
|
2024-03-26 20:10:54 +00:00
|
|
|
|
[TestMethod]
|
|
|
|
|
public void ACKNotLs()
|
|
|
|
|
{
|
|
|
|
|
_server.Parse(new("CAP * LS a"));
|
|
|
|
|
_server.Parse(new("CAP * ACK b"));
|
|
|
|
|
CollectionAssert.AreEqual(new List<string>(), _server.AgreedCaps);
|
|
|
|
|
}
|
2020-04-29 05:28:48 +00:00
|
|
|
|
|
2024-03-26 20:10:54 +00:00
|
|
|
|
[TestMethod]
|
|
|
|
|
public void NewNoLs()
|
|
|
|
|
{
|
|
|
|
|
_server.Parse(new("CAP * NEW :a"));
|
|
|
|
|
CollectionAssert.AreEqual(new Dictionary<string, string> {{"a", ""}}, _server.AvailableCaps);
|
|
|
|
|
}
|
2020-04-29 05:28:48 +00:00
|
|
|
|
|
2024-03-26 20:10:54 +00:00
|
|
|
|
[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);
|
|
|
|
|
}
|
2020-04-29 05:28:48 +00:00
|
|
|
|
|
2024-03-26 20:10:54 +00:00
|
|
|
|
[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);
|
|
|
|
|
}
|
2020-04-29 05:28:48 +00:00
|
|
|
|
|
2024-03-26 20:10:54 +00:00
|
|
|
|
[TestMethod]
|
|
|
|
|
public void DelNotAcked()
|
|
|
|
|
{
|
|
|
|
|
_server.Parse(new("CAP * DEL a"));
|
|
|
|
|
}
|
2020-04-29 05:28:48 +00:00
|
|
|
|
|
2024-03-26 20:10:54 +00:00
|
|
|
|
[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);
|
|
|
|
|
}
|
2020-04-29 05:28:48 +00:00
|
|
|
|
|
2024-03-26 20:10:54 +00:00
|
|
|
|
[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);
|
|
|
|
|
}
|
2020-04-29 05:28:48 +00:00
|
|
|
|
|
2024-03-26 20:10:54 +00:00
|
|
|
|
[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);
|
2020-04-22 20:28:51 +00:00
|
|
|
|
}
|
2024-03-26 20:10:54 +00:00
|
|
|
|
}
|