IRC parsing, tokenization, and state handling in C#
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}