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