public void FilterMessage_ManyCtcp() { int count = 10; var builder = new StringBuilder(); for (int n = 0; n < count; n++) { builder.Append(CtcpDelimiter); builder.Append("TEST" + n + " " + "content" + n); } builder.Append(CtcpDelimiter); var message = new IrcMessage(this._user, "PRIVMSG", new string[] { "someone" }, builder.ToString()); var res = CtcpUtils.FilterMessage(message); Assert.AreEqual(0, res.IrcMessages.Count); Assert.AreEqual(count, res.CtcpMessages.Count); for (int n = 0; n < count; n++) { Assert.AreEqual(message.Sender, res.CtcpMessages[n].Sender); Assert.AreEqual("TEST" + n, res.CtcpMessages[n].Command, true); Assert.AreEqual("content" + n, res.CtcpMessages[n].Content); } }
public void DecodeMessage_RfcExample2() { // from the CTCP RFC: http://www.irchelp.org/irchelp/rfc/ctcpspec.html string text = "SED " + '\x10' + "n\t\big" + '\x10' + '\x10' + @"\a" + '\x10' + @"0\\:"; string expected = "SED \n\t\big" + '\x10' + '\x1' + '\0' + @"\:"; Assert.AreEqual(expected, CtcpUtils.DecodeMessage(text)); }
public void DecodeMessage_RfcExample1() { // from the CTCP RFC: http://www.irchelp.org/irchelp/rfc/ctcpspec.html string text = "Hi there!" + '\x10' + "nHow are you? " + @"\\K?"; string expected = "Hi there!\nHow are you? " + @"\K?"; Assert.AreEqual(expected, CtcpUtils.DecodeMessage(text)); }
public void EncodeMessage_RfcExample1() { // directly from the CTCP RFC: http://www.irchelp.org/irchelp/rfc/ctcpspec.html string text = "Hi there!\n" + "How are you? " + @"\K?"; string expected = CtcpDelimiter + @"Hi there!" + '\x10' + @"nHow are you? \\K?" + CtcpDelimiter; Assert.AreEqual(expected, CtcpUtils.EncodeMessage(text)); }
public void FilterMessage_OneCtcpMessage() { var message = new IrcMessage(this._user, "PRIVMSG", new string[] { "someone" }, CtcpDelimiter + "PING abc" + CtcpDelimiter); var res = CtcpUtils.FilterMessage(message); Assert.AreEqual(0, res.IrcMessages.Count); Assert.AreEqual(1, res.CtcpMessages.Count); Assert.AreEqual(message.Sender, res.CtcpMessages[0].Sender); Assert.AreEqual("PING", res.CtcpMessages[0].Command, true); Assert.AreEqual("abc", res.CtcpMessages[0].Content); }
public void FilterMessage_CtcpThenIrc() { var message = new IrcMessage(this._user, "PRIVMSG", new string[] { "someone" }, CtcpDelimiter + "FINGER" + CtcpDelimiter + "Hi!"); var res = CtcpUtils.FilterMessage(message); Assert.AreEqual(1, res.IrcMessages.Count); Assert.AreEqual(message.Sender, res.IrcMessages[0].Sender); Assert.AreEqual(message.Command, res.IrcMessages[0].Command, true); Assert.AreEqual(message.CommandArguments, res.IrcMessages[0].CommandArguments); Assert.AreEqual("Hi!", res.IrcMessages[0].Content); Assert.AreEqual(1, res.CtcpMessages.Count); Assert.AreEqual(message.Sender, res.CtcpMessages[0].Sender); Assert.AreEqual("FINGER", res.CtcpMessages[0].Command, true); Assert.AreEqual(string.Empty, res.CtcpMessages[0].Content); }
/// <summary> /// Interprets an <see cref="IrcMessage"/> and returns the <see cref="IrcMessage"/>s that should be interpreted by an <see cref="IrcClient"/>. /// </summary> internal IEnumerable <IrcMessage> InterpretMessage(IrcMessage message) { if (!CtcpUtils.IsCtcpMessage(message)) { return(new[] { message }); } var info = CtcpUtils.FilterMessage(message); foreach (var ctcpMessage in info.CtcpMessages) { this.HandleMessage(ctcpMessage); } return(info.IrcMessages); }
public void IsCtcpMessage_CtcpMessageInWrongCommand() { var message = new IrcMessage(this._user, "join", new[] { "example" }, CtcpDelimiter + "FINGER" + CtcpDelimiter); Assert.IsFalse(CtcpUtils.IsCtcpMessage(message)); }
public void IsCtcpMessage_CtcpMessage() { var message = new IrcMessage(this._user, "privmsg", new[] { "example" }, CtcpDelimiter + "FINGER" + CtcpDelimiter); Assert.IsTrue(CtcpUtils.IsCtcpMessage(message)); }
public void IsCtcpMessage_IrcMessage() { var message = new IrcMessage(this._user, "privmsg", new[] { "example" }, "Hi"); Assert.IsFalse(CtcpUtils.IsCtcpMessage(message)); }
/// <summary> /// Sends a CTCP notice. /// </summary> /// <param name="text">The notice text.</param> /// <remarks>This is a low-level method that should be used to send custom CTCP commands if needed.</remarks> public void SendNotice(string text) { Validate.HasText(text, "text"); this._user.SendNotice(CtcpUtils.EncodeMessage(text)); }
/// <summary> /// Sends a CTCP message to the <see cref="IrcChannel"/>. /// </summary> /// <param name="text">The message text.</param> /// <remarks>This is a low-level method that should be used to send custom CTCP commands if needed.</remarks> public void SendMessage(string text) { Validate.HasText(text, "text"); this._channel.SendMessage(CtcpUtils.EncodeMessage(text)); }