about summary refs log tree commit diff
path: root/IrcTokens
diff options
context:
space:
mode:
Diffstat (limited to 'IrcTokens')
-rw-r--r--IrcTokens/Hostmask.cs30
-rw-r--r--IrcTokens/Line.cs47
-rw-r--r--IrcTokens/Protocol.cs2
-rw-r--r--IrcTokens/StatefulDecoder.cs8
-rw-r--r--IrcTokens/StatefulEncoder.cs4
-rw-r--r--IrcTokens/Tests/Format.cs (renamed from IrcTokens/Tests/FormatTests.cs)36
-rw-r--r--IrcTokens/Tests/Hostmask.cs (renamed from IrcTokens/Tests/HostmaskTests.cs)12
-rw-r--r--IrcTokens/Tests/Parser.cs (renamed from IrcTokens/Tests/ParserTests.cs)10
-rw-r--r--IrcTokens/Tests/StatefulDecoder.cs (renamed from IrcTokens/Tests/StatefulDecoderTests.cs)17
-rw-r--r--IrcTokens/Tests/StatefulEncoder.cs (renamed from IrcTokens/Tests/StatefulEncoderTests.cs)11
-rw-r--r--IrcTokens/Tests/Tokenization.cs (renamed from IrcTokens/Tests/TokenizationTests.cs)14
11 files changed, 124 insertions, 67 deletions
diff --git a/IrcTokens/Hostmask.cs b/IrcTokens/Hostmask.cs
index 0b07f80..01fe7d5 100644
--- a/IrcTokens/Hostmask.cs
+++ b/IrcTokens/Hostmask.cs
@@ -5,29 +5,45 @@ namespace IrcTokens
     /// <summary>
     /// Represents the three parts of a hostmask. Parse with the constructor.
     /// </summary>
-    public class Hostmask
+    public class Hostmask : IEquatable<Hostmask>
     {
         public string NickName { get; set; }
         public string UserName { get; set; }
         public string HostName { get; set; }
 
-        public override string ToString() => _source;
+        public override string ToString()
+        {
+            return _source;
+        }
 
-        public override int GetHashCode() => _source.GetHashCode(StringComparison.Ordinal);
+        public override int GetHashCode()
+        {
+            return _source.GetHashCode(StringComparison.Ordinal);
+        }
 
-        public override bool Equals(object obj)
+        public bool Equals(Hostmask other)
         {
-            if (obj == null || GetType() != obj.GetType())
+            if (other == null)
+            {
                 return false;
+            }
 
-            return _source == ((Hostmask) obj)._source;
+            return _source == other._source;
+        }
+
+        public override bool Equals(object obj)
+        {
+            return Equals(obj as Hostmask);
         }
 
         private readonly string _source;
 
         public Hostmask(string source)
         {
-            if (source == null) return;
+            if (source == null)
+            {
+                return;
+            }
 
             _source = source;
 
diff --git a/IrcTokens/Line.cs b/IrcTokens/Line.cs
index 9056097..24efe4a 100644
--- a/IrcTokens/Line.cs
+++ b/IrcTokens/Line.cs
@@ -8,7 +8,7 @@ namespace IrcTokens
     /// <summary>
     /// Tools to represent, parse, and format IRC lines
     /// </summary>
-    public class Line
+    public class Line : IEquatable<Line>
     {
         public Dictionary<string, string> Tags { get; set; }
         public string Source { get; set; }
@@ -16,32 +16,52 @@ namespace IrcTokens
         public List<string> Params { get; set; }
 
         private Hostmask _hostmask;
-        private readonly string _rawLine;
 
         public override string ToString()
         {
             var vars = new List<string>();
 
             if (Command != null)
+            {
                 vars.Add($"command={Command}");
+            }
+
             if (Source != null)
+            {
                 vars.Add($"source={Source}");
+            }
+
             if (Params != null && Params.Any())
+            {
                 vars.Add($"params=[{string.Join(",", Params)}]");
+            }
+
             if (Tags != null && Tags.Any())
+            {
                 vars.Add($"tags=[{string.Join(";", Tags.Select(kvp => $"{kvp.Key}={kvp.Value}"))}]");
+            }
 
             return $"Line({string.Join(", ", vars)})";
         }
 
-        public override int GetHashCode() => Format().GetHashCode(StringComparison.Ordinal);
+        public override int GetHashCode()
+        {
+            return Format().GetHashCode(StringComparison.Ordinal);
+        }
 
-        public override bool Equals(object obj)
+        public bool Equals(Line other)
         {
-            if (obj == null || GetType() != obj.GetType())
+            if (other == null)
+            {
                 return false;
+            }
 
-            return Format() == ((Line) obj).Format();
+            return Format() == other.Format();
+        }
+
+        public override bool Equals(object obj)
+        {
+            return Equals(obj as Line);
         }
 
         public Hostmask Hostmask =>
@@ -56,9 +76,10 @@ namespace IrcTokens
         public Line(string line)
         {
             if (string.IsNullOrWhiteSpace(line))
+            {
                 throw new ArgumentNullException(nameof(line));
+            }
 
-            _rawLine = line;
             string[] split;
 
             if (line.StartsWith('@'))
@@ -97,7 +118,7 @@ namespace IrcTokens
 
             Params = line.Contains(' ', StringComparison.Ordinal)
                 ? line.Split(' ', StringSplitOptions.RemoveEmptyEntries).ToList()
-                : new List<string> {line};
+                : new List<string> { line };
 
             if (Params[0].StartsWith(':'))
             {
@@ -135,7 +156,9 @@ namespace IrcTokens
             }
 
             if (Source != null)
+            {
                 outs.Add($":{Source}");
+            }
 
             outs.Add(Command);
 
@@ -147,14 +170,22 @@ namespace IrcTokens
                 foreach (var p in Params)
                 {
                     if (p.Contains(' ', StringComparison.Ordinal))
+                    {
                         throw new ArgumentException(@"non-last parameters cannot have spaces", p);
+                    }
+
                     if (p.StartsWith(':'))
+                    {
                         throw new ArgumentException(@"non-last parameters cannot start with colon", p);
+                    }
                 }
                 outs.AddRange(Params);
 
                 if (string.IsNullOrWhiteSpace(last) || last.Contains(' ', StringComparison.Ordinal) || last.StartsWith(':'))
+                {
                     last = $":{last}";
+                }
+
                 outs.Add(last);
             }
 
diff --git a/IrcTokens/Protocol.cs b/IrcTokens/Protocol.cs
index 3769ea3..6ddb079 100644
--- a/IrcTokens/Protocol.cs
+++ b/IrcTokens/Protocol.cs
@@ -50,7 +50,9 @@ namespace IrcTokens
                     }
                 }
                 else
+                {
                     unescaped.Append(current);
+                }
             }
 
             return unescaped.ToString();
diff --git a/IrcTokens/StatefulDecoder.cs b/IrcTokens/StatefulDecoder.cs
index 2304431..47106d9 100644
--- a/IrcTokens/StatefulDecoder.cs
+++ b/IrcTokens/StatefulDecoder.cs
@@ -18,8 +18,10 @@ namespace IrcTokens
             set
             {
                 if (value != null)
+                {
                     _encoding = Encoding.GetEncoding(value.CodePage, EncoderFallback.ExceptionFallback,
                         DecoderFallback.ReplacementFallback);
+                }
             }
         }
 
@@ -30,8 +32,10 @@ namespace IrcTokens
             set
             {
                 if (value != null)
-                    _encoding = Encoding.GetEncoding(value.CodePage, EncoderFallback.ReplacementFallback,
+                {
+                    _fallback = Encoding.GetEncoding(value.CodePage, EncoderFallback.ReplacementFallback,
                         DecoderFallback.ReplacementFallback);
+                }
             }
         }
 
@@ -55,7 +59,9 @@ namespace IrcTokens
         public List<Line> Push(byte[] data)
         {
             if (data == null || data.Length == 0)
+            {
                 return null;
+            }
 
             _buffer = _buffer.Concat(data).ToArray();
 
diff --git a/IrcTokens/StatefulEncoder.cs b/IrcTokens/StatefulEncoder.cs
index 17295eb..c036400 100644
--- a/IrcTokens/StatefulEncoder.cs
+++ b/IrcTokens/StatefulEncoder.cs
@@ -16,8 +16,10 @@ namespace IrcTokens
             set
             {
                 if (value != null)
+                {
                     _encoding = Encoding.GetEncoding(value.CodePage, EncoderFallback.ExceptionFallback,
                         DecoderFallback.ExceptionFallback);
+                }
             }
         }
 
@@ -52,7 +54,9 @@ namespace IrcTokens
         public void Push(Line line)
         {
             if (line == null)
+            {
                 throw new ArgumentNullException(nameof(line));
+            }
 
             PendingBytes = PendingBytes.Concat(Encoding.GetBytes($"{line.Format()}\r\n")).ToArray();
             _bufferedLines.Enqueue(line);
diff --git a/IrcTokens/Tests/FormatTests.cs b/IrcTokens/Tests/Format.cs
index a804c1d..64f974a 100644
--- a/IrcTokens/Tests/FormatTests.cs
+++ b/IrcTokens/Tests/Format.cs
@@ -5,16 +5,16 @@ using System.Collections.Generic;
 namespace IrcTokens.Tests
 {
     [TestClass]
-    public class FormatTests
+    public class Format
     {
         [TestMethod]
         public void TestTags()
         {
             var line = new Line
             {
-                Command = "PRIVMSG", 
-                Params = new List<string> {"#channel", "hello"},
-                Tags = new Dictionary<string, string> {{"id", "\\" + " " + ";" + "\r\n"}}
+                Command = "PRIVMSG",
+                Params = new List<string> { "#channel", "hello" },
+                Tags = new Dictionary<string, string> { { "id", "\\" + " " + ";" + "\r\n" } }
             }.Format();
 
             Assert.AreEqual("@id=\\\\\\s\\:\\r\\n PRIVMSG #channel hello", line);
@@ -25,8 +25,8 @@ namespace IrcTokens.Tests
         {
             var line = new Line
             {
-                Command = "PRIVMSG", 
-                Params = new List<string> {"#channel", "hello"}
+                Command = "PRIVMSG",
+                Params = new List<string> { "#channel", "hello" }
             }.Format();
 
             Assert.AreEqual("PRIVMSG #channel hello", line);
@@ -38,8 +38,8 @@ namespace IrcTokens.Tests
             var line = new Line
             {
                 Command = "PRIVMSG",
-                Params = new List<string> {"#channel", "hello"},
-                Tags = new Dictionary<string, string> {{"a", null}}
+                Params = new List<string> { "#channel", "hello" },
+                Tags = new Dictionary<string, string> { { "a", null } }
             }.Format();
 
             Assert.AreEqual("@a PRIVMSG #channel hello", line);
@@ -51,8 +51,8 @@ namespace IrcTokens.Tests
             var line = new Line
             {
                 Command = "PRIVMSG",
-                Params = new List<string> {"#channel", "hello"},
-                Tags = new Dictionary<string, string> {{"a", ""}}
+                Params = new List<string> { "#channel", "hello" },
+                Tags = new Dictionary<string, string> { { "a", "" } }
             }.Format();
 
             Assert.AreEqual("@a PRIVMSG #channel hello", line);
@@ -64,7 +64,7 @@ namespace IrcTokens.Tests
             var line = new Line
             {
                 Command = "PRIVMSG",
-                Params = new List<string> {"#channel", "hello"},
+                Params = new List<string> { "#channel", "hello" },
                 Source = "nick!user@host"
             }.Format();
 
@@ -74,14 +74,14 @@ namespace IrcTokens.Tests
         [TestMethod]
         public void TestCommandLowercase()
         {
-            var line = new Line {Command = "privmsg"}.Format();
+            var line = new Line { Command = "privmsg" }.Format();
             Assert.AreEqual("privmsg", line);
         }
 
         [TestMethod]
         public void TestCommandUppercase()
         {
-            var line = new Line {Command = "PRIVMSG"}.Format();
+            var line = new Line { Command = "PRIVMSG" }.Format();
             Assert.AreEqual("PRIVMSG", line);
         }
 
@@ -91,7 +91,7 @@ namespace IrcTokens.Tests
             var line = new Line
             {
                 Command = "PRIVMSG",
-                Params = new List<string> {"#channel", "hello world"}
+                Params = new List<string> { "#channel", "hello world" }
             }.Format();
 
             Assert.AreEqual("PRIVMSG #channel :hello world", line);
@@ -103,7 +103,7 @@ namespace IrcTokens.Tests
             var line = new Line
             {
                 Command = "PRIVMSG",
-                Params = new List<string> {"#channel", "helloworld"}
+                Params = new List<string> { "#channel", "helloworld" }
             }.Format();
 
             Assert.AreEqual("PRIVMSG #channel helloworld", line);
@@ -115,7 +115,7 @@ namespace IrcTokens.Tests
             var line = new Line
             {
                 Command = "PRIVMSG",
-                Params = new List<string> {"#channel", ":helloworld"}
+                Params = new List<string> { "#channel", ":helloworld" }
             }.Format();
 
             Assert.AreEqual("PRIVMSG #channel ::helloworld", line);
@@ -129,7 +129,7 @@ namespace IrcTokens.Tests
                 new Line
                 {
                     Command = "USER",
-                    Params = new List<string> {"user", "0 *", "real name"}
+                    Params = new List<string> { "user", "0 *", "real name" }
                 }.Format();
             });
         }
@@ -142,7 +142,7 @@ namespace IrcTokens.Tests
                 new Line
                 {
                     Command = "PRIVMSG",
-                    Params = new List<string> {":#channel", "hello"}
+                    Params = new List<string> { ":#channel", "hello" }
                 }.Format();
             });
         }
diff --git a/IrcTokens/Tests/HostmaskTests.cs b/IrcTokens/Tests/Hostmask.cs
index 78b8a54..51bc182 100644
--- a/IrcTokens/Tests/HostmaskTests.cs
+++ b/IrcTokens/Tests/Hostmask.cs
@@ -3,12 +3,12 @@
 namespace IrcTokens.Tests
 {
     [TestClass]
-    public class HostmaskTests
+    public class Hostmask
     {
         [TestMethod]
         public void TestHostmask()
         {
-            var hostmask = new Hostmask("nick!user@host");
+            var hostmask = new IrcTokens.Hostmask("nick!user@host");
             Assert.AreEqual("nick", hostmask.NickName);
             Assert.AreEqual("user", hostmask.UserName);
             Assert.AreEqual("host", hostmask.HostName);
@@ -17,7 +17,7 @@ namespace IrcTokens.Tests
         [TestMethod]
         public void TestNoHostName()
         {
-            var hostmask = new Hostmask("nick!user");
+            var hostmask = new IrcTokens.Hostmask("nick!user");
             Assert.AreEqual("nick", hostmask.NickName);
             Assert.AreEqual("user", hostmask.UserName);
             Assert.IsNull(hostmask.HostName);
@@ -26,7 +26,7 @@ namespace IrcTokens.Tests
         [TestMethod]
         public void TestNoUserName()
         {
-            var hostmask = new Hostmask("nick@host");
+            var hostmask = new IrcTokens.Hostmask("nick@host");
             Assert.AreEqual("nick", hostmask.NickName);
             Assert.IsNull(hostmask.UserName);
             Assert.AreEqual("host", hostmask.HostName);
@@ -35,7 +35,7 @@ namespace IrcTokens.Tests
         [TestMethod]
         public void TestOnlyNickName()
         {
-            var hostmask = new Hostmask("nick");
+            var hostmask = new IrcTokens.Hostmask("nick");
             Assert.AreEqual("nick", hostmask.NickName);
             Assert.IsNull(hostmask.UserName);
             Assert.IsNull(hostmask.HostName);
@@ -45,7 +45,7 @@ namespace IrcTokens.Tests
         public void TestHostmaskFromLine()
         {
             var line = new Line(":nick!user@host PRIVMSG #channel hello");
-            var hostmask = new Hostmask("nick!user@host");
+            var hostmask = new IrcTokens.Hostmask("nick!user@host");
             Assert.AreEqual(hostmask.ToString(), line.Hostmask.ToString());
             Assert.AreEqual("nick", line.Hostmask.NickName);
             Assert.AreEqual("user", line.Hostmask.UserName);
diff --git a/IrcTokens/Tests/ParserTests.cs b/IrcTokens/Tests/Parser.cs
index ad734cf..df70b92 100644
--- a/IrcTokens/Tests/ParserTests.cs
+++ b/IrcTokens/Tests/Parser.cs
@@ -1,15 +1,15 @@
-using System.Collections.Generic;
+using IrcTokens.Tests.Data;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using System.Collections.Generic;
 using System.Globalization;
 using System.IO;
-using IrcTokens.Tests.Data;
-using Microsoft.VisualStudio.TestTools.UnitTesting;
 using YamlDotNet.Serialization;
 using YamlDotNet.Serialization.NamingConventions;
 
 namespace IrcTokens.Tests
 {
     [TestClass]
-    public class ParserTests
+    public class Parser
     {
         private static T LoadYaml<T>(string path)
         {
@@ -46,7 +46,7 @@ namespace IrcTokens.Tests
                 {
                     Command = atoms.Verb,
                     Params = atoms.Params,
-                    Source = atoms.Source ?? null,
+                    Source = atoms.Source,
                     Tags = atoms.Tags
                 }.Format();
 
diff --git a/IrcTokens/Tests/StatefulDecoderTests.cs b/IrcTokens/Tests/StatefulDecoder.cs
index 3e6a078..209a6cf 100644
--- a/IrcTokens/Tests/StatefulDecoderTests.cs
+++ b/IrcTokens/Tests/StatefulDecoder.cs
@@ -1,19 +1,18 @@
-using System.Collections.Generic;
-using System.Linq;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using System.Collections.Generic;
 using System.Text;
-using Microsoft.VisualStudio.TestTools.UnitTesting;
 
 namespace IrcTokens.Tests
 {
     [TestClass]
-    public class StatefulDecoderTests
+    public class StatefulDecoder
     {
-        private StatefulDecoder _decoder;
+        private IrcTokens.StatefulDecoder _decoder;
 
         [TestInitialize]
         public void TestInitialize()
         {
-            _decoder = new StatefulDecoder();
+            _decoder = new IrcTokens.StatefulDecoder();
         }
 
         [TestMethod]
@@ -26,7 +25,7 @@ namespace IrcTokens.Tests
             Assert.AreEqual(1, lines.Count);
 
             var line = new Line("PRIVMSG #channel hello");
-            CollectionAssert.AreEqual(new List<Line> {line}, lines);
+            CollectionAssert.AreEqual(new List<Line> { line }, lines);
         }
 
         [TestMethod]
@@ -45,7 +44,7 @@ namespace IrcTokens.Tests
         public void TestEncoding()
         {
             var iso8859 = Encoding.GetEncoding("iso-8859-1");
-            _decoder = new StatefulDecoder {Encoding = iso8859};
+            _decoder = new IrcTokens.StatefulDecoder { Encoding = iso8859 };
             var lines = _decoder.Push(iso8859.GetBytes("PRIVMSG #channel :hello Ç\r\n"));
             var line = new Line("PRIVMSG #channel :hello Ç");
             Assert.IsTrue(line.Equals(lines[0]));
@@ -55,7 +54,7 @@ namespace IrcTokens.Tests
         public void TestEncodingFallback()
         {
             var latin1 = Encoding.GetEncoding("iso-8859-1");
-            _decoder = new StatefulDecoder {Encoding = null, Fallback = latin1};
+            _decoder = new IrcTokens.StatefulDecoder { Encoding = null, Fallback = latin1 };
             var lines = _decoder.Push(latin1.GetBytes("PRIVMSG #channel hélló\r\n"));
             Assert.AreEqual(1, lines.Count);
             Assert.IsTrue(new Line("PRIVMSG #channel hélló").Equals(lines[0]));
diff --git a/IrcTokens/Tests/StatefulEncoderTests.cs b/IrcTokens/Tests/StatefulEncoder.cs
index 477b38d..e3ed70d 100644
--- a/IrcTokens/Tests/StatefulEncoderTests.cs
+++ b/IrcTokens/Tests/StatefulEncoder.cs
@@ -1,18 +1,17 @@
-using System.Linq;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
 using System.Text;
-using Microsoft.VisualStudio.TestTools.UnitTesting;
 
 namespace IrcTokens.Tests
 {
     [TestClass]
-    public class StatefulEncoderTests
+    public class StatefulEncoder
     {
-        private StatefulEncoder _encoder;
+        private IrcTokens.StatefulEncoder _encoder;
 
         [TestInitialize]
         public void TestInitialize()
         {
-            _encoder = new StatefulEncoder();
+            _encoder = new IrcTokens.StatefulEncoder();
         }
 
         [TestMethod]
@@ -64,7 +63,7 @@ namespace IrcTokens.Tests
         public void TestEncoding()
         {
             var iso8859 = Encoding.GetEncoding("iso-8859-1");
-            _encoder = new StatefulEncoder {Encoding = iso8859};
+            _encoder = new IrcTokens.StatefulEncoder { Encoding = iso8859 };
             _encoder.Push(new Line("PRIVMSG #channel :hello Ç"));
             CollectionAssert.AreEqual(iso8859.GetBytes("PRIVMSG #channel :hello Ç\r\n"), _encoder.PendingBytes);
         }
diff --git a/IrcTokens/Tests/TokenizationTests.cs b/IrcTokens/Tests/Tokenization.cs
index 6d8a69d..c4970ed 100644
--- a/IrcTokens/Tests/TokenizationTests.cs
+++ b/IrcTokens/Tests/Tokenization.cs
@@ -1,10 +1,10 @@
-using System.Collections.Generic;
-using Microsoft.VisualStudio.TestTools.UnitTesting;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using System.Collections.Generic;
 
 namespace IrcTokens.Tests
 {
     [TestClass]
-    public class TokenizationTests
+    public class Tokenization
     {
         [TestMethod]
         public void TestTagsMissing()
@@ -87,14 +87,14 @@ namespace IrcTokens.Tests
         public void TestParamsTrailing()
         {
             var line = new Line("PRIVMSG #channel :hello world");
-            CollectionAssert.AreEqual(new List<string> {"#channel", "hello world"}, line.Params);
+            CollectionAssert.AreEqual(new List<string> { "#channel", "hello world" }, line.Params);
         }
 
         [TestMethod]
         public void TestParamsOnlyTrailing()
         {
             var line = new Line("PRIVMSG :hello world");
-            CollectionAssert.AreEqual(new List<string> {"hello world"}, line.Params);
+            CollectionAssert.AreEqual(new List<string> { "hello world" }, line.Params);
         }
 
         [TestMethod]
@@ -109,10 +109,10 @@ namespace IrcTokens.Tests
         public void TestAllTokens()
         {
             var line = new Line("@id=123 :nick!user@host PRIVMSG #channel :hello world");
-            CollectionAssert.AreEqual(new Dictionary<string, string> {{"id", "123"}}, line.Tags);
+            CollectionAssert.AreEqual(new Dictionary<string, string> { { "id", "123" } }, line.Tags);
             Assert.AreEqual("nick!user@host", line.Source);
             Assert.AreEqual("PRIVMSG", line.Command);
-            CollectionAssert.AreEqual(new List<string> {"#channel", "hello world"}, line.Params);
+            CollectionAssert.AreEqual(new List<string> { "#channel", "hello world" }, line.Params);
         }
     }
 }