IRC parsing, tokenization, and state handling in C#
at ircrobots 58 lines 1.7 kB view raw
1// ReSharper disable StringLiteralTypo 2namespace IRCSharp.Tests.States; 3 4[TestClass] 5public class Who 6{ 7 private Server _server; 8 9 [TestInitialize] 10 public void TestInitialize() 11 { 12 _server = new("test"); 13 _server.Parse(new("001 nickname")); 14 _server.Parse(new(":nickname JOIN #chan")); 15 } 16 17 [TestMethod] 18 public void WhoResponse() 19 { 20 _server.Parse(new("352 * #chan user host server nickname * :0 real")); 21 var user = _server.Users["nickname"]; 22 23 Assert.AreEqual("user", user.UserName); 24 Assert.AreEqual("host", _server.HostName); 25 Assert.AreEqual("real", user.RealName); 26 27 Assert.AreEqual(user.UserName, _server.UserName); 28 Assert.AreEqual(user.HostName, _server.HostName); 29 Assert.AreEqual(user.RealName, _server.RealName); 30 } 31 32 [TestMethod] 33 public void Whox() 34 { 35 _server.Parse(new($"354 * {Server.WhoType} user realip host nickname account :real")); 36 var user = _server.Users["nickname"]; 37 38 Assert.AreEqual("user", user.UserName); 39 Assert.AreEqual("host", user.HostName); 40 Assert.AreEqual("real", user.RealName); 41 Assert.AreEqual("account", user.Account); 42 43 Assert.AreEqual(user.UserName, _server.UserName); 44 Assert.AreEqual(user.HostName, _server.HostName); 45 Assert.AreEqual(user.RealName, _server.RealName); 46 Assert.AreEqual(user.Account, _server.Account); 47 } 48 49 [TestMethod] 50 public void WhoxNoAccount() 51 { 52 _server.Parse(new($"354 * {Server.WhoType} user realip host nickname 0 :real")); 53 var user = _server.Users["nickname"]; 54 55 Assert.IsNull(user.Account); 56 Assert.AreEqual(user.Account, _server.Account); 57 } 58}