2024-03-26 20:10:54 +00:00
|
|
|
|
namespace IRCSharp.Tests.State;
|
2020-04-22 20:28:51 +00:00
|
|
|
|
|
2024-03-26 20:10:54 +00:00
|
|
|
|
[TestClass]
|
|
|
|
|
public class Mode
|
2020-04-22 20:28:51 +00:00
|
|
|
|
{
|
2024-03-26 20:10:54 +00:00
|
|
|
|
private Server _server;
|
|
|
|
|
|
|
|
|
|
[TestInitialize]
|
|
|
|
|
public void TestInitialize()
|
|
|
|
|
{
|
|
|
|
|
_server = new("test");
|
|
|
|
|
_server.Parse(new("001 nickname"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
public void UModeAdd()
|
|
|
|
|
{
|
|
|
|
|
_server.Parse(new("MODE nickname +i"));
|
|
|
|
|
CollectionAssert.AreEqual(new List<string> {"i"}, _server.Modes);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
public void UModeRemove()
|
|
|
|
|
{
|
|
|
|
|
_server.Parse(new("MODE nickname +i"));
|
|
|
|
|
_server.Parse(new("MODE nickname -i"));
|
|
|
|
|
CollectionAssert.AreEqual(new List<string>(), _server.Modes);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
public void PrefixAdd()
|
|
|
|
|
{
|
|
|
|
|
_server.Parse(new(":nickname JOIN #chan"));
|
|
|
|
|
_server.Parse(new("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.Parse(new(":nickname JOIN #chan"));
|
|
|
|
|
_server.Parse(new("MODE #chan +ov nickname nickname"));
|
|
|
|
|
_server.Parse(new("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.Parse(new(":nickname JOIN #chan"));
|
|
|
|
|
_server.Parse(new("MODE #chan +b asd!*@*"));
|
|
|
|
|
|
|
|
|
|
var channel = _server.Channels["#chan"];
|
|
|
|
|
CollectionAssert.AreEqual(new List<string> {"asd!*@*"}, channel.ListModes["b"]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
public void ChannelListRemove()
|
|
|
|
|
{
|
|
|
|
|
_server.Parse(new(":nickname JOIN #chan"));
|
|
|
|
|
_server.Parse(new("MODE #chan +b asd!*@*"));
|
|
|
|
|
_server.Parse(new("MODE #chan -b asd!*@*"));
|
|
|
|
|
|
|
|
|
|
var channel = _server.Channels["#chan"];
|
|
|
|
|
CollectionAssert.AreEqual(new Dictionary<string, List<string>>(), channel.ListModes);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
public void ChannelTypeBAdd()
|
|
|
|
|
{
|
|
|
|
|
_server.Parse(new(":nickname JOIN #chan"));
|
|
|
|
|
_server.Parse(new("MODE #chan +k password"));
|
|
|
|
|
|
|
|
|
|
var channel = _server.Channels["#chan"];
|
|
|
|
|
CollectionAssert.AreEqual(new Dictionary<string, string> {{"k", "password"}}, channel.Modes);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
public void ChannelTypeBRemove()
|
|
|
|
|
{
|
|
|
|
|
_server.Parse(new(":nickname JOIN #chan"));
|
|
|
|
|
_server.Parse(new("MODE #chan +k password"));
|
|
|
|
|
_server.Parse(new("MODE #chan -k *"));
|
|
|
|
|
|
|
|
|
|
var channel = _server.Channels["#chan"];
|
|
|
|
|
CollectionAssert.AreEqual(new Dictionary<string, string>(), channel.Modes);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
public void ChannelTypeCAdd()
|
|
|
|
|
{
|
|
|
|
|
_server.Parse(new(":nickname JOIN #chan"));
|
|
|
|
|
_server.Parse(new("MODE #chan +l 100"));
|
|
|
|
|
|
|
|
|
|
var channel = _server.Channels["#chan"];
|
|
|
|
|
CollectionAssert.AreEqual(new Dictionary<string, string> {{"l", "100"}}, channel.Modes);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
public void ChannelTypeCRemove()
|
|
|
|
|
{
|
|
|
|
|
_server.Parse(new(":nickname JOIN #chan"));
|
|
|
|
|
_server.Parse(new("MODE #chan +l 100"));
|
|
|
|
|
_server.Parse(new("MODE #chan -l"));
|
|
|
|
|
|
|
|
|
|
var channel = _server.Channels["#chan"];
|
|
|
|
|
CollectionAssert.AreEqual(new Dictionary<string, string>(), channel.Modes);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
public void ChannelTypeDAdd()
|
|
|
|
|
{
|
|
|
|
|
_server.Parse(new(":nickname JOIN #chan"));
|
|
|
|
|
_server.Parse(new("MODE #chan +i"));
|
|
|
|
|
|
|
|
|
|
var channel = _server.Channels["#chan"];
|
|
|
|
|
CollectionAssert.AreEqual(new Dictionary<string, string> {{"i", null}}, channel.Modes);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
public void ChannelTypeDRemove()
|
|
|
|
|
{
|
|
|
|
|
_server.Parse(new(":nickname JOIN #chan"));
|
|
|
|
|
_server.Parse(new("MODE #chan +i"));
|
|
|
|
|
_server.Parse(new("MODE #chan -i"));
|
|
|
|
|
|
|
|
|
|
var channel = _server.Channels["#chan"];
|
|
|
|
|
CollectionAssert.AreEqual(new Dictionary<string, string>(), channel.Modes);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
public void ChannelNumeric()
|
|
|
|
|
{
|
|
|
|
|
_server.Parse(new(":nickname JOIN #chan"));
|
|
|
|
|
_server.Parse(new("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 List<string> {"*!*@*"}, channel.ListModes["b"]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
public void ChannelNumericWithoutPlus()
|
|
|
|
|
{
|
|
|
|
|
_server.Parse(new(":nickname JOIN #chan"));
|
|
|
|
|
_server.Parse(new("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.Parse(new("221 * +iw"));
|
|
|
|
|
CollectionAssert.AreEqual(new List<string> {"i", "w"}, _server.Modes);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
public void UserNumericWithoutPlus()
|
|
|
|
|
{
|
|
|
|
|
_server.Parse(new("221 * iw"));
|
|
|
|
|
CollectionAssert.AreEqual(new List<string> {"i", "w"}, _server.Modes);
|
|
|
|
|
}
|
|
|
|
|
}
|