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); } } }