ircsharp/IRCSharp.Tests/State/Cap.cs

132 lines
4.5 KiB
C#

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.Parse(new Line("CAP * LS :a b"));
CollectionAssert.AreEqual(new Dictionary<string, string> {{"a", ""}, {"b", ""}}, _server.AvailableCaps);
}
[TestMethod]
public void LSTwoLines()
{
_server.Parse(new Line("CAP * LS * :a b"));
CollectionAssert.AreEqual(new Dictionary<string, string>(), _server.AvailableCaps);
_server.Parse(new Line("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 Line("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 Line("CAP * LS :a b"));
_server.Parse(new Line("CAP * ACK :a b"));
CollectionAssert.AreEqual(new List<string> {"a", "b"}, _server.AgreedCaps);
}
[TestMethod]
public void ACKTwoLines()
{
_server.Parse(new Line("CAP * LS :a b c"));
_server.Parse(new Line("CAP * ACK * :a b"));
_server.Parse(new Line("CAP * ACK :c"));
CollectionAssert.AreEqual(new List<string> {"a", "b", "c"}, _server.AgreedCaps);
}
[TestMethod]
public void ACKNotLS()
{
_server.Parse(new Line("CAP * LS a"));
_server.Parse(new Line("CAP * ACK b"));
CollectionAssert.AreEqual(new List<string>(), _server.AgreedCaps);
}
[TestMethod]
public void NEWNoLS()
{
_server.Parse(new Line("CAP * NEW :a"));
CollectionAssert.AreEqual(new Dictionary<string, string> {{"a", ""}}, _server.AvailableCaps);
}
[TestMethod]
public void NEWOneLine()
{
_server.Parse(new Line("CAP * LS :a"));
_server.Parse(new Line("CAP * NEW :b"));
CollectionAssert.AreEqual(new Dictionary<string, string> {{"a", ""}, {"b", ""}}, _server.AvailableCaps);
}
[TestMethod]
public void NEWTwoLines()
{
_server.Parse(new Line("CAP * LS :a"));
_server.Parse(new Line("CAP * NEW :b c"));
CollectionAssert.AreEqual(new Dictionary<string, string> {{"a", ""}, {"b", ""}, {"c", ""}},
_server.AvailableCaps);
}
[TestMethod]
public void DELNotAcked()
{
_server.Parse(new Line("CAP * DEL a"));
}
[TestMethod]
public void DELOneLS()
{
_server.Parse(new Line("CAP * LS :a"));
_server.Parse(new Line("CAP * ACK :a"));
_server.Parse(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.Parse(new Line("CAP * LS :a b"));
_server.Parse(new Line("CAP * ACK :a b"));
_server.Parse(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.Parse(new Line("CAP * LS :a b"));
_server.Parse(new Line("CAP * ACK :a b"));
_server.Parse(new Line("CAP * DEL :a b"));
CollectionAssert.AreEqual(new Dictionary<string, string>(), _server.AvailableCaps);
CollectionAssert.AreEqual(new List<string>(), _server.AgreedCaps);
}
}
}