about summary refs log tree commit diff
path: root/IrcTokens/Tests/StatefulEncoder.cs
diff options
context:
space:
mode:
Diffstat (limited to 'IrcTokens/Tests/StatefulEncoder.cs')
-rw-r--r--IrcTokens/Tests/StatefulEncoder.cs71
1 files changed, 71 insertions, 0 deletions
diff --git a/IrcTokens/Tests/StatefulEncoder.cs b/IrcTokens/Tests/StatefulEncoder.cs
new file mode 100644
index 0000000..e3ed70d
--- /dev/null
+++ b/IrcTokens/Tests/StatefulEncoder.cs
@@ -0,0 +1,71 @@
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using System.Text;
+
+namespace IrcTokens.Tests
+{
+    [TestClass]
+    public class StatefulEncoder
+    {
+        private IrcTokens.StatefulEncoder _encoder;
+
+        [TestInitialize]
+        public void TestInitialize()
+        {
+            _encoder = new IrcTokens.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 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);
+        }
+    }
+}