IRC parsing, tokenization, and state handling in C#

tunit

+317 -348
+20 -20
IRCSharp.Tests/State/Casemap.cs
··· 5 5 public class Casemap 6 6 { 7 7 [Test] 8 - public void Rfc1459() 8 + public async Task Rfc1459() 9 9 { 10 10 var lower = IRCStates.Casemap.CaseFold(IRCStates.Casemap.CaseMapping.Rfc1459, @"ÀTEST[]~\"); 11 - Assert.That(lower).IsEqualTo("Àtest{}^|"); 11 + await Assert.That(lower).IsEqualTo("Àtest{}^|"); 12 12 } 13 13 14 14 [Test] 15 - public void Ascii() 15 + public async Task Ascii() 16 16 { 17 17 var lower = IRCStates.Casemap.CaseFold(IRCStates.Casemap.CaseMapping.Ascii, @"ÀTEST[]~\"); 18 - Assert.That(lower).IsEqualTo(@"Àtest[]~\"); 18 + await Assert.That(lower).IsEqualTo(@"Àtest[]~\"); 19 19 } 20 20 21 21 [Test] 22 - public void CommandJoin() 22 + public async Task CommandJoin() 23 23 { 24 24 var server = new Server("test"); 25 25 server.Parse(new Line("001 nickname")); 26 26 server.Parse(new Line(":Nickname JOIN #Chan")); 27 27 server.Parse(new Line(":Other JOIN #Chan")); 28 28 29 - Assert.That(server.Users).ContainsKey("nickname"); 30 - Assert.That(server.Users).ContainsKey("nickname"); 31 - Assert.That(server.Users).DoesNotContainKey("Nickname"); 32 - Assert.That(server.Users).ContainsKey("other"); 33 - Assert.That(server.Users).DoesNotContainKey("Other"); 34 - Assert.That(server.Channels).ContainsKey("#chan"); 35 - Assert.That(server.Channels).DoesNotContainKey("#Chan"); 29 + await Assert.That(server.Users).ContainsKey("nickname"); 30 + await Assert.That(server.Users).ContainsKey("nickname"); 31 + await Assert.That(server.Users).DoesNotContainKey("Nickname"); 32 + await Assert.That(server.Users).ContainsKey("other"); 33 + await Assert.That(server.Users).DoesNotContainKey("Other"); 34 + await Assert.That(server.Channels).ContainsKey("#chan"); 35 + await Assert.That(server.Channels).DoesNotContainKey("#Chan"); 36 36 37 37 var channel = server.Channels["#chan"]; 38 - Assert.That(channel.Name).IsEqualTo("#Chan"); 38 + await Assert.That(channel.Name).IsEqualTo("#Chan"); 39 39 } 40 40 41 41 [Test] 42 - public void CommandNick() 42 + public async Task CommandNick() 43 43 { 44 44 var server = new Server("test"); 45 45 server.Parse(new Line("001 nickname")); 46 46 server.Parse(new Line(":nickname JOIN #chan")); 47 47 var user = server.Users["nickname"]; 48 48 server.Parse(new Line(":nickname NICK NewNickname")); 49 - Assert.That(server.Users).HasCount(1); 50 - Assert.That(server.Users).ContainsKey("newnickname"); 51 - Assert.That(user.NickName).IsEqualTo("NewNickname"); 52 - Assert.That(user.NickNameLower).IsEqualTo("newnickname"); 53 - Assert.That(server.NickName).IsEqualTo("NewNickname"); 54 - Assert.That(server.NickNameLower).IsEqualTo("newnickname"); 49 + await Assert.That(server.Users).HasCount(1); 50 + await Assert.That(server.Users).ContainsKey("newnickname"); 51 + await Assert.That(user.NickName).IsEqualTo("NewNickname"); 52 + await Assert.That(user.NickNameLower).IsEqualTo("newnickname"); 53 + await Assert.That(server.NickName).IsEqualTo("NewNickname"); 54 + await Assert.That(server.NickNameLower).IsEqualTo("newnickname"); 55 55 } 56 56 }
+68 -88
IRCSharp.Tests/State/ISupport.cs
··· 1 1 // ReSharper disable InconsistentNaming 2 2 // ReSharper disable StringLiteralTypo 3 + 3 4 namespace IRCSharp.Tests.State; 4 5 5 6 public class ISupport ··· 12 13 } 13 14 14 15 [Test] 15 - public void ChanModes() 16 + public async Task ChanModes() 16 17 { 17 - CollectionAssert.AreEqual(new List<string> {"b"}, _server.ISupport.ChanModes.ListModes); 18 - CollectionAssert.AreEqual(new List<string> {"k"}, _server.ISupport.ChanModes.SettingBModes); 19 - CollectionAssert.AreEqual(new List<string> {"l"}, _server.ISupport.ChanModes.SettingCModes); 20 - CollectionAssert.AreEqual(new List<string> 21 - { 22 - "i", 23 - "m", 24 - "n", 25 - "p", 26 - "s", 27 - "t" 28 - }, _server.ISupport.ChanModes.SettingDModes); 18 + await Assert.That(_server.ISupport.ChanModes.ListModes).IsEqualTo(["b"]); 19 + await Assert.That(_server.ISupport.ChanModes.SettingBModes).IsEqualTo(["k"]); 20 + await Assert.That(_server.ISupport.ChanModes.SettingCModes).IsEqualTo(["l"]); 21 + await Assert.That(_server.ISupport.ChanModes.SettingDModes).IsEqualTo(["i", "m", "n", "p", "s", "t"]); 29 22 30 23 _server.Parse(new Line("005 * CHANMODES=a,b,c,d *")); 31 24 32 - CollectionAssert.AreEqual(new List<string> {"a"}, _server.ISupport.ChanModes.ListModes); 33 - CollectionAssert.AreEqual(new List<string> {"b"}, _server.ISupport.ChanModes.SettingBModes); 34 - CollectionAssert.AreEqual(new List<string> {"c"}, _server.ISupport.ChanModes.SettingCModes); 35 - CollectionAssert.AreEqual(new List<string> {"d"}, _server.ISupport.ChanModes.SettingDModes); 25 + await Assert.That(_server.ISupport.ChanModes.ListModes).IsEqualTo(["a"]); 26 + await Assert.That(_server.ISupport.ChanModes.SettingBModes).IsEqualTo(["b"]); 27 + await Assert.That(_server.ISupport.ChanModes.SettingCModes).IsEqualTo(["c"]); 28 + await Assert.That(_server.ISupport.ChanModes.SettingDModes).IsEqualTo(["d"]); 36 29 } 37 30 38 31 [Test] 39 - public void Prefix() 32 + public async Task Prefix() 40 33 { 41 - CollectionAssert.AreEqual(new List<string> {"o", "v"}, _server.ISupport.Prefix.Modes); 42 - CollectionAssert.AreEqual(new List<string> {"@", "+"}, _server.ISupport.Prefix.Prefixes); 34 + await Assert.That(_server.ISupport.Prefix.Modes).IsEqualTo(["o", "v"]); 35 + await Assert.That(_server.ISupport.Prefix.Prefixes).IsEqualTo(["@", "+"]); 43 36 44 - Assert.AreEqual("@", _server.ISupport.Prefix.FromMode("o")); 45 - Assert.IsNull(_server.ISupport.Prefix.FromMode("a")); 46 - Assert.AreEqual("o", _server.ISupport.Prefix.FromPrefix("@")); 47 - Assert.IsNull(_server.ISupport.Prefix.FromPrefix("&")); 37 + await Assert.That(_server.ISupport.Prefix.FromMode("o")).IsEqualTo("@"); 38 + await Assert.That(_server.ISupport.Prefix.FromMode("a")).IsNull(); 39 + await Assert.That(_server.ISupport.Prefix.FromPrefix("@")).IsEqualTo("o"); 40 + await Assert.That(_server.ISupport.Prefix.FromPrefix("&")).IsNull(); 48 41 49 42 _server.Parse(new Line("005 * PREFIX=(qaohv)~&@%+ *")); 50 - CollectionAssert.AreEqual(new List<string> 51 - { 52 - "q", 53 - "a", 54 - "o", 55 - "h", 56 - "v" 57 - }, _server.ISupport.Prefix.Modes); 58 - CollectionAssert.AreEqual(new List<string> 59 - { 60 - "~", 61 - "&", 62 - "@", 63 - "%", 64 - "+" 65 - }, _server.ISupport.Prefix.Prefixes); 66 - Assert.AreEqual("&", _server.ISupport.Prefix.FromMode("a")); 67 - Assert.AreEqual("a", _server.ISupport.Prefix.FromPrefix("&")); 43 + await Assert.That(_server.ISupport.Prefix.Modes).IsEqualTo(["q", "a", "o", "h", "v"]); 44 + await Assert.That(_server.ISupport.Prefix.Prefixes).IsEqualTo(["~", "&", "@", "%", "+",]); 45 + 46 + await Assert.That(_server.ISupport.Prefix.FromMode("a")).IsEqualTo("&"); 47 + await Assert.That(_server.ISupport.Prefix.FromPrefix("&")).IsEqualTo("a"); 68 48 } 69 49 70 50 [Test] 71 - public void ChanTypes() 51 + public async Task ChanTypes() 72 52 { 73 - CollectionAssert.AreEqual(new List<string> {"#"}, _server.ISupport.ChanTypes); 53 + await Assert.That(_server.ISupport.ChanTypes).IsEqualTo(["#"]); 74 54 _server.Parse(new Line("005 * CHANTYPES=#& *")); 75 - CollectionAssert.AreEqual(new List<string> {"#", "&"}, _server.ISupport.ChanTypes); 55 + await Assert.That(_server.ISupport.ChanTypes).IsEqualTo(["#", "&"]); 76 56 } 77 57 78 58 [Test] 79 - public void Modes() 59 + public async Task Modes() 80 60 { 81 - Assert.AreEqual(3, _server.ISupport.Modes); 61 + await Assert.That(_server.ISupport.Modes).IsEqualTo(3); 82 62 83 63 _server.Parse(new Line("005 * MODES *")); 84 - Assert.AreEqual(-1, _server.ISupport.Modes); 64 + await Assert.That(_server.ISupport.Modes).IsEqualTo(-1); 85 65 86 66 _server.Parse(new Line("005 * MODES=5 *")); 87 - Assert.AreEqual(5, _server.ISupport.Modes); 67 + await Assert.That(_server.ISupport.Modes).IsEqualTo(5); 88 68 } 89 69 90 70 [Test] 91 - public void Rfc1459() 71 + public async Task Rfc1459() 92 72 { 93 - Assert.AreEqual(IRCStates.Casemap.CaseMapping.Rfc1459, _server.ISupport.CaseMapping); 73 + await Assert.That(_server.ISupport.CaseMapping).IsEqualTo(IRCStates.Casemap.CaseMapping.Rfc1459); 94 74 _server.Parse(new Line("005 * CASEMAPPING=rfc1459 *")); 95 - Assert.AreEqual(IRCStates.Casemap.CaseMapping.Rfc1459, _server.ISupport.CaseMapping); 75 + await Assert.That(_server.ISupport.CaseMapping).IsEqualTo(IRCStates.Casemap.CaseMapping.Rfc1459); 96 76 var lower = _server.CaseFold(@"ÀTEST[]~\"); 97 - Assert.AreEqual("Àtest{}^|", lower); 77 + await Assert.That(lower).IsEqualTo("Àtest{}^|"); 98 78 } 99 79 100 80 [Test] 101 - public void Ascii() 81 + public async Task Ascii() 102 82 { 103 83 _server.Parse(new Line("005 * CASEMAPPING=ascii *")); 104 - Assert.AreEqual(IRCStates.Casemap.CaseMapping.Ascii, _server.ISupport.CaseMapping); 84 + await Assert.That(_server.ISupport.CaseMapping).IsEqualTo(IRCStates.Casemap.CaseMapping.Ascii); 105 85 var lower = _server.CaseFold(@"ÀTEST[]~\"); 106 - Assert.AreEqual(@"Àtest[]~\", lower); 86 + await Assert.That(lower).IsEqualTo(@"Àtest[]~\"); 107 87 } 108 88 109 89 [Test] 110 - public void FallbackToRfc1459() 90 + public async Task FallbackToRfc1459() 111 91 { 112 92 _server.Parse(new Line("005 * CASEMAPPING=nonexistent *")); 113 - Assert.AreEqual(IRCStates.Casemap.CaseMapping.Rfc1459, _server.ISupport.CaseMapping); 93 + await Assert.That(_server.ISupport.CaseMapping).IsEqualTo(IRCStates.Casemap.CaseMapping.Rfc1459); 114 94 var lower = _server.CaseFold(@"ÀTEST[]~\"); 115 - Assert.AreEqual("Àtest{}^|", lower); 95 + await Assert.That(lower).IsEqualTo("Àtest{}^|"); 116 96 } 117 97 118 98 [Test] 119 - public void Network() 99 + public async Task Network() 120 100 { 121 - Assert.IsNull(_server.ISupport.Network); 101 + await Assert.That(_server.ISupport.Network).IsNull(); 122 102 _server.Parse(new Line("005 * NETWORK=testnet *")); 123 - Assert.AreEqual("testnet", _server.ISupport.Network); 103 + await Assert.That(_server.ISupport.Network).IsEqualTo("testnet"); 124 104 } 125 105 126 106 [Test] 127 - public void StatusMsg() 107 + public async Task StatusMsg() 128 108 { 129 - CollectionAssert.AreEqual(new List<string>(), _server.ISupport.StatusMsg); 109 + await Assert.That(_server.ISupport.StatusMsg).IsEmpty(); 130 110 _server.Parse(new Line("005 * STATUSMSG=&@ *")); 131 - CollectionAssert.AreEqual(new List<string> {"&", "@"}, _server.ISupport.StatusMsg); 111 + await Assert.That(_server.ISupport.StatusMsg).IsEqualTo(["&", "@"]); 132 112 } 133 113 134 114 [Test] 135 - public void CallerId() 115 + public async Task CallerId() 136 116 { 137 - Assert.IsNull(_server.ISupport.CallerId); 117 + await Assert.That(_server.ISupport.CallerId).IsNull(); 138 118 139 119 _server.Parse(new Line("005 * CALLERID=U *")); 140 - Assert.AreEqual("U", _server.ISupport.CallerId); 120 + await Assert.That(_server.ISupport.CallerId).IsEqualTo("U"); 141 121 142 122 _server.Parse(new Line("005 * CALLERID *")); 143 - Assert.AreEqual("g", _server.ISupport.CallerId); 123 + await Assert.That(_server.ISupport.CallerId).IsEqualTo("g"); 144 124 } 145 125 146 126 [Test] 147 - public void Excepts() 127 + public async Task Excepts() 148 128 { 149 - Assert.IsNull(_server.ISupport.Excepts); 129 + await Assert.That(_server.ISupport.Excepts).IsNull(); 150 130 151 131 _server.Parse(new Line("005 * EXCEPTS=U *")); 152 - Assert.AreEqual("U", _server.ISupport.Excepts); 132 + await Assert.That(_server.ISupport.Excepts).IsEqualTo("U"); 153 133 154 134 _server.Parse(new Line("005 * EXCEPTS *")); 155 - Assert.AreEqual("e", _server.ISupport.Excepts); 135 + await Assert.That(_server.ISupport.Excepts).IsEqualTo("e"); 156 136 } 157 137 158 138 [Test] 159 - public void Invex() 139 + public async Task Invex() 160 140 { 161 - Assert.IsNull(_server.ISupport.Invex); 141 + await Assert.That(_server.ISupport.Invex).IsNull(); 162 142 163 143 _server.Parse(new Line("005 * INVEX=U *")); 164 - Assert.AreEqual("U", _server.ISupport.Invex); 144 + await Assert.That(_server.ISupport.Invex).IsEqualTo("U"); 165 145 166 146 _server.Parse(new Line("005 * INVEX *")); 167 - Assert.AreEqual("I", _server.ISupport.Invex); 147 + await Assert.That(_server.ISupport.Invex).IsEqualTo("I"); 168 148 } 169 149 170 150 [Test] 171 - public void Whox() 151 + public async Task Whox() 172 152 { 173 - Assert.IsFalse(_server.ISupport.Whox); 153 + await Assert.That(_server.ISupport.Whox).IsFalse(); 174 154 175 155 _server.Parse(new Line("005 * WHOX *")); 176 - Assert.IsTrue(_server.ISupport.Whox); 156 + await Assert.That(_server.ISupport.Whox).IsTrue(); 177 157 } 178 158 179 159 [Test] 180 - public void Monitor() 160 + public async Task Monitor() 181 161 { 182 - Assert.IsNull(_server.ISupport.Monitor); 162 + await Assert.That(_server.ISupport.Monitor).IsNull(); 183 163 184 164 _server.Parse(new Line("005 * MONITOR=123 *")); 185 - Assert.AreEqual(123, _server.ISupport.Monitor); 165 + await Assert.That(_server.ISupport.Monitor).IsEqualTo(123); 186 166 187 167 _server.Parse(new Line("005 * MONITOR *")); 188 - Assert.AreEqual(-1, _server.ISupport.Monitor); 168 + await Assert.That(_server.ISupport.Monitor).IsEqualTo(-1); 189 169 } 190 170 191 171 [Test] 192 - public void Watch() 172 + public async Task Watch() 193 173 { 194 - Assert.IsNull(_server.ISupport.Watch); 174 + await Assert.That(_server.ISupport.Watch).IsNull(); 195 175 196 176 _server.Parse(new Line("005 * WATCH=123 *")); 197 - Assert.AreEqual(123, _server.ISupport.Watch); 177 + await Assert.That(_server.ISupport.Watch).IsEqualTo(123); 198 178 199 179 _server.Parse(new Line("005 * WATCH *")); 200 - Assert.AreEqual(-1, _server.ISupport.Watch); 180 + await Assert.That(_server.ISupport.Watch).IsEqualTo(-1); 201 181 } 202 182 }
+36 -35
IRCSharp.Tests/State/Mode.cs
··· 1 1 // ReSharper disable StringLiteralTypo 2 + 2 3 namespace IRCSharp.Tests.State; 3 4 4 5 public class Mode ··· 11 12 } 12 13 13 14 [Test] 14 - public void UModeAdd() 15 + public async Task UModeAdd() 15 16 { 16 17 _server.Parse(new Line("MODE nickname +i")); 17 - CollectionAssert.AreEqual(new List<string> {"i"}, _server.Modes); 18 + await Assert.That(_server.Modes).IsEqualTo(["i"]); 18 19 } 19 20 20 21 [Test] 21 - public void UModeRemove() 22 + public async Task UModeRemove() 22 23 { 23 24 _server.Parse(new Line("MODE nickname +i")); 24 25 _server.Parse(new Line("MODE nickname -i")); 25 - CollectionAssert.AreEqual(new List<string>(), _server.Modes); 26 + await Assert.That(_server.Modes).IsEmpty(); 26 27 } 27 28 28 29 [Test] 29 - public void PrefixAdd() 30 + public async Task PrefixAdd() 30 31 { 31 32 _server.Parse(new Line(":nickname JOIN #chan")); 32 33 _server.Parse(new Line("MODE #chan +ov nickname nickname")); ··· 34 35 var user = _server.Users["nickname"]; 35 36 var channel = _server.Channels["#chan"]; 36 37 var channelUser = channel.Users[user.NickNameLower]; 37 - CollectionAssert.AreEqual(new List<string> {"o", "v"}, channelUser.Modes); 38 + await Assert.That(channelUser.Modes).IsEqualTo(["o", "v"]); 38 39 } 39 40 40 41 [Test] 41 - public void PrefixRemove() 42 + public async Task PrefixRemove() 42 43 { 43 44 _server.Parse(new Line(":nickname JOIN #chan")); 44 45 _server.Parse(new Line("MODE #chan +ov nickname nickname")); ··· 47 48 var user = _server.Users["nickname"]; 48 49 var channel = _server.Channels["#chan"]; 49 50 var channelUser = channel.Users[user.NickNameLower]; 50 - CollectionAssert.AreEqual(new List<string>(), channelUser.Modes); 51 + await Assert.That(channelUser.Modes).IsEmpty(); 51 52 } 52 53 53 54 [Test] 54 - public void ChannelListAdd() 55 + public async Task ChannelListAdd() 55 56 { 56 57 _server.Parse(new Line(":nickname JOIN #chan")); 57 58 _server.Parse(new Line("MODE #chan +b asd!*@*")); 58 59 59 60 var channel = _server.Channels["#chan"]; 60 - CollectionAssert.AreEqual(new List<string> {"asd!*@*"}, channel.ListModes["b"]); 61 + await Assert.That(channel.ListModes["b"]).IsEqualTo(["asd!*@*"]); 61 62 } 62 63 63 64 [Test] 64 - public void ChannelListRemove() 65 + public async Task ChannelListRemove() 65 66 { 66 67 _server.Parse(new Line(":nickname JOIN #chan")); 67 68 _server.Parse(new Line("MODE #chan +b asd!*@*")); 68 69 _server.Parse(new Line("MODE #chan -b asd!*@*")); 69 70 70 71 var channel = _server.Channels["#chan"]; 71 - CollectionAssert.AreEqual(new Dictionary<string, List<string>>(), channel.ListModes); 72 + await Assert.That(channel.ListModes).IsEmpty(); 72 73 } 73 74 74 75 [Test] 75 - public void ChannelTypeBAdd() 76 + public async Task ChannelTypeBAdd() 76 77 { 77 78 _server.Parse(new Line(":nickname JOIN #chan")); 78 79 _server.Parse(new Line("MODE #chan +k password")); 79 80 80 81 var channel = _server.Channels["#chan"]; 81 - CollectionAssert.AreEqual(new Dictionary<string, string> {{"k", "password"}}, channel.Modes); 82 + await Assert.That(channel.Modes).IsEqualTo(new Dictionary<string, string> { { "k", "password" } }); 82 83 } 83 84 84 85 [Test] 85 - public void ChannelTypeBRemove() 86 + public async Task ChannelTypeBRemove() 86 87 { 87 88 _server.Parse(new Line(":nickname JOIN #chan")); 88 89 _server.Parse(new Line("MODE #chan +k password")); 89 90 _server.Parse(new Line("MODE #chan -k *")); 90 91 91 92 var channel = _server.Channels["#chan"]; 92 - CollectionAssert.AreEqual(new Dictionary<string, string>(), channel.Modes); 93 + await Assert.That(channel.Modes).IsEmpty(); 93 94 } 94 95 95 96 [Test] 96 - public void ChannelTypeCAdd() 97 + public async Task ChannelTypeCAdd() 97 98 { 98 99 _server.Parse(new Line(":nickname JOIN #chan")); 99 100 _server.Parse(new Line("MODE #chan +l 100")); 100 101 101 102 var channel = _server.Channels["#chan"]; 102 - CollectionAssert.AreEqual(new Dictionary<string, string> {{"l", "100"}}, channel.Modes); 103 + await Assert.That(channel.Modes).IsEqualTo(new Dictionary<string, string> { { "l", "100" } }); 103 104 } 104 105 105 106 [Test] 106 - public void ChannelTypeCRemove() 107 + public async Task ChannelTypeCRemove() 107 108 { 108 109 _server.Parse(new Line(":nickname JOIN #chan")); 109 110 _server.Parse(new Line("MODE #chan +l 100")); 110 111 _server.Parse(new Line("MODE #chan -l")); 111 112 112 113 var channel = _server.Channels["#chan"]; 113 - CollectionAssert.AreEqual(new Dictionary<string, string>(), channel.Modes); 114 + await Assert.That(channel.Modes).IsEmpty(); 114 115 } 115 116 116 117 [Test] 117 - public void ChannelTypeDAdd() 118 + public async Task ChannelTypeDAdd() 118 119 { 119 120 _server.Parse(new Line(":nickname JOIN #chan")); 120 121 _server.Parse(new Line("MODE #chan +i")); 121 122 122 123 var channel = _server.Channels["#chan"]; 123 - CollectionAssert.AreEqual(new Dictionary<string, string> {{"i", null}}, channel.Modes); 124 + await Assert.That(channel.Modes).IsEqualTo(new Dictionary<string, string> { { "i", null } }); 124 125 } 125 126 126 127 [Test] 127 - public void ChannelTypeDRemove() 128 + public async Task ChannelTypeDRemove() 128 129 { 129 130 _server.Parse(new Line(":nickname JOIN #chan")); 130 131 _server.Parse(new Line("MODE #chan +i")); 131 132 _server.Parse(new Line("MODE #chan -i")); 132 133 133 134 var channel = _server.Channels["#chan"]; 134 - CollectionAssert.AreEqual(new Dictionary<string, string>(), channel.Modes); 135 + await Assert.That(channel.Modes).IsEmpty(); 135 136 } 136 137 137 138 [Test] 138 - public void ChannelNumeric() 139 + public async Task ChannelNumeric() 139 140 { 140 141 _server.Parse(new Line(":nickname JOIN #chan")); 141 142 _server.Parse(new Line("324 * #chan +bkli *!*@* pass 10")); 143 + var channel = _server.Channels["#chan"]; 142 144 143 - var channel = _server.Channels["#chan"]; 144 - CollectionAssert.AreEqual(new Dictionary<string, string> {{"k", "pass"}, {"l", "10"}, {"i", null}}, 145 - channel.Modes); 146 - CollectionAssert.AreEqual(new List<string> {"*!*@*"}, channel.ListModes["b"]); 145 + var expectedModes = new Dictionary<string, string> { { "k", "pass" }, { "l", "10" }, { "i", null } }; 146 + await Assert.That(channel.Modes).IsEqualTo(expectedModes); 147 + await Assert.That(channel.ListModes["b"]).IsEqualTo(["*!*@*"]); 147 148 } 148 149 149 150 [Test] 150 - public void ChannelNumericWithoutPlus() 151 + public async Task ChannelNumericWithoutPlus() 151 152 { 152 153 _server.Parse(new Line(":nickname JOIN #chan")); 153 154 _server.Parse(new Line("324 * #chan il 10")); 154 155 155 156 var channel = _server.Channels["#chan"]; 156 - CollectionAssert.AreEqual(new Dictionary<string, string> {{"i", null}, {"l", "10"}}, channel.Modes); 157 + await Assert.That(channel.Modes).IsEqualTo(new Dictionary<string, string> { { "i", null }, { "l", "10" } }); 157 158 } 158 159 159 160 [Test] 160 - public void UserNumeric() 161 + public async Task UserNumeric() 161 162 { 162 163 _server.Parse(new Line("221 * +iw")); 163 - CollectionAssert.AreEqual(new List<string> {"i", "w"}, _server.Modes); 164 + await Assert.That(_server.Modes).IsEqualTo(["i", "w"]); 164 165 } 165 166 166 167 [Test] 167 - public void UserNumericWithoutPlus() 168 + public async Task UserNumericWithoutPlus() 168 169 { 169 170 _server.Parse(new Line("221 * iw")); 170 - CollectionAssert.AreEqual(new List<string> {"i", "w"}, _server.Modes); 171 + await Assert.That(_server.Modes).IsEqualTo(["i", "w"]); 171 172 } 172 173 }
+2 -4
IRCSharp.Tests/State/Motd.cs
··· 1 1 namespace IRCSharp.Tests.State; 2 2 3 - [TestClass] 4 3 public class Motd 5 4 { 6 5 [Test] 7 - public void MessageOfTheDay() 6 + public async Task MessageOfTheDay() 8 7 { 9 8 var server = new Server("test"); 10 9 server.Parse(new Line("001 nickname")); ··· 12 11 server.Parse(new Line("372 * :first line of motd")); 13 12 server.Parse(new Line("372 * :second line of motd")); 14 13 15 - CollectionAssert.AreEqual(new List<string> {"start of motd", "first line of motd", "second line of motd"}, 16 - server.Motd); 14 + await Assert.That(server.Motd).IsEqualTo(["start of motd", "first line of motd", "second line of motd"]); 17 15 } 18 16 }
+12 -15
IRCSharp.Tests/State/Sasl.cs
··· 1 1 namespace IRCSharp.Tests.State; 2 2 3 - [TestClass] 4 3 public class Sasl 5 4 { 6 - private Server _server; 5 + private readonly Server _server = new("test"); 7 6 8 - [TestInitialize] 9 - public void TestInitialize() 7 + public Sasl() 10 8 { 11 - _server = new Server("test"); 12 9 _server.Parse(new Line("900 * nick!user@host account")); 13 10 } 14 11 15 12 [Test] 16 - public void LoggedIn() 13 + public async Task LoggedIn() 17 14 { 18 - Assert.AreEqual("nick", _server.NickName); 19 - Assert.AreEqual("user", _server.UserName); 20 - Assert.AreEqual("host", _server.HostName); 21 - Assert.AreEqual("account", _server.Account); 15 + await Assert.That(_server.NickName).IsEqualTo("nick"); 16 + await Assert.That(_server.UserName).IsEqualTo("user"); 17 + await Assert.That(_server.HostName).IsEqualTo("host"); 18 + await Assert.That(_server.Account).IsEqualTo("account"); 22 19 } 23 20 24 21 [Test] 25 - public void LoggedOut() 22 + public async Task LoggedOut() 26 23 { 27 24 _server.Parse(new Line("901 * nick1!user1@host1")); 28 25 29 - Assert.AreEqual("nick1", _server.NickName); 30 - Assert.AreEqual("user1", _server.UserName); 31 - Assert.AreEqual("host1", _server.HostName); 32 - Assert.IsTrue(string.IsNullOrEmpty(_server.Account)); 26 + await Assert.That(_server.NickName).IsEqualTo("nick1"); 27 + await Assert.That(_server.UserName).IsEqualTo("user1"); 28 + await Assert.That(_server.HostName).IsEqualTo("host1"); 29 + await Assert.That(_server.Account).IsEmpty(); 33 30 } 34 31 }
+102 -103
IRCSharp.Tests/State/User.cs
··· 1 - namespace IRCSharp.Tests.State; 1 + using System.Threading.Tasks; 2 + 3 + namespace IRCSharp.Tests.State; 2 4 3 - [TestClass] 4 5 public class User 5 6 { 6 - private Server _server; 7 + private readonly Server _server = new("test"); 7 8 8 - [TestInitialize] 9 - public void TestInitialize() 9 + public User() 10 10 { 11 - _server = new Server("test"); 12 11 _server.Parse(new Line("001 nickname")); 13 12 } 14 13 15 14 [Test] 16 - public void Welcome() 15 + public async Task Welcome() 17 16 { 18 - Assert.AreEqual("test", _server.Name); 19 - Assert.AreEqual("nickname", _server.NickName); 17 + await Assert.That(_server.Name).IsEqualTo("test"); 18 + await Assert.That(_server.NickName).IsEqualTo("nickname"); 20 19 } 21 20 22 21 [Test] 23 - public void NicknameChange() 22 + public async Task NicknameChange() 24 23 { 25 24 _server.Parse(new Line(":nickname NICK nickname2")); 26 - Assert.AreEqual("nickname2", _server.NickName); 25 + await Assert.That(_server.NickName).IsEqualTo("nickname2"); 27 26 28 27 _server.Parse(new Line(":nickname2 JOIN #chan")); 29 28 _server.Parse(new Line(":other JOIN #chan")); 30 - Assert.IsTrue(_server.Users.ContainsKey("other")); 29 + await Assert.That(_server.Users).ContainsKey("other"); 31 30 32 31 _server.Parse(new Line(":other NICK other2")); 33 - Assert.IsFalse(_server.Users.ContainsKey("other")); 34 - Assert.IsTrue(_server.Users.ContainsKey("other2")); 32 + await Assert.That(_server.Users).DoesNotContainKey("other"); 33 + await Assert.That(_server.Users).ContainsKey("other2"); 35 34 } 36 35 37 36 [Test] 38 - public void HostmaskJoinBoth() 37 + public async Task HostmaskJoinBoth() 39 38 { 40 39 _server.Parse(new Line(":nickname!user@host JOIN #chan")); 41 - Assert.AreEqual("user", _server.UserName); 42 - Assert.AreEqual("host", _server.HostName); 40 + await Assert.That(_server.UserName).IsEqualTo("user"); 41 + await Assert.That(_server.HostName).IsEqualTo("host"); 43 42 44 43 _server.Parse(new Line(":other!user@host JOIN #chan")); 45 44 var user = _server.Users["other"]; 46 - Assert.AreEqual("user", user.UserName); 47 - Assert.AreEqual("host", user.HostName); 45 + await Assert.That(user.UserName).IsEqualTo("user"); 46 + await Assert.That(user.HostName).IsEqualTo("host"); 48 47 } 49 48 50 49 [Test] 51 - public void HostmaskJoinUser() 50 + public async Task HostmaskJoinUser() 52 51 { 53 52 _server.Parse(new Line(":nickname!user JOIN #chan")); 54 - Assert.AreEqual("user", _server.UserName); 55 - Assert.IsNull(_server.HostName); 53 + await Assert.That(_server.UserName).IsEqualTo("user"); 54 + await Assert.That(_server.HostName).IsNull(); 56 55 57 56 _server.Parse(new Line(":other!user JOIN #chan")); 58 57 var user = _server.Users["other"]; 59 - Assert.AreEqual("user", user.UserName); 60 - Assert.IsNull(user.HostName); 58 + await Assert.That(user.UserName).IsEqualTo("user"); 59 + await Assert.That(user.HostName).IsNull(); 61 60 } 62 61 63 62 [Test] 64 - public void HostmaskJoinHost() 63 + public async Task HostmaskJoinHost() 65 64 { 66 65 _server.Parse(new Line(":nickname@host JOIN #chan")); 67 - Assert.IsNull(_server.UserName); 68 - Assert.AreEqual("host", _server.HostName); 66 + await Assert.That(_server.UserName).IsNull(); 67 + await Assert.That(_server.HostName).IsEqualTo("host"); 69 68 70 69 _server.Parse(new Line(":other@host JOIN #chan")); 71 70 var user = _server.Users["other"]; 72 - Assert.IsNull(user.UserName); 73 - Assert.AreEqual("host", user.HostName); 71 + await Assert.That(user.UserName).IsNull(); 72 + await Assert.That(user.HostName).IsEqualTo("host"); 74 73 } 75 74 76 75 [Test] 77 - public void ExtendedJoinWithoutExtendedJoin() 76 + public async Task ExtendedJoinWithoutExtendedJoin() 78 77 { 79 78 _server.Parse(new Line(":nickname JOIN #chan")); 80 - Assert.IsNull(_server.Account); 81 - Assert.IsNull(_server.RealName); 79 + await Assert.That(_server.Account).IsNull(); 80 + await Assert.That(_server.RealName).IsNull(); 82 81 83 82 _server.Parse(new Line(":other JOIN #chan")); 84 83 var user = _server.Users["other"]; 85 - Assert.IsNull(user.Account); 86 - Assert.IsNull(user.RealName); 84 + await Assert.That(user.Account).IsNull(); 85 + await Assert.That(user.RealName).IsNull(); 87 86 } 88 87 89 88 [Test] 90 - public void ExtendedJoinWithAccount() 89 + public async Task ExtendedJoinWithAccount() 91 90 { 92 91 _server.Parse(new Line(":nickname JOIN #chan acc :realname")); 93 - Assert.AreEqual("acc", _server.Account); 94 - Assert.AreEqual("realname", _server.RealName); 92 + await Assert.That(_server.Account).IsEqualTo("acc"); 93 + await Assert.That(_server.RealName).IsEqualTo("realname"); 95 94 96 95 _server.Parse(new Line(":other JOIN #chan acc2 :realname2")); 97 96 var user = _server.Users["other"]; 98 - Assert.AreEqual("acc2", user.Account); 99 - Assert.AreEqual("realname2", user.RealName); 97 + await Assert.That(user.Account).IsEqualTo("acc2"); 98 + await Assert.That(user.RealName).IsEqualTo("realname2"); 100 99 } 101 100 102 101 [Test] 103 - public void ExtendedJoinWithoutAccount() 102 + public async Task ExtendedJoinWithoutAccount() 104 103 { 105 104 _server.Parse(new Line(":nickname JOIN #chan * :realname")); 106 - Assert.AreEqual("", _server.Account); 107 - Assert.AreEqual("realname", _server.RealName); 105 + await Assert.That(_server.Account).IsEqualTo(""); 106 + await Assert.That(_server.RealName).IsEqualTo("realname"); 108 107 109 108 _server.Parse(new Line(":other JOIN #chan * :realname2")); 110 109 var user = _server.Users["other"]; 111 - Assert.AreEqual("", user.Account); 112 - Assert.AreEqual("realname2", user.RealName); 110 + await Assert.That(user.Account).IsEqualTo(""); 111 + await Assert.That(user.RealName).IsEqualTo("realname2"); 113 112 } 114 113 115 114 [Test] 116 - public void AccountNotifyWithAccount() 115 + public async Task AccountNotifyWithAccount() 117 116 { 118 117 _server.Parse(new Line(":nickname JOIN #chan")); 119 118 _server.Parse(new Line(":nickname ACCOUNT acc")); 120 - Assert.AreEqual("acc", _server.Account); 119 + await Assert.That(_server.Account).IsEqualTo("acc"); 121 120 122 121 _server.Parse(new Line(":other JOIN #chan")); 123 122 _server.Parse(new Line(":other ACCOUNT acc2")); 124 123 var user = _server.Users["other"]; 125 - Assert.AreEqual("acc2", user.Account); 124 + await Assert.That(user.Account).IsEqualTo("acc2"); 126 125 } 127 126 128 127 [Test] 129 - public void AccountNotifyWithoutAccount() 128 + public async Task AccountNotifyWithoutAccount() 130 129 { 131 130 _server.Parse(new Line(":nickname JOIN #chan")); 132 131 _server.Parse(new Line(":nickname ACCOUNT *")); 133 - Assert.AreEqual("", _server.Account); 132 + await Assert.That(_server.Account).IsEqualTo(""); 134 133 135 134 _server.Parse(new Line(":other JOIN #chan")); 136 135 _server.Parse(new Line(":other ACCOUNT *")); 137 136 var user = _server.Users["other"]; 138 - Assert.AreEqual("", user.Account); 137 + await Assert.That(user.Account).IsEqualTo(""); 139 138 } 140 139 141 140 [Test] 142 - public void HostmaskPrivmsgBoth() 141 + public async Task HostmaskPrivmsgBoth() 143 142 { 144 143 _server.Parse(new Line(":nickname JOIN #chan")); 145 144 _server.Parse(new Line(":nickname!user@host PRIVMSG #chan :hi")); 146 - Assert.AreEqual("user", _server.UserName); 147 - Assert.AreEqual("host", _server.HostName); 145 + await Assert.That(_server.UserName).IsEqualTo("user"); 146 + await Assert.That(_server.HostName).IsEqualTo("host"); 148 147 149 148 _server.Parse(new Line(":other!user@host PRIVMSG #chan :hi")); 150 149 var user = _server.Users["other"]; 151 - Assert.AreEqual("user", user.UserName); 152 - Assert.AreEqual("host", user.HostName); 150 + await Assert.That(user.UserName).IsEqualTo("user"); 151 + await Assert.That(user.HostName).IsEqualTo("host"); 153 152 } 154 153 155 154 [Test] 156 - public void HostmaskPrivmsgUser() 155 + public async Task HostmaskPrivmsgUser() 157 156 { 158 157 _server.Parse(new Line(":nickname JOIN #chan")); 159 158 _server.Parse(new Line(":nickname!user PRIVMSG #chan :hi")); 160 - Assert.AreEqual("user", _server.UserName); 161 - Assert.IsNull(_server.HostName); 159 + await Assert.That(_server.UserName).IsEqualTo("user"); 160 + await Assert.That(_server.HostName).IsNull(); 162 161 163 162 _server.Parse(new Line(":other!user PRIVMSG #chan :hi")); 164 163 var user = _server.Users["other"]; 165 - Assert.AreEqual("user", user.UserName); 166 - Assert.IsNull(user.HostName); 164 + await Assert.That(user.UserName).IsEqualTo("user"); 165 + await Assert.That(user.HostName).IsNull(); 167 166 } 168 167 169 168 [Test] 170 - public void HostmaskPrivmsgHost() 169 + public async Task HostmaskPrivmsgHost() 171 170 { 172 171 _server.Parse(new Line(":nickname JOIN #chan")); 173 172 _server.Parse(new Line(":nickname@host PRIVMSG #chan :hi")); 174 - Assert.IsNull(_server.UserName); 175 - Assert.AreEqual("host", _server.HostName); 173 + await Assert.That(_server.UserName).IsNull(); 174 + await Assert.That(_server.HostName).IsEqualTo("host"); 176 175 177 176 _server.Parse(new Line(":other@host PRIVMSG #chan :hi")); 178 177 var user = _server.Users["other"]; 179 - Assert.IsNull(user.UserName); 180 - Assert.AreEqual("host", user.HostName); 178 + await Assert.That(user.UserName).IsNull(); 179 + await Assert.That(user.HostName).IsEqualTo("host"); 181 180 } 182 181 183 182 [Test] 184 - public void VisibleHostWithoutUsername() 183 + public async Task VisibleHostWithoutUsername() 185 184 { 186 185 _server.Parse(new Line("396 * hostname")); 187 - Assert.IsNull(_server.UserName); 188 - Assert.AreEqual("hostname", _server.HostName); 186 + await Assert.That(_server.UserName).IsNull(); 187 + await Assert.That(_server.HostName).IsEqualTo("hostname"); 189 188 } 190 189 191 190 [Test] 192 - public void VisibleHostWithUsername() 191 + public async Task VisibleHostWithUsername() 193 192 { 194 193 _server.Parse(new Line("396 * username@hostname")); 195 - Assert.AreEqual("username", _server.UserName); 196 - Assert.AreEqual("hostname", _server.HostName); 194 + await Assert.That(_server.UserName).IsEqualTo("username"); 195 + await Assert.That(_server.HostName).IsEqualTo("hostname"); 197 196 } 198 197 199 198 [Test] 200 - public void Who() 199 + public async Task Who() 201 200 { 202 201 _server.Parse(new Line(":nickname JOIN #chan")); 203 202 _server.Parse(new Line(":other JOIN #chan")); 204 203 _server.Parse(new Line("352 * #chan user host * nickname * :0 real")); 205 204 _server.Parse(new Line("352 * #chan user2 host2 * other * :0 real2")); 206 205 207 - Assert.AreEqual("user", _server.UserName); 208 - Assert.AreEqual("host", _server.HostName); 209 - Assert.AreEqual("real", _server.RealName); 206 + await Assert.That(_server.UserName).IsEqualTo("user"); 207 + await Assert.That(_server.HostName).IsEqualTo("host"); 208 + await Assert.That(_server.RealName).IsEqualTo("real"); 210 209 211 210 var user = _server.Users["other"]; 212 - Assert.AreEqual("user2", user.UserName); 213 - Assert.AreEqual("host2", user.HostName); 214 - Assert.AreEqual("real2", user.RealName); 211 + await Assert.That(user.UserName).IsEqualTo("user2"); 212 + await Assert.That(user.HostName).IsEqualTo("host2"); 213 + await Assert.That(user.RealName).IsEqualTo("real2"); 215 214 } 216 215 217 216 [Test] 218 - public void Chghost() 217 + public async Task Chghost() 219 218 { 220 219 _server.Parse(new Line(":nickname!user@host JOIN #chan")); 221 220 _server.Parse(new Line(":nickname CHGHOST u h")); 222 - Assert.AreEqual("u", _server.UserName); 223 - Assert.AreEqual("h", _server.HostName); 221 + await Assert.That(_server.UserName).IsEqualTo("u"); 222 + await Assert.That(_server.HostName).IsEqualTo("h"); 224 223 225 224 _server.Parse(new Line(":other!user2@host2 JOIN #chan")); 226 225 _server.Parse(new Line(":other CHGHOST u2 h2")); 227 226 var user = _server.Users["other"]; 228 - Assert.AreEqual("u2", user.UserName); 229 - Assert.AreEqual("h2", user.HostName); 227 + await Assert.That(user.UserName).IsEqualTo("u2"); 228 + await Assert.That(user.HostName).IsEqualTo("h2"); 230 229 } 231 230 232 231 [Test] 233 - public void Whois() 232 + public async Task Whois() 234 233 { 235 234 _server.Parse(new Line(":nickname JOIN #chan")); 236 235 _server.Parse(new Line("311 * nickname u h * :r")); 237 - Assert.AreEqual("u", _server.UserName); 238 - Assert.AreEqual("h", _server.HostName); 239 - Assert.AreEqual("r", _server.RealName); 236 + await Assert.That(_server.UserName).IsEqualTo("u"); 237 + await Assert.That(_server.HostName).IsEqualTo("h"); 238 + await Assert.That(_server.RealName).IsEqualTo("r"); 240 239 241 240 _server.Parse(new Line(":other JOIN #chan")); 242 241 _server.Parse(new Line(":other CHGHOST u2 h2")); 243 242 _server.Parse(new Line("311 * other u2 h2 * :r2")); 244 243 var user = _server.Users["other"]; 245 - Assert.AreEqual("u2", user.UserName); 246 - Assert.AreEqual("h2", user.HostName); 247 - Assert.AreEqual("r2", user.RealName); 244 + await Assert.That(user.UserName).IsEqualTo("u2"); 245 + await Assert.That(user.HostName).IsEqualTo("h2"); 246 + await Assert.That(user.RealName).IsEqualTo("r2"); 248 247 } 249 248 250 249 [Test] 251 - public void AwaySet() 250 + public async Task AwaySet() 252 251 { 253 252 _server.Parse(new Line(":nickname JOIN #chan")); 254 253 _server.Parse(new Line(":other JOIN #chan")); 255 254 var user = _server.Users["other"]; 256 - Assert.IsNull(_server.Away); 257 - Assert.IsNull(user.Away); 255 + await Assert.That(_server.Away).IsNull(); 256 + await Assert.That(user.Away).IsNull(); 258 257 259 258 _server.Parse(new Line(":nickname AWAY :bye bye")); 260 259 _server.Parse(new Line(":other AWAY :ich geh weg")); 261 - Assert.AreEqual("bye bye", _server.Away); 262 - Assert.AreEqual("ich geh weg", user.Away); 260 + await Assert.That(_server.Away).IsEqualTo("bye bye"); 261 + await Assert.That(user.Away).IsEqualTo("ich geh weg"); 263 262 } 264 263 265 264 [Test] 266 - public void AwayUnset() 265 + public async Task AwayUnset() 267 266 { 268 267 _server.Parse(new Line(":nickname JOIN #chan")); 269 268 _server.Parse(new Line(":other JOIN #chan")); ··· 273 272 _server.Parse(new Line(":other AWAY")); 274 273 275 274 var user = _server.Users["other"]; 276 - Assert.IsNull(_server.Away); 277 - Assert.IsNull(user.Away); 275 + await Assert.That(_server.Away).IsNull(); 276 + await Assert.That(user.Away).IsNull(); 278 277 } 279 278 280 279 [Test] 281 - public void Setname() 280 + public async Task Setname() 282 281 { 283 282 _server.Parse(new Line(":nickname JOIN #chan")); 284 283 _server.Parse(new Line(":other JOIN #chan")); 285 284 var user = _server.Users["other"]; 286 - Assert.IsNull(user.RealName); 287 - Assert.IsNull(_server.RealName); 285 + await Assert.That(user.RealName).IsNull(); 286 + await Assert.That(_server.RealName).IsNull(); 288 287 289 288 _server.Parse(new Line(":nickname SETNAME :new now know how")); 290 289 _server.Parse(new Line(":other SETNAME :tyrannosaurus hex")); 291 - Assert.AreEqual("new now know how", _server.RealName); 292 - Assert.AreEqual("tyrannosaurus hex", user.RealName); 290 + await Assert.That(_server.RealName).IsEqualTo("new now know how"); 291 + await Assert.That(user.RealName).IsEqualTo("tyrannosaurus hex"); 293 292 } 294 293 }
+21 -24
IRCSharp.Tests/State/Who.cs
··· 1 1 // ReSharper disable StringLiteralTypo 2 2 namespace IRCSharp.Tests.State; 3 3 4 - [TestClass] 5 4 public class Who 6 5 { 7 - private Server _server; 6 + private readonly Server _server = new("test"); 8 7 9 - [TestInitialize] 10 - public void TestInitialize() 8 + public Who() 11 9 { 12 - _server = new Server("test"); 13 10 _server.Parse(new Line("001 nickname")); 14 11 _server.Parse(new Line(":nickname JOIN #chan")); 15 12 } 16 13 17 14 [Test] 18 - public void WhoResponse() 15 + public async Task WhoResponse() 19 16 { 20 17 _server.Parse(new Line("352 * #chan user host server nickname * :0 real")); 21 18 var user = _server.Users["nickname"]; 22 19 23 - Assert.AreEqual("user", user.UserName); 24 - Assert.AreEqual("host", _server.HostName); 25 - Assert.AreEqual("real", user.RealName); 20 + await Assert.That(user.UserName).IsEqualTo("user"); 21 + await Assert.That(_server.HostName).IsEqualTo("host"); 22 + await Assert.That(user.RealName).IsEqualTo("real"); 26 23 27 - Assert.AreEqual(user.UserName, _server.UserName); 28 - Assert.AreEqual(user.HostName, _server.HostName); 29 - Assert.AreEqual(user.RealName, _server.RealName); 24 + await Assert.That(_server.UserName).IsEqualTo(user.UserName); 25 + await Assert.That(_server.HostName).IsEqualTo(user.HostName); 26 + await Assert.That(_server.RealName).IsEqualTo(user.RealName); 30 27 } 31 28 32 29 [Test] 33 - public void Whox() 30 + public async Task Whox() 34 31 { 35 32 _server.Parse(new Line($"354 * {Server.WhoType} user realip host nickname account :real")); 36 33 var user = _server.Users["nickname"]; 37 34 38 - Assert.AreEqual("user", user.UserName); 39 - Assert.AreEqual("host", user.HostName); 40 - Assert.AreEqual("real", user.RealName); 41 - Assert.AreEqual("account", user.Account); 35 + await Assert.That(user.UserName).IsEqualTo("user"); 36 + await Assert.That(user.HostName).IsEqualTo("host"); 37 + await Assert.That(user.RealName).IsEqualTo("real"); 38 + await Assert.That(user.Account).IsEqualTo("account"); 42 39 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); 40 + await Assert.That(_server.UserName).IsEqualTo(user.UserName); 41 + await Assert.That(_server.HostName).IsEqualTo(user.HostName); 42 + await Assert.That(_server.RealName).IsEqualTo(user.RealName); 43 + await Assert.That(_server.Account).IsEqualTo(user.Account); 47 44 } 48 45 49 46 [Test] 50 - public void WhoxNoAccount() 47 + public async Task WhoxNoAccount() 51 48 { 52 49 _server.Parse(new Line($"354 * {Server.WhoType} user realip host nickname 0 :real")); 53 50 var user = _server.Users["nickname"]; 54 51 55 - Assert.IsNull(user.Account); 56 - Assert.AreEqual(user.Account, _server.Account); 52 + await Assert.That(user.Account).IsNull(); 53 + await Assert.That(_server.Account).IsEqualTo(user.Account); 57 54 } 58 55 }
+2 -2
IRCSharp.Tests/Tokenization/StatefulDecoder.cs
··· 8 8 public async Task Partial() 9 9 { 10 10 var lines = _decoder.Push("PRIVMSG "); 11 - Assert.That(lines).IsEmpty(); 11 + await Assert.That(lines).IsEmpty(); 12 12 13 13 lines = _decoder.Push("#channel hello\r\n"); 14 - Assert.That(lines).HasCount(1); 14 + await Assert.That(lines).HasCount(1); 15 15 16 16 var line = new Line("PRIVMSG #channel hello"); 17 17 await Assert.That(lines).Contains(line);
+16 -16
IRCSharp.Tests/Tokenization/StatefulEncoder.cs
··· 5 5 private readonly IRCTokens.StatefulEncoder _encoder = new(); 6 6 7 7 [Test] 8 - public void Push() 8 + public async Task Push() 9 9 { 10 10 var line = new Line("PRIVMSG #channel hello"); 11 11 _encoder.Push(line); 12 - Assert.AreEqual("PRIVMSG #channel hello\r\n", _encoder.Pending()); 12 + await Assert.That(_encoder.Pending()).IsEqualTo("PRIVMSG #channel hello\r\n"); 13 13 } 14 14 15 15 [Test] 16 - public void PopPartial() 16 + public async Task PopPartial() 17 17 { 18 18 var line = new Line("PRIVMSG #channel hello"); 19 19 _encoder.Push(line); 20 20 _encoder.Pop("PRIVMSG #channel hello".Length); 21 - Assert.AreEqual("\r\n", _encoder.Pending()); 21 + await Assert.That(_encoder.Pending()).IsEqualTo("\r\n"); 22 22 } 23 23 24 24 [Test] 25 - public void TestPopReturned() 25 + public async Task TestPopReturned() 26 26 { 27 27 var line = new Line("PRIVMSG #channel hello"); 28 28 _encoder.Push(line); 29 29 _encoder.Push(line); 30 30 var lines = _encoder.Pop("PRIVMSG #channel hello\r\n".Length); 31 - Assert.AreEqual(1, lines.Count); 32 - Assert.AreEqual(line, lines[0]); 31 + await Assert.That(lines).HasCount(1); 32 + await Assert.That(lines[0]).IsEqualTo(line); 33 33 } 34 34 35 35 [Test] 36 - public void PopNoneReturned() 36 + public async Task PopNoneReturned() 37 37 { 38 38 var line = new Line("PRIVMSG #channel hello"); 39 39 _encoder.Push(line); 40 40 var lines = _encoder.Pop(1); 41 - Assert.AreEqual(0, lines.Count); 41 + await Assert.That(lines).IsEmpty(); 42 42 } 43 43 44 44 [Test] 45 - public void PopMultipleLines() 45 + public async Task PopMultipleLines() 46 46 { 47 47 var line1 = new Line("PRIVMSG #channel1 hello"); 48 48 _encoder.Push(line1); ··· 50 50 _encoder.Push(line2); 51 51 52 52 var lines = _encoder.Pop(_encoder.Pending().Length); 53 - Assert.AreEqual(2, lines.Count); 54 - Assert.AreEqual(string.Empty, _encoder.Pending()); 53 + await Assert.That(lines).HasCount(2); 54 + await Assert.That(_encoder.Pending()).IsEmpty(); 55 55 } 56 56 57 57 [Test] 58 - public void Clear() 58 + public async Task Clear() 59 59 { 60 60 _encoder.Push(new Line("PRIVMSG #channel hello")); 61 61 _encoder.Clear(); 62 - Assert.AreEqual(string.Empty, _encoder.Pending()); 62 + await Assert.That(_encoder.Pending()).IsEmpty(); 63 63 } 64 64 65 65 [Test] 66 - public void EncodingIso8859() 66 + public async Task EncodingIso8859() 67 67 { 68 68 var encoder = new IRCTokens.StatefulEncoder {Encoding = Encoding.Latin1}; 69 69 encoder.Push(new Line("PRIVMSG #channel :hello Ç")); 70 - CollectionAssert.AreEqual(Encoding.Latin1.GetBytes("PRIVMSG #channel :hello Ç\r\n"), encoder.PendingBytes); 70 + await Assert.That(encoder.PendingBytes).IsEqualTo(Encoding.Latin1.GetBytes("PRIVMSG #channel :hello Ç\r\n")); 71 71 } 72 72 }
+38 -41
IRCSharp.Tests/Tokenization/Tokenization.cs
··· 3 3 public class Tokenization 4 4 { 5 5 [Test] 6 - public void TagsMissing() 6 + public async Task TagsMissing() 7 7 { 8 8 var line = new Line("PRIVMSG #channel"); 9 - Assert.IsNull(line.Tags); 9 + await Assert.That(line.Tags).IsNull(); 10 10 } 11 11 12 12 [Test] 13 - public void TagsMissingValue() 13 + public async Task TagsMissingValue() 14 14 { 15 15 var line = new Line("@id= PRIVMSG #channel"); 16 - Assert.AreEqual(string.Empty, line.Tags["id"]); 16 + await Assert.That(line.Tags["id"]).IsEmpty(); 17 17 } 18 18 19 19 [Test] 20 - public void TagsMissingEqual() 20 + public async Task TagsMissingEqual() 21 21 { 22 22 var line = new Line("@id PRIVMSG #channel"); 23 - Assert.IsNull(line.Tags["id"]); 23 + await Assert.That(line.Tags["id"]).IsNull(); 24 24 } 25 25 26 26 [Test] 27 - public void TagsUnescape() 27 + public async Task TagsUnescape() 28 28 { 29 29 var line = new Line(@"@id=1\\\:\r\n\s2 PRIVMSG #channel"); 30 - Assert.AreEqual("1\\;\r\n 2", line.Tags["id"]); 30 + await Assert.That(line.Tags["id"]).IsEqualTo("1\\;\r\n 2"); 31 31 } 32 32 33 33 [Test] 34 - public void TagsOverlap() 34 + public async Task TagsOverlap() 35 35 { 36 36 var line = new Line(@"@id=1\\\s\\s PRIVMSG #channel"); 37 - Assert.AreEqual(@"1\ \s", line.Tags["id"]); 37 + await Assert.That(line.Tags["id"]).IsEqualTo(@"1\ \s"); 38 38 } 39 39 40 40 [Test] 41 - public void TagsLoneEndSlash() 41 + public async Task TagsLoneEndSlash() 42 42 { 43 43 var line = new Line("@id=1\\ PRIVMSG #channel"); 44 - Assert.AreEqual("1", line.Tags["id"]); 44 + await Assert.That(line.Tags["id"]).IsEqualTo("1"); 45 45 } 46 46 47 47 [Test] 48 - public void SourceWithoutTags() 48 + public async Task SourceWithoutTags() 49 49 { 50 50 var line = new Line(":nick!user@host PRIVMSG #channel"); 51 - Assert.AreEqual("nick!user@host", line.Source); 51 + await Assert.That(line.Source).IsEqualTo("nick!user@host"); 52 52 } 53 53 54 54 [Test] 55 - public void SourceWithTags() 55 + public async Task SourceWithTags() 56 56 { 57 57 var line = new Line("@id=123 :nick!user@host PRIVMSG #channel"); 58 - Assert.AreEqual("nick!user@host", line.Source); 58 + await Assert.That(line.Source).IsEqualTo("nick!user@host"); 59 59 } 60 60 61 61 [Test] 62 - public void SourceMissingWithoutTags() 62 + public async Task SourceMissingWithoutTags() 63 63 { 64 64 var line = new Line("PRIVMSG #channel"); 65 - Assert.IsNull(line.Source); 65 + await Assert.That(line.Source).IsNull(); 66 66 } 67 67 68 68 [Test] 69 - public void SourceMissingWithTags() 69 + public async Task SourceMissingWithTags() 70 70 { 71 71 var line = new Line("@id=123 PRIVMSG #channel"); 72 - Assert.IsNull(line.Source); 72 + await Assert.That(line.Source).IsNull(); 73 73 } 74 74 75 75 [Test] 76 - public void Command() 76 + public async Task Command() 77 77 { 78 78 var line = new Line("privmsg #channel"); 79 - Assert.AreEqual("PRIVMSG", line.Command); 79 + await Assert.That(line.Command).IsEqualTo("PRIVMSG"); 80 80 } 81 81 82 82 [Test] 83 - public void ParamsTrailing() 83 + public async Task ParamsTrailing() 84 84 { 85 85 var line = new Line("PRIVMSG #channel :hello world"); 86 - CollectionAssert.AreEqual(new List<string> {"#channel", "hello world"}, line.Params); 86 + await Assert.That(line.Params).IsEqualTo(["#channel", "hello world"]); 87 87 } 88 88 89 89 [Test] 90 - public void ParamsOnlyTrailing() 90 + public async Task ParamsOnlyTrailing() 91 91 { 92 92 var line = new Line("PRIVMSG :hello world"); 93 - CollectionAssert.AreEqual(new List<string> {"hello world"}, line.Params); 93 + await Assert.That(line.Params).IsEqualTo(["hello world"]); 94 94 } 95 95 96 96 [Test] 97 - public void ParamsMissing() 97 + public async Task ParamsMissing() 98 98 { 99 99 var line = new Line("PRIVMSG"); 100 - Assert.AreEqual("PRIVMSG", line.Command); 101 - CollectionAssert.AreEqual(new List<string>(), line.Params); 100 + await Assert.That(line.Command).IsEqualTo("PRIVMSG"); 101 + await Assert.That(line.Params).IsEqualTo([]); 102 102 } 103 103 104 104 [Test] 105 - public void AllTokens() 105 + public async Task AllTokens() 106 106 { 107 107 var line = new Line("@id=123 :nick!user@host PRIVMSG #channel :hello world"); 108 - CollectionAssert.AreEqual(new Dictionary<string, string> {{"id", "123"}}, line.Tags); 109 - Assert.AreEqual("nick!user@host", line.Source); 110 - Assert.AreEqual("PRIVMSG", line.Command); 111 - CollectionAssert.AreEqual(new List<string> {"#channel", "hello world"}, line.Params); 108 + await Assert.That(line.Tags).IsEqualTo(new Dictionary<string, string> {{"id", "123"}}); 109 + await Assert.That(line.Source).IsEqualTo("nick!user@host"); 110 + await Assert.That(line.Command).IsEqualTo("PRIVMSG"); 111 + await Assert.That(line.Params).IsEqualTo(["#channel", "hello world"]); 112 112 } 113 113 114 114 [Test] 115 - public void NulByte() 115 + public async Task NulByte() 116 116 { 117 117 var decoder = new IRCTokens.StatefulDecoder(); 118 - var bytes = ":nick!user@host PRIVMSG #channel :hello"u8.ToArray() 119 - .Concat("\0"u8.ToArray()) 120 - .Concat("world"u8.ToArray()) 121 - .ToArray(); 122 - var line = decoder.Push(bytes, bytes.Length).First(); 118 + var bytes = ":nick!user@host PRIVMSG #channel :hello\0world"u8; 119 + var line = decoder.Push(bytes.ToArray(), bytes.Length).First(); 123 120 124 - CollectionAssert.AreEqual(new List<string> {"#channel", "hello"}, line.Params); 121 + await Assert.That(line.Params).IsEqualTo(["#channel", "hello"]); 125 122 } 126 123 }