132 lines
4.5 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|