ircsharp/IRCSharp.Tests/States/Mode.cs

175 lines
5.3 KiB
C#

// ReSharper disable StringLiteralTypo
namespace IRCSharp.Tests.States;
[TestClass]
public class Mode
{
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);
}
}