about summary refs log blame commit diff
path: root/IrcTokens/Tests/StatefulEncoderTests.cs
blob: 4732573445951c1c1f5c7b2e50884c8891f8cc2a (plain) (tree)







































































                                                                                         
using System.Linq;
using System.Text;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace IrcTokens.Tests
{
    [TestClass]
    public class StatefulEncoderTests
    {
        private StatefulEncoder _encoder;

        [TestInitialize]
        public void TestInitialize()
        {
            _encoder = new StatefulEncoder();
        }

        [TestMethod]
        public void TestPush()
        {
            var line = new Line("PRIVMSG #channel hello");
            _encoder.Push(line);
            Assert.AreEqual("PRIVMSG #channel hello\r\n", _encoder.Pending);
        }

        [TestMethod]
        public void TestPopPartial()
        {
            var line = new Line("PRIVMSG #channel hello");
            _encoder.Push(line);
            _encoder.Pop("PRIVMSG #channel hello".Length);
            Assert.AreEqual("\r\n", _encoder.Pending);
        }

        [TestMethod]
        public void TestPopReturned()
        {
            var line = new Line("PRIVMSG #channel hello");
            _encoder.Push(line);
            _encoder.Push(line);
            var lines = _encoder.Pop("PRIVMSG #channel hello\r\n".Length);
            Assert.AreEqual(1, lines.Count);
            Assert.AreEqual(line, lines[0]);
        }

        [TestMethod]
        public void TestPopNoneReturned()
        {
            var line = new Line("PRIVMSG #channel hello");
            _encoder.Push(line);
            var lines = _encoder.Pop(1);
            Assert.AreEqual(0, lines.Count);
        }

        [TestMethod]
        public void TestClear()
        {
            _encoder.Push(new Line("PRIVMSG #channel hello"));
            _encoder.Clear();
            Assert.AreEqual(string.Empty, _encoder.Pending);
        }

        [TestMethod]
        public void TestEncoding()
        {
            var iso88592 = Encoding.GetEncodings().Single(ei => ei.Name == "iso-8859-2");
            _encoder = new StatefulEncoder {Encoding = iso88592};
            _encoder.Push(new Line("PRIVMSG #channel :hello Č"));
            Assert.AreEqual("PRIVMSG #channel :hello Č\r\n", _encoder.Pending);
        }
    }
}