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