// ReSharper disable StringLiteralTypo namespace IRCSharp.Tests.State; public class Who { private readonly Server _server = new("test"); public Who() { _server.Parse(new Line("001 nickname")); _server.Parse(new Line(":nickname JOIN #chan")); } [Test] public async Task WhoResponse() { _server.Parse(new Line("352 * #chan user host server nickname * :0 real")); var user = _server.Users["nickname"]; await Assert.That(user.UserName).IsEqualTo("user"); await Assert.That(_server.HostName).IsEqualTo("host"); await Assert.That(user.RealName).IsEqualTo("real"); await Assert.That(_server.UserName).IsEqualTo(user.UserName); await Assert.That(_server.HostName).IsEqualTo(user.HostName); await Assert.That(_server.RealName).IsEqualTo(user.RealName); } [Test] public async Task Whox() { _server.Parse(new Line($"354 * {Server.WhoType} user realip host nickname account :real")); var user = _server.Users["nickname"]; await Assert.That(user.UserName).IsEqualTo("user"); await Assert.That(user.HostName).IsEqualTo("host"); await Assert.That(user.RealName).IsEqualTo("real"); await Assert.That(user.Account).IsEqualTo("account"); await Assert.That(_server.UserName).IsEqualTo(user.UserName); await Assert.That(_server.HostName).IsEqualTo(user.HostName); await Assert.That(_server.RealName).IsEqualTo(user.RealName); await Assert.That(_server.Account).IsEqualTo(user.Account); } [Test] public async Task WhoxNoAccount() { _server.Parse(new Line($"354 * {Server.WhoType} user realip host nickname 0 :real")); var user = _server.Users["nickname"]; await Assert.That(user.Account).IsNull(); await Assert.That(_server.Account).IsEqualTo(user.Account); } }