IRC parsing, tokenization, and state handling in C#
at a1df2ed6b496cfac5770a6bd7e4806ca18bf39a5 61 lines 1.9 kB view raw
1namespace IRCSharp.Tests.Tokenization; 2 3[TestClass] 4public class Hostmask 5{ 6 [TestMethod] 7 public void FullHostmask() 8 { 9 var hostmask = new IRCTokens.Hostmask("nick!user@host"); 10 Assert.AreEqual("nick", hostmask.NickName); 11 Assert.AreEqual("user", hostmask.UserName); 12 Assert.AreEqual("host", hostmask.HostName); 13 } 14 15 [TestMethod] 16 public void NoHostName() 17 { 18 var hostmask = new IRCTokens.Hostmask("nick!user"); 19 Assert.AreEqual("nick", hostmask.NickName); 20 Assert.AreEqual("user", hostmask.UserName); 21 Assert.IsNull(hostmask.HostName); 22 } 23 24 [TestMethod] 25 public void NoUserName() 26 { 27 var hostmask = new IRCTokens.Hostmask("nick@host"); 28 Assert.AreEqual("nick", hostmask.NickName); 29 Assert.IsNull(hostmask.UserName); 30 Assert.AreEqual("host", hostmask.HostName); 31 } 32 33 [TestMethod] 34 public void OnlyNickName() 35 { 36 var hostmask = new IRCTokens.Hostmask("nick"); 37 Assert.AreEqual("nick", hostmask.NickName); 38 Assert.IsNull(hostmask.UserName); 39 Assert.IsNull(hostmask.HostName); 40 } 41 42 [TestMethod] 43 public void HostmaskFromLine() 44 { 45 var line = new Line(":nick!user@host PRIVMSG #channel hello"); 46 var hostmask = new IRCTokens.Hostmask("nick!user@host"); 47 Assert.AreEqual(hostmask.ToString(), line.Hostmask.ToString()); 48 Assert.AreEqual("nick", line.Hostmask.NickName); 49 Assert.AreEqual("user", line.Hostmask.UserName); 50 Assert.AreEqual("host", line.Hostmask.HostName); 51 } 52 53 [TestMethod] 54 public void EmptyHostmaskFromLine() 55 { 56 var line = new Line("PRIVMSG #channel hello"); 57 Assert.IsNull(line.Hostmask.HostName); 58 Assert.IsNull(line.Hostmask.UserName); 59 Assert.IsNull(line.Hostmask.NickName); 60 } 61}