about summary refs log blame commit diff
path: root/IrcStates/Tests/Cap.cs
blob: 159490d4d94d26bb2910001f918c6f3e7060c9cf (plain) (tree)
1
2
3
4
5
6
7
8
9


                                                   





                         






















































































































                                                                                                                    

     
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.ParseTokens(new Line("CAP * LS :a b"));
            CollectionAssert.AreEqual(new Dictionary<string, string> {{"a", ""}, {"b", ""}}, _server.AvailableCaps);
        }

        [TestMethod]
        public void LSTwoLines()
        {
            _server.ParseTokens(new Line("CAP * LS * :a b"));
            CollectionAssert.AreEqual(new Dictionary<string, string>(), _server.AvailableCaps);
            _server.ParseTokens(new Line("CAP * LS :c"));
            CollectionAssert.AreEqual(new Dictionary<string, string> {{"a", ""}, {"b", ""}, {"c", ""}},
                _server.AvailableCaps);
        }

        [TestMethod]
        public void LSValues()
        {
            _server.ParseTokens(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.ParseTokens(new Line("CAP * LS :a b"));
            _server.ParseTokens(new Line("CAP * ACK :a b"));
            CollectionAssert.AreEqual(new List<string> {"a", "b"}, _server.AgreedCaps);
        }

        [TestMethod]
        public void ACKTwoLines()
        {
            _server.ParseTokens(new Line("CAP * LS :a b c"));
            _server.ParseTokens(new Line("CAP * ACK * :a b"));
            _server.ParseTokens(new Line("CAP * ACK :c"));
            CollectionAssert.AreEqual(new List<string> {"a", "b", "c"}, _server.AgreedCaps);
        }

        [TestMethod]
        public void ACKNotLS()
        {
            _server.ParseTokens(new Line("CAP * LS a"));
            _server.ParseTokens(new Line("CAP * ACK b"));
            CollectionAssert.AreEqual(new List<string>(), _server.AgreedCaps);
        }

        [TestMethod]
        public void NEWNoLS()
        {
            _server.ParseTokens(new Line("CAP * NEW :a"));
            CollectionAssert.AreEqual(new Dictionary<string, string> {{"a", ""}}, _server.AvailableCaps);
        }

        [TestMethod]
        public void NEWOneLine()
        {
            _server.ParseTokens(new Line("CAP * LS :a"));
            _server.ParseTokens(new Line("CAP * NEW :b"));
            CollectionAssert.AreEqual(new Dictionary<string, string> {{"a", ""}, {"b", ""}}, _server.AvailableCaps);
        }

        [TestMethod]
        public void NEWTwoLines()
        {
            _server.ParseTokens(new Line("CAP * LS :a"));
            _server.ParseTokens(new Line("CAP * NEW :b c"));
            CollectionAssert.AreEqual(new Dictionary<string, string> {{"a", ""}, {"b", ""}, {"c", ""}},
                _server.AvailableCaps);
        }

        [TestMethod]
        public void DELNotAcked()
        {
            _server.ParseTokens(new Line("CAP * DEL a"));
        }

        [TestMethod]
        public void DELOneLS()
        {
            _server.ParseTokens(new Line("CAP * LS :a"));
            _server.ParseTokens(new Line("CAP * ACK :a"));
            _server.ParseTokens(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.ParseTokens(new Line("CAP * LS :a b"));
            _server.ParseTokens(new Line("CAP * ACK :a b"));
            _server.ParseTokens(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.ParseTokens(new Line("CAP * LS :a b"));
            _server.ParseTokens(new Line("CAP * ACK :a b"));
            _server.ParseTokens(new Line("CAP * DEL :a b"));
            CollectionAssert.AreEqual(new Dictionary<string, string>(), _server.AvailableCaps);
            CollectionAssert.AreEqual(new List<string>(), _server.AgreedCaps);
        }
    }
}