211 lines
7.0 KiB
C#
211 lines
7.0 KiB
C#
using System.Collections.Generic;
|
|
using IrcTokens;
|
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
|
|
|
// ReSharper disable InconsistentNaming
|
|
|
|
namespace IrcStates.Tests
|
|
{
|
|
[TestClass]
|
|
public class ISupport
|
|
{
|
|
private Server _server;
|
|
|
|
[TestInitialize]
|
|
public void TestInitialize()
|
|
{
|
|
_server = new Server("test");
|
|
_server.Parse(new Line("001 nickname"));
|
|
}
|
|
|
|
[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);
|
|
|
|
_server.Parse(new Line("005 * CHANMODES=a,b,c,d *"));
|
|
|
|
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("&"));
|
|
|
|
_server.Parse(new Line("005 * PREFIX=(qaohv)~&#%+ *"));
|
|
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);
|
|
_server.Parse(new Line("005 * CHANTYPES=#& *"));
|
|
CollectionAssert.AreEqual(new List<string> {"#", "&"}, _server.ISupport.ChanTypes);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Modes()
|
|
{
|
|
Assert.AreEqual(3, _server.ISupport.Modes);
|
|
|
|
_server.Parse(new Line("005 * MODES *"));
|
|
Assert.AreEqual(-1, _server.ISupport.Modes);
|
|
|
|
_server.Parse(new Line("005 * MODES=5 *"));
|
|
Assert.AreEqual(5, _server.ISupport.Modes);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Rfc1459()
|
|
{
|
|
Assert.AreEqual(IrcStates.Casemap.CaseMapping.Rfc1459, _server.ISupport.CaseMapping);
|
|
_server.Parse(new Line("005 * CASEMAPPING=rfc1459 *"));
|
|
Assert.AreEqual(IrcStates.Casemap.CaseMapping.Rfc1459, _server.ISupport.CaseMapping);
|
|
var lower = _server.CaseFold(@"ÀTEST[]~\");
|
|
Assert.AreEqual("Àtest{}^|", lower);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Ascii()
|
|
{
|
|
_server.Parse(new Line("005 * CASEMAPPING=ascii *"));
|
|
Assert.AreEqual(IrcStates.Casemap.CaseMapping.Ascii, _server.ISupport.CaseMapping);
|
|
var lower = _server.CaseFold(@"ÀTEST[]~\");
|
|
Assert.AreEqual(@"Àtest[]~\", lower);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void FallbackToRfc1459()
|
|
{
|
|
_server.Parse(new Line("005 * CASEMAPPING=nonexistent *"));
|
|
Assert.AreEqual(IrcStates.Casemap.CaseMapping.Rfc1459, _server.ISupport.CaseMapping);
|
|
var lower = _server.CaseFold(@"ÀTEST[]~\");
|
|
Assert.AreEqual("Àtest{}^|", lower);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Network()
|
|
{
|
|
Assert.IsNull(_server.ISupport.Network);
|
|
_server.Parse(new Line("005 * NETWORK=testnet *"));
|
|
Assert.AreEqual("testnet", _server.ISupport.Network);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void StatusMsg()
|
|
{
|
|
CollectionAssert.AreEqual(new List<string>(), _server.ISupport.StatusMsg);
|
|
_server.Parse(new Line("005 * STATUSMSG=&@ *"));
|
|
CollectionAssert.AreEqual(new List<string> {"&", "@"}, _server.ISupport.StatusMsg);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void CallerId()
|
|
{
|
|
Assert.IsNull(_server.ISupport.CallerId);
|
|
|
|
_server.Parse(new Line("005 * CALLERID=U *"));
|
|
Assert.AreEqual("U", _server.ISupport.CallerId);
|
|
|
|
_server.Parse(new Line("005 * CALLERID *"));
|
|
Assert.AreEqual("g", _server.ISupport.CallerId);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Excepts()
|
|
{
|
|
Assert.IsNull(_server.ISupport.Excepts);
|
|
|
|
_server.Parse(new Line("005 * EXCEPTS=U *"));
|
|
Assert.AreEqual("U", _server.ISupport.Excepts);
|
|
|
|
_server.Parse(new Line("005 * EXCEPTS *"));
|
|
Assert.AreEqual("e", _server.ISupport.Excepts);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Invex()
|
|
{
|
|
Assert.IsNull(_server.ISupport.Invex);
|
|
|
|
_server.Parse(new Line("005 * INVEX=U *"));
|
|
Assert.AreEqual("U", _server.ISupport.Invex);
|
|
|
|
_server.Parse(new Line("005 * INVEX *"));
|
|
Assert.AreEqual("I", _server.ISupport.Invex);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Whox()
|
|
{
|
|
Assert.IsFalse(_server.ISupport.Whox);
|
|
|
|
_server.Parse(new Line("005 * WHOX *"));
|
|
Assert.IsTrue(_server.ISupport.Whox);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Monitor()
|
|
{
|
|
Assert.IsNull(_server.ISupport.Monitor);
|
|
|
|
_server.Parse(new Line("005 * MONITOR=123 *"));
|
|
Assert.AreEqual(123, _server.ISupport.Monitor);
|
|
|
|
_server.Parse(new Line("005 * MONITOR *"));
|
|
Assert.AreEqual(-1, _server.ISupport.Monitor);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Watch()
|
|
{
|
|
Assert.IsNull(_server.ISupport.Watch);
|
|
|
|
_server.Parse(new Line("005 * WATCH=123 *"));
|
|
Assert.AreEqual(123, _server.ISupport.Watch);
|
|
|
|
_server.Parse(new Line("005 * WATCH *"));
|
|
Assert.AreEqual(-1, _server.ISupport.Watch);
|
|
}
|
|
}
|
|
}
|