ircsharp/IRCSharp.Tests/State/ISupport.cs

212 lines
7.0 KiB
C#
Raw Normal View History

2020-05-06 06:04:00 +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:04:00 +00:00
using Microsoft.VisualStudio.TestTools.UnitTesting;
// ReSharper disable InconsistentNaming
2022-03-25 19:11:48 +00:00
namespace IRCSharp.Tests.State
{
[TestClass]
public class ISupport
{
2020-05-06 06:04:00 +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:04:00 +00:00
}
[TestMethod]
public void ChanModes()
{
CollectionAssert.AreEqual(new List<string> {"b"}, _server.ISupport.ChanModes.ListModes);
CollectionAssert.AreEqual(new List<string> {"k"}, _server.ISupport.ChanModes.SettingBModes);
CollectionAssert.AreEqual(new List<string> {"l"}, _server.ISupport.ChanModes.SettingCModes);
CollectionAssert.AreEqual(new List<string>
{
"i",
"m",
"n",
"p",
"s",
"t"
}, _server.ISupport.ChanModes.SettingDModes);
2020-05-13 18:20:47 +00:00
_server.Parse(new Line("005 * CHANMODES=a,b,c,d *"));
2020-05-06 06:04:00 +00:00
CollectionAssert.AreEqual(new List<string> {"a"}, _server.ISupport.ChanModes.ListModes);
CollectionAssert.AreEqual(new List<string> {"b"}, _server.ISupport.ChanModes.SettingBModes);
CollectionAssert.AreEqual(new List<string> {"c"}, _server.ISupport.ChanModes.SettingCModes);
CollectionAssert.AreEqual(new List<string> {"d"}, _server.ISupport.ChanModes.SettingDModes);
}
[TestMethod]
public void Prefix()
{
CollectionAssert.AreEqual(new List<string> {"o", "v"}, _server.ISupport.Prefix.Modes);
CollectionAssert.AreEqual(new List<string> {"@", "+"}, _server.ISupport.Prefix.Prefixes);
Assert.AreEqual("@", _server.ISupport.Prefix.FromMode("o"));
Assert.IsNull(_server.ISupport.Prefix.FromMode("a"));
Assert.AreEqual("o", _server.ISupport.Prefix.FromPrefix("@"));
Assert.IsNull(_server.ISupport.Prefix.FromPrefix("&"));
2020-05-14 23:29:01 +00:00
_server.Parse(new Line("005 * PREFIX=(qaohv)~&@%+ *"));
2020-05-06 06:04:00 +00:00
CollectionAssert.AreEqual(new List<string>
{
"q",
"a",
"o",
"h",
"v"
}, _server.ISupport.Prefix.Modes);
CollectionAssert.AreEqual(new List<string>
{
"~",
"&",
"@",
"%",
"+"
}, _server.ISupport.Prefix.Prefixes);
Assert.AreEqual("&", _server.ISupport.Prefix.FromMode("a"));
Assert.AreEqual("a", _server.ISupport.Prefix.FromPrefix("&"));
}
[TestMethod]
public void ChanTypes()
{
CollectionAssert.AreEqual(new List<string> {"#"}, _server.ISupport.ChanTypes);
2020-05-13 18:20:47 +00:00
_server.Parse(new Line("005 * CHANTYPES=#& *"));
2020-05-06 06:04:00 +00:00
CollectionAssert.AreEqual(new List<string> {"#", "&"}, _server.ISupport.ChanTypes);
}
[TestMethod]
public void Modes()
{
Assert.AreEqual(3, _server.ISupport.Modes);
2020-05-13 18:20:47 +00:00
_server.Parse(new Line("005 * MODES *"));
2020-05-06 06:04:00 +00:00
Assert.AreEqual(-1, _server.ISupport.Modes);
2020-05-13 18:20:47 +00:00
_server.Parse(new Line("005 * MODES=5 *"));
2020-05-06 06:04:00 +00:00
Assert.AreEqual(5, _server.ISupport.Modes);
}
[TestMethod]
public void Rfc1459()
{
2020-05-15 03:06:10 +00:00
Assert.AreEqual(IRCStates.Casemap.CaseMapping.Rfc1459, _server.ISupport.CaseMapping);
2020-05-13 18:20:47 +00:00
_server.Parse(new Line("005 * CASEMAPPING=rfc1459 *"));
2020-05-15 03:06:10 +00:00
Assert.AreEqual(IRCStates.Casemap.CaseMapping.Rfc1459, _server.ISupport.CaseMapping);
2020-05-06 06:04:00 +00:00
var lower = _server.CaseFold(@"ÀTEST[]~\");
Assert.AreEqual("Àtest{}^|", lower);
}
[TestMethod]
public void Ascii()
{
2020-05-13 18:20:47 +00:00
_server.Parse(new Line("005 * CASEMAPPING=ascii *"));
2020-05-15 03:06:10 +00:00
Assert.AreEqual(IRCStates.Casemap.CaseMapping.Ascii, _server.ISupport.CaseMapping);
2020-05-06 06:04:00 +00:00
var lower = _server.CaseFold(@"ÀTEST[]~\");
Assert.AreEqual(@"Àtest[]~\", lower);
}
[TestMethod]
public void FallbackToRfc1459()
{
2020-05-13 18:20:47 +00:00
_server.Parse(new Line("005 * CASEMAPPING=nonexistent *"));
2020-05-15 03:06:10 +00:00
Assert.AreEqual(IRCStates.Casemap.CaseMapping.Rfc1459, _server.ISupport.CaseMapping);
2020-05-06 06:04:00 +00:00
var lower = _server.CaseFold(@"ÀTEST[]~\");
Assert.AreEqual("Àtest{}^|", lower);
}
[TestMethod]
public void Network()
{
Assert.IsNull(_server.ISupport.Network);
2020-05-13 18:20:47 +00:00
_server.Parse(new Line("005 * NETWORK=testnet *"));
2020-05-06 06:04:00 +00:00
Assert.AreEqual("testnet", _server.ISupport.Network);
}
[TestMethod]
public void StatusMsg()
{
CollectionAssert.AreEqual(new List<string>(), _server.ISupport.StatusMsg);
2020-05-13 18:20:47 +00:00
_server.Parse(new Line("005 * STATUSMSG=&@ *"));
2020-05-06 06:04:00 +00:00
CollectionAssert.AreEqual(new List<string> {"&", "@"}, _server.ISupport.StatusMsg);
}
[TestMethod]
public void CallerId()
{
Assert.IsNull(_server.ISupport.CallerId);
2020-05-13 18:20:47 +00:00
_server.Parse(new Line("005 * CALLERID=U *"));
2020-05-06 06:04:00 +00:00
Assert.AreEqual("U", _server.ISupport.CallerId);
2020-05-13 18:20:47 +00:00
_server.Parse(new Line("005 * CALLERID *"));
2020-05-06 06:04:00 +00:00
Assert.AreEqual("g", _server.ISupport.CallerId);
}
[TestMethod]
public void Excepts()
{
Assert.IsNull(_server.ISupport.Excepts);
2020-05-13 18:20:47 +00:00
_server.Parse(new Line("005 * EXCEPTS=U *"));
2020-05-06 06:04:00 +00:00
Assert.AreEqual("U", _server.ISupport.Excepts);
2020-05-13 18:20:47 +00:00
_server.Parse(new Line("005 * EXCEPTS *"));
2020-05-06 06:04:00 +00:00
Assert.AreEqual("e", _server.ISupport.Excepts);
}
[TestMethod]
public void Invex()
{
Assert.IsNull(_server.ISupport.Invex);
2020-05-13 18:20:47 +00:00
_server.Parse(new Line("005 * INVEX=U *"));
2020-05-06 06:04:00 +00:00
Assert.AreEqual("U", _server.ISupport.Invex);
2020-05-13 18:20:47 +00:00
_server.Parse(new Line("005 * INVEX *"));
2020-05-06 06:04:00 +00:00
Assert.AreEqual("I", _server.ISupport.Invex);
}
[TestMethod]
public void Whox()
{
Assert.IsFalse(_server.ISupport.Whox);
2020-05-13 18:20:47 +00:00
_server.Parse(new Line("005 * WHOX *"));
2020-05-06 06:04:00 +00:00
Assert.IsTrue(_server.ISupport.Whox);
}
[TestMethod]
public void Monitor()
{
Assert.IsNull(_server.ISupport.Monitor);
2020-05-13 18:20:47 +00:00
_server.Parse(new Line("005 * MONITOR=123 *"));
2020-05-06 06:04:00 +00:00
Assert.AreEqual(123, _server.ISupport.Monitor);
2020-05-13 18:20:47 +00:00
_server.Parse(new Line("005 * MONITOR *"));
2020-05-06 06:04:00 +00:00
Assert.AreEqual(-1, _server.ISupport.Monitor);
}
[TestMethod]
public void Watch()
{
Assert.IsNull(_server.ISupport.Watch);
2020-05-13 18:20:47 +00:00
_server.Parse(new Line("005 * WATCH=123 *"));
2020-05-06 06:04:00 +00:00
Assert.AreEqual(123, _server.ISupport.Watch);
2020-05-13 18:20:47 +00:00
_server.Parse(new Line("005 * WATCH *"));
2020-05-06 06:04:00 +00:00
Assert.AreEqual(-1, _server.ISupport.Watch);
}
}
}