2020-05-06 06:24:42 +00:00
|
|
|
|
using System.Collections.Generic;
|
2022-03-25 19:11:48 +00:00
|
|
|
|
using IRCStates;
|
2020-05-15 03:06:10 +00:00
|
|
|
|
using IRCTokens;
|
2020-05-06 06:24:42 +00:00
|
|
|
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
2020-04-22 20:28:51 +00:00
|
|
|
|
|
2022-03-25 19:11:48 +00:00
|
|
|
|
namespace IRCSharp.Tests.State
|
2020-04-22 20:28:51 +00:00
|
|
|
|
{
|
|
|
|
|
[TestClass]
|
|
|
|
|
public class Mode
|
|
|
|
|
{
|
2020-05-06 06:24:42 +00:00
|
|
|
|
private Server _server;
|
|
|
|
|
|
|
|
|
|
[TestInitialize]
|
|
|
|
|
public void TestInitialize()
|
|
|
|
|
{
|
|
|
|
|
_server = new Server("test");
|
2020-05-13 18:20:47 +00:00
|
|
|
|
_server.Parse(new Line("001 nickname"));
|
2020-05-06 06:24:42 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
public void UModeAdd()
|
|
|
|
|
{
|
2020-05-13 18:20:47 +00:00
|
|
|
|
_server.Parse(new Line("MODE nickname +i"));
|
2020-05-06 06:24:42 +00:00
|
|
|
|
CollectionAssert.AreEqual(new List<string> {"i"}, _server.Modes);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
public void UModeRemove()
|
|
|
|
|
{
|
2020-05-13 18:20:47 +00:00
|
|
|
|
_server.Parse(new Line("MODE nickname +i"));
|
|
|
|
|
_server.Parse(new Line("MODE nickname -i"));
|
2020-05-06 06:24:42 +00:00
|
|
|
|
CollectionAssert.AreEqual(new List<string>(), _server.Modes);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
public void PrefixAdd()
|
|
|
|
|
{
|
2020-05-13 18:20:47 +00:00
|
|
|
|
_server.Parse(new Line(":nickname JOIN #chan"));
|
|
|
|
|
_server.Parse(new Line("MODE #chan +ov nickname nickname"));
|
2020-05-06 15:48:07 +00:00
|
|
|
|
|
|
|
|
|
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);
|
2020-05-06 06:24:42 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
public void PrefixRemove()
|
|
|
|
|
{
|
2020-05-13 18:20:47 +00:00
|
|
|
|
_server.Parse(new Line(":nickname JOIN #chan"));
|
|
|
|
|
_server.Parse(new Line("MODE #chan +ov nickname nickname"));
|
|
|
|
|
_server.Parse(new Line("MODE #chan -ov nickname nickname"));
|
2020-05-06 15:48:07 +00:00
|
|
|
|
|
|
|
|
|
var user = _server.Users["nickname"];
|
|
|
|
|
var channel = _server.Channels["#chan"];
|
|
|
|
|
var channelUser = channel.Users[user.NickNameLower];
|
|
|
|
|
CollectionAssert.AreEqual(new List<string>(), channelUser.Modes);
|
2020-05-06 06:24:42 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
public void ChannelListAdd()
|
|
|
|
|
{
|
2020-05-13 18:20:47 +00:00
|
|
|
|
_server.Parse(new Line(":nickname JOIN #chan"));
|
|
|
|
|
_server.Parse(new Line("MODE #chan +b asd!*@*"));
|
2020-05-06 15:48:07 +00:00
|
|
|
|
|
|
|
|
|
var channel = _server.Channels["#chan"];
|
2020-05-14 21:13:46 +00:00
|
|
|
|
CollectionAssert.AreEqual(new List<string> {"asd!*@*"}, channel.ListModes["b"]);
|
2020-05-06 06:24:42 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
public void ChannelListRemove()
|
|
|
|
|
{
|
2020-05-13 18:20:47 +00:00
|
|
|
|
_server.Parse(new Line(":nickname JOIN #chan"));
|
|
|
|
|
_server.Parse(new Line("MODE #chan +b asd!*@*"));
|
|
|
|
|
_server.Parse(new Line("MODE #chan -b asd!*@*"));
|
2020-05-06 15:48:07 +00:00
|
|
|
|
|
|
|
|
|
var channel = _server.Channels["#chan"];
|
|
|
|
|
CollectionAssert.AreEqual(new Dictionary<string, List<string>>(), channel.ListModes);
|
2020-05-06 06:24:42 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
public void ChannelTypeBAdd()
|
|
|
|
|
{
|
2020-05-13 18:20:47 +00:00
|
|
|
|
_server.Parse(new Line(":nickname JOIN #chan"));
|
|
|
|
|
_server.Parse(new Line("MODE #chan +k password"));
|
2020-05-06 15:48:07 +00:00
|
|
|
|
|
|
|
|
|
var channel = _server.Channels["#chan"];
|
|
|
|
|
CollectionAssert.AreEqual(new Dictionary<string, string> {{"k", "password"}}, channel.Modes);
|
2020-05-06 06:24:42 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
public void ChannelTypeBRemove()
|
|
|
|
|
{
|
2020-05-13 18:20:47 +00:00
|
|
|
|
_server.Parse(new Line(":nickname JOIN #chan"));
|
|
|
|
|
_server.Parse(new Line("MODE #chan +k password"));
|
|
|
|
|
_server.Parse(new Line("MODE #chan -k *"));
|
2020-05-06 15:48:07 +00:00
|
|
|
|
|
|
|
|
|
var channel = _server.Channels["#chan"];
|
|
|
|
|
CollectionAssert.AreEqual(new Dictionary<string, string>(), channel.Modes);
|
2020-05-06 06:24:42 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
public void ChannelTypeCAdd()
|
|
|
|
|
{
|
2020-05-13 18:20:47 +00:00
|
|
|
|
_server.Parse(new Line(":nickname JOIN #chan"));
|
|
|
|
|
_server.Parse(new Line("MODE #chan +l 100"));
|
2020-05-06 15:48:07 +00:00
|
|
|
|
|
|
|
|
|
var channel = _server.Channels["#chan"];
|
|
|
|
|
CollectionAssert.AreEqual(new Dictionary<string, string> {{"l", "100"}}, channel.Modes);
|
2020-05-06 06:24:42 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
public void ChannelTypeCRemove()
|
|
|
|
|
{
|
2020-05-13 18:20:47 +00:00
|
|
|
|
_server.Parse(new Line(":nickname JOIN #chan"));
|
|
|
|
|
_server.Parse(new Line("MODE #chan +l 100"));
|
|
|
|
|
_server.Parse(new Line("MODE #chan -l"));
|
2020-05-06 15:48:07 +00:00
|
|
|
|
|
|
|
|
|
var channel = _server.Channels["#chan"];
|
|
|
|
|
CollectionAssert.AreEqual(new Dictionary<string, string>(), channel.Modes);
|
2020-05-06 06:24:42 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
public void ChannelTypeDAdd()
|
|
|
|
|
{
|
2020-05-13 18:20:47 +00:00
|
|
|
|
_server.Parse(new Line(":nickname JOIN #chan"));
|
|
|
|
|
_server.Parse(new Line("MODE #chan +i"));
|
2020-05-06 15:48:07 +00:00
|
|
|
|
|
|
|
|
|
var channel = _server.Channels["#chan"];
|
|
|
|
|
CollectionAssert.AreEqual(new Dictionary<string, string> {{"i", null}}, channel.Modes);
|
2020-05-06 06:24:42 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
public void ChannelTypeDRemove()
|
|
|
|
|
{
|
2020-05-13 18:20:47 +00:00
|
|
|
|
_server.Parse(new Line(":nickname JOIN #chan"));
|
|
|
|
|
_server.Parse(new Line("MODE #chan +i"));
|
|
|
|
|
_server.Parse(new Line("MODE #chan -i"));
|
2020-05-06 15:48:07 +00:00
|
|
|
|
|
|
|
|
|
var channel = _server.Channels["#chan"];
|
|
|
|
|
CollectionAssert.AreEqual(new Dictionary<string, string>(), channel.Modes);
|
2020-05-06 06:24:42 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
public void ChannelNumeric()
|
|
|
|
|
{
|
2020-05-13 18:20:47 +00:00
|
|
|
|
_server.Parse(new Line(":nickname JOIN #chan"));
|
|
|
|
|
_server.Parse(new Line("324 * #chan +bkli *!*@* pass 10"));
|
2020-05-06 15:48:07 +00:00
|
|
|
|
|
|
|
|
|
var channel = _server.Channels["#chan"];
|
|
|
|
|
CollectionAssert.AreEqual(new Dictionary<string, string> {{"k", "pass"}, {"l", "10"}, {"i", null}},
|
|
|
|
|
channel.Modes);
|
2020-05-14 21:13:46 +00:00
|
|
|
|
CollectionAssert.AreEqual(new List<string> {"*!*@*"}, channel.ListModes["b"]);
|
2020-05-06 06:24:42 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
public void ChannelNumericWithoutPlus()
|
|
|
|
|
{
|
2020-05-13 18:20:47 +00:00
|
|
|
|
_server.Parse(new Line(":nickname JOIN #chan"));
|
|
|
|
|
_server.Parse(new Line("324 * #chan il 10"));
|
2020-05-06 15:48:07 +00:00
|
|
|
|
|
|
|
|
|
var channel = _server.Channels["#chan"];
|
|
|
|
|
CollectionAssert.AreEqual(new Dictionary<string, string> {{"i", null}, {"l", "10"}}, channel.Modes);
|
2020-05-06 06:24:42 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
public void UserNumeric()
|
|
|
|
|
{
|
2020-05-13 18:20:47 +00:00
|
|
|
|
_server.Parse(new Line("221 * +iw"));
|
2020-05-06 15:48:07 +00:00
|
|
|
|
CollectionAssert.AreEqual(new List<string> {"i", "w"}, _server.Modes);
|
2020-05-06 06:24:42 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
public void UserNumericWithoutPlus()
|
|
|
|
|
{
|
2020-05-13 18:20:47 +00:00
|
|
|
|
_server.Parse(new Line("221 * iw"));
|
2020-05-06 15:48:07 +00:00
|
|
|
|
CollectionAssert.AreEqual(new List<string> {"i", "w"}, _server.Modes);
|
2020-05-06 06:24:42 +00:00
|
|
|
|
}
|
2020-04-22 20:28:51 +00:00
|
|
|
|
}
|
|
|
|
|
}
|