using System.Text; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace IRCTokens.Tests { [TestClass] public class StatefulEncoder { private IRCTokens.StatefulEncoder _encoder; [TestInitialize] public void Initialize() { _encoder = new IRCTokens.StatefulEncoder(); } [TestMethod] public void Push() { var line = new Line("PRIVMSG #channel hello"); _encoder.Push(line); Assert.AreEqual("PRIVMSG #channel hello\r\n", _encoder.Pending()); } [TestMethod] public void PopPartial() { 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 PopNoneReturned() { var line = new Line("PRIVMSG #channel hello"); _encoder.Push(line); var lines = _encoder.Pop(1); Assert.AreEqual(0, lines.Count); } [TestMethod] public void PopMultipleLines() { var line1 = new Line("PRIVMSG #channel1 hello"); _encoder.Push(line1); var line2 = new Line("PRIVMSG #channel2 hello"); _encoder.Push(line2); var lines = _encoder.Pop(_encoder.Pending().Length); Assert.AreEqual(2, lines.Count); Assert.AreEqual(string.Empty, _encoder.Pending()); } [TestMethod] public void Clear() { _encoder.Push(new Line("PRIVMSG #channel hello")); _encoder.Clear(); Assert.AreEqual(string.Empty, _encoder.Pending()); } [TestMethod] public void EncodingIso8859() { var iso8859 = Encoding.GetEncoding("iso-8859-1"); _encoder = new IRCTokens.StatefulEncoder {Encoding = iso8859}; _encoder.Push(new Line("PRIVMSG #channel :hello Ç")); CollectionAssert.AreEqual(iso8859.GetBytes("PRIVMSG #channel :hello Ç\r\n"), _encoder.PendingBytes); } } }