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 {"b"}, _server.ISupport.ChanModes.ListModes); CollectionAssert.AreEqual(new List {"k"}, _server.ISupport.ChanModes.SettingBModes); CollectionAssert.AreEqual(new List {"l"}, _server.ISupport.ChanModes.SettingCModes); CollectionAssert.AreEqual(new List { "i", "m", "n", "p", "s", "t" }, _server.ISupport.ChanModes.SettingDModes); _server.Parse(new Line("005 * CHANMODES=a,b,c,d *")); CollectionAssert.AreEqual(new List {"a"}, _server.ISupport.ChanModes.ListModes); CollectionAssert.AreEqual(new List {"b"}, _server.ISupport.ChanModes.SettingBModes); CollectionAssert.AreEqual(new List {"c"}, _server.ISupport.ChanModes.SettingCModes); CollectionAssert.AreEqual(new List {"d"}, _server.ISupport.ChanModes.SettingDModes); } [TestMethod] public void Prefix() { CollectionAssert.AreEqual(new List {"o", "v"}, _server.ISupport.Prefix.Modes); CollectionAssert.AreEqual(new List {"@", "+"}, _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 { "q", "a", "o", "h", "v" }, _server.ISupport.Prefix.Modes); CollectionAssert.AreEqual(new List { "~", "&", "@", "%", "+" }, _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 {"#"}, _server.ISupport.ChanTypes); _server.Parse(new Line("005 * CHANTYPES=#& *")); CollectionAssert.AreEqual(new List {"#", "&"}, _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(), _server.ISupport.StatusMsg); _server.Parse(new Line("005 * STATUSMSG=&@ *")); CollectionAssert.AreEqual(new List {"&", "@"}, _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); } } }