ircsharp/IRCSharp.Tests/State/ISupport.cs

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);
}
}
}