182 lines
6.2 KiB
C#
182 lines
6.2 KiB
C#
using System.Collections.Generic;
|
|
using IrcTokens;
|
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
|
|
|
namespace IrcStates.Tests
|
|
{
|
|
[TestClass]
|
|
public class Mode
|
|
{
|
|
private Server _server;
|
|
|
|
[TestInitialize]
|
|
public void TestInitialize()
|
|
{
|
|
_server = new Server("test");
|
|
_server.Parse(new Line("001 nickname"));
|
|
}
|
|
|
|
[TestMethod]
|
|
public void UModeAdd()
|
|
{
|
|
_server.Parse(new Line("MODE nickname +i"));
|
|
CollectionAssert.AreEqual(new List<string> {"i"}, _server.Modes);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void UModeRemove()
|
|
{
|
|
_server.Parse(new Line("MODE nickname +i"));
|
|
_server.Parse(new Line("MODE nickname -i"));
|
|
CollectionAssert.AreEqual(new List<string>(), _server.Modes);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void PrefixAdd()
|
|
{
|
|
_server.Parse(new Line(":nickname JOIN #chan"));
|
|
_server.Parse(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.Parse(new Line(":nickname JOIN #chan"));
|
|
_server.Parse(new Line("MODE #chan +ov nickname nickname"));
|
|
_server.Parse(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.Parse(new Line(":nickname JOIN #chan"));
|
|
_server.Parse(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.Parse(new Line(":nickname JOIN #chan"));
|
|
_server.Parse(new Line("MODE #chan +b asd!*@*"));
|
|
_server.Parse(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.Parse(new Line(":nickname JOIN #chan"));
|
|
_server.Parse(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.Parse(new Line(":nickname JOIN #chan"));
|
|
_server.Parse(new Line("MODE #chan +k password"));
|
|
_server.Parse(new Line("MODE #chan -k *"));
|
|
|
|
var channel = _server.Channels["#chan"];
|
|
CollectionAssert.AreEqual(new Dictionary<string, string>(), channel.Modes);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void ChannelTypeCAdd()
|
|
{
|
|
_server.Parse(new Line(":nickname JOIN #chan"));
|
|
_server.Parse(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.Parse(new Line(":nickname JOIN #chan"));
|
|
_server.Parse(new Line("MODE #chan +l 100"));
|
|
_server.Parse(new Line("MODE #chan -l"));
|
|
|
|
var channel = _server.Channels["#chan"];
|
|
CollectionAssert.AreEqual(new Dictionary<string, string>(), channel.Modes);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void ChannelTypeDAdd()
|
|
{
|
|
_server.Parse(new Line(":nickname JOIN #chan"));
|
|
_server.Parse(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.Parse(new Line(":nickname JOIN #chan"));
|
|
_server.Parse(new Line("MODE #chan +i"));
|
|
_server.Parse(new Line("MODE #chan -i"));
|
|
|
|
var channel = _server.Channels["#chan"];
|
|
CollectionAssert.AreEqual(new Dictionary<string, string>(), channel.Modes);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void ChannelNumeric()
|
|
{
|
|
_server.Parse(new Line(":nickname JOIN #chan"));
|
|
_server.Parse(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.Parse(new Line(":nickname JOIN #chan"));
|
|
_server.Parse(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.Parse(new Line("221 * +iw"));
|
|
CollectionAssert.AreEqual(new List<string> {"i", "w"}, _server.Modes);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void UserNumericWithoutPlus()
|
|
{
|
|
_server.Parse(new Line("221 * iw"));
|
|
CollectionAssert.AreEqual(new List<string> {"i", "w"}, _server.Modes);
|
|
}
|
|
}
|
|
}
|