IRC parsing, tokenization, and state handling in C#
at main 57 lines 2.1 kB view raw
1// ReSharper disable IdentifierTypo 2// ReSharper disable StringLiteralTypo 3 4namespace IRCSharp.Tests.State; 5 6public class Casemap 7{ 8 [Test] 9 public async Task Rfc1459() 10 { 11 var lower = IRCStates.Casemap.CaseFold(IRCStates.Casemap.CaseMapping.Rfc1459, @"ÀTEST[]~\"); 12 await Assert.That(lower).IsEqualTo("Àtest{}^|"); 13 } 14 15 [Test] 16 public async Task Ascii() 17 { 18 var lower = IRCStates.Casemap.CaseFold(IRCStates.Casemap.CaseMapping.Ascii, @"ÀTEST[]~\"); 19 await Assert.That(lower).IsEqualTo(@"Àtest[]~\"); 20 } 21 22 [Test] 23 public async Task CommandJoin() 24 { 25 var server = new Server("test"); 26 server.Parse(new Line("001 nickname")); 27 server.Parse(new Line(":Nickname JOIN #Chan")); 28 server.Parse(new Line(":Other JOIN #Chan")); 29 30 await Assert.That(server.Users).ContainsKey("nickname"); 31 await Assert.That(server.Users).ContainsKey("nickname"); 32 await Assert.That(server.Users).DoesNotContainKey("Nickname"); 33 await Assert.That(server.Users).ContainsKey("other"); 34 await Assert.That(server.Users).DoesNotContainKey("Other"); 35 await Assert.That(server.Channels).ContainsKey("#chan"); 36 await Assert.That(server.Channels).DoesNotContainKey("#Chan"); 37 38 var channel = server.Channels["#chan"]; 39 await Assert.That(channel.Name).IsEqualTo("#Chan"); 40 } 41 42 [Test] 43 public async Task CommandNick() 44 { 45 var server = new Server("test"); 46 server.Parse(new Line("001 nickname")); 47 server.Parse(new Line(":nickname JOIN #chan")); 48 var user = server.Users["nickname"]; 49 server.Parse(new Line(":nickname NICK NewNickname")); 50 await Assert.That(server.Users).HasCount(1); 51 await Assert.That(server.Users).ContainsKey("newnickname"); 52 await Assert.That(user.NickName).IsEqualTo("NewNickname"); 53 await Assert.That(user.NickNameLower).IsEqualTo("newnickname"); 54 await Assert.That(server.NickName).IsEqualTo("NewNickname"); 55 await Assert.That(server.NickNameLower).IsEqualTo("newnickname"); 56 } 57}