about summary refs log tree commit diff
path: root/IrcStates/Tests/Mode.cs
diff options
context:
space:
mode:
authorBen Harris <ben@tilde.team>2020-05-06 11:48:07 -0400
committerBen Harris <ben@tilde.team>2020-05-06 11:48:07 -0400
commit0117d9d9a0a395166e15c0996f87af823928d011 (patch)
tree11c8ceb3b36f9e2f558397ef3fe88ea90837578c /IrcStates/Tests/Mode.cs
parentdfe5a0035bd321a0774ae402de8fa5cc8f2b8c06 (diff)
add all missing tests
Diffstat (limited to 'IrcStates/Tests/Mode.cs')
-rw-r--r--IrcStates/Tests/Mode.cs77
1 files changed, 77 insertions, 0 deletions
diff --git a/IrcStates/Tests/Mode.cs b/IrcStates/Tests/Mode.cs
index 98c6aaf..3418adb 100644
--- a/IrcStates/Tests/Mode.cs
+++ b/IrcStates/Tests/Mode.cs
@@ -34,71 +34,148 @@ namespace IrcStates.Tests
         [TestMethod]
         public void PrefixAdd()
         {
+            _server.ParseTokens(new Line(":nickname JOIN #chan"));
+            _server.ParseTokens(new Line("MODE #chan +ov nickname nickname"));
+
+            var user        = _server.Users["nickname"];
+            var channel     = _server.Channels["#chan"];
+            var channelUser = channel.Users[user.NickNameLower];
+            CollectionAssert.AreEqual(new List<string> {"o", "v"}, channelUser.Modes);
         }
 
         [TestMethod]
         public void PrefixRemove()
         {
+            _server.ParseTokens(new Line(":nickname JOIN #chan"));
+            _server.ParseTokens(new Line("MODE #chan +ov nickname nickname"));
+            _server.ParseTokens(new Line("MODE #chan -ov nickname nickname"));
+
+            var user        = _server.Users["nickname"];
+            var channel     = _server.Channels["#chan"];
+            var channelUser = channel.Users[user.NickNameLower];
+            CollectionAssert.AreEqual(new List<string>(), channelUser.Modes);
         }
 
         [TestMethod]
         public void ChannelListAdd()
         {
+            _server.ParseTokens(new Line(":nickname JOIN #chan"));
+            _server.ParseTokens(new Line("MODE #chan +b asd!*@*"));
+
+            var channel = _server.Channels["#chan"];
+            CollectionAssert.AreEqual(new Dictionary<string, List<string>> {{"b", new List<string> {"asd!*@*"}}},
+                channel.ListModes);
         }
 
         [TestMethod]
         public void ChannelListRemove()
         {
+            _server.ParseTokens(new Line(":nickname JOIN #chan"));
+            _server.ParseTokens(new Line("MODE #chan +b asd!*@*"));
+            _server.ParseTokens(new Line("MODE #chan -b asd!*@*"));
+
+            var channel = _server.Channels["#chan"];
+            CollectionAssert.AreEqual(new Dictionary<string, List<string>>(), channel.ListModes);
         }
 
         [TestMethod]
         public void ChannelTypeBAdd()
         {
+            _server.ParseTokens(new Line(":nickname JOIN #chan"));
+            _server.ParseTokens(new Line("MODE #chan +k password"));
+
+            var channel = _server.Channels["#chan"];
+            CollectionAssert.AreEqual(new Dictionary<string, string> {{"k", "password"}}, channel.Modes);
         }
 
         [TestMethod]
         public void ChannelTypeBRemove()
         {
+            _server.ParseTokens(new Line(":nickname JOIN #chan"));
+            _server.ParseTokens(new Line("MODE #chan +k password"));
+            _server.ParseTokens(new Line("MODE #chan -k *"));
+
+            var channel = _server.Channels["#chan"];
+            CollectionAssert.AreEqual(new Dictionary<string, string>(), channel.Modes);
         }
 
         [TestMethod]
         public void ChannelTypeCAdd()
         {
+            _server.ParseTokens(new Line(":nickname JOIN #chan"));
+            _server.ParseTokens(new Line("MODE #chan +l 100"));
+
+            var channel = _server.Channels["#chan"];
+            CollectionAssert.AreEqual(new Dictionary<string, string> {{"l", "100"}}, channel.Modes);
         }
 
         [TestMethod]
         public void ChannelTypeCRemove()
         {
+            _server.ParseTokens(new Line(":nickname JOIN #chan"));
+            _server.ParseTokens(new Line("MODE #chan +l 100"));
+            _server.ParseTokens(new Line("MODE #chan -l"));
+
+            var channel = _server.Channels["#chan"];
+            CollectionAssert.AreEqual(new Dictionary<string, string>(), channel.Modes);
         }
 
         [TestMethod]
         public void ChannelTypeDAdd()
         {
+            _server.ParseTokens(new Line(":nickname JOIN #chan"));
+            _server.ParseTokens(new Line("MODE #chan +i"));
+
+            var channel = _server.Channels["#chan"];
+            CollectionAssert.AreEqual(new Dictionary<string, string> {{"i", null}}, channel.Modes);
         }
 
         [TestMethod]
         public void ChannelTypeDRemove()
         {
+            _server.ParseTokens(new Line(":nickname JOIN #chan"));
+            _server.ParseTokens(new Line("MODE #chan +i"));
+            _server.ParseTokens(new Line("MODE #chan -i"));
+
+            var channel = _server.Channels["#chan"];
+            CollectionAssert.AreEqual(new Dictionary<string, string>(), channel.Modes);
         }
 
         [TestMethod]
         public void ChannelNumeric()
         {
+            _server.ParseTokens(new Line(":nickname JOIN #chan"));
+            _server.ParseTokens(new Line("324 * #chan +bkli *!*@* pass 10"));
+
+            var channel = _server.Channels["#chan"];
+            CollectionAssert.AreEqual(new Dictionary<string, string> {{"k", "pass"}, {"l", "10"}, {"i", null}},
+                channel.Modes);
+            CollectionAssert.AreEqual(new Dictionary<string, List<string>> {{"b", new List<string> {"*!*@*"}}},
+                channel.ListModes);
         }
 
         [TestMethod]
         public void ChannelNumericWithoutPlus()
         {
+            _server.ParseTokens(new Line(":nickname JOIN #chan"));
+            _server.ParseTokens(new Line("324 * #chan il 10"));
+
+            var channel = _server.Channels["#chan"];
+            CollectionAssert.AreEqual(new Dictionary<string, string> {{"i", null}, {"l", "10"}}, channel.Modes);
         }
 
         [TestMethod]
         public void UserNumeric()
         {
+            _server.ParseTokens(new Line("221 * +iw"));
+            CollectionAssert.AreEqual(new List<string> {"i", "w"}, _server.Modes);
         }
 
         [TestMethod]
         public void UserNumericWithoutPlus()
         {
+            _server.ParseTokens(new Line("221 * iw"));
+            CollectionAssert.AreEqual(new List<string> {"i", "w"}, _server.Modes);
         }
     }
 }