public void ParseMultiOpMode() { const string raw = ":[email protected] MODE #ms.net +oo _aLfa_ bob"; IrcMessage ircMsg = IrcMessageFactory.Parse(raw); Assert.IsInstanceOfType(ircMsg, typeof(ChannelModeMessage), "Parses MODE"); var msg = (ChannelModeMessage) ircMsg; var creator = new ChannelModesCreator(); creator.Parse(msg); Assert.AreEqual(2, creator.Modes.Count, "Mode Count"); Assert.IsInstanceOfType(creator.Modes[0], typeof(OperatorMode), "Mode Type"); Assert.IsInstanceOfType(creator.Modes[1], typeof(OperatorMode), "Mode Type"); var mode = (OperatorMode) creator.Modes[0]; Assert.AreEqual(ModeAction.Add, mode.Action, "Mode Action"); Assert.AreEqual("_aLfa_", mode.Nick, "Mode Nick"); mode = (OperatorMode) creator.Modes[1]; Assert.AreEqual(ModeAction.Add, mode.Action, "Mode Action"); Assert.AreEqual("bob", mode.Nick, "Mode Nick"); creator.ApplyTo(msg); Assert.AreEqual(raw, msg.ToString(), "Round Trip"); }
private void HandleChannelModeIs(object sender, IrcMessageEventArgs<ChannelModeIsReplyMessage> e) { Channel channel; if (!this.Channels.TryGetValue(e.Message.Channel, out channel)) { var modes = new ChannelModesCreator { ServerSupport = this.ServerSupports }; modes.Parse(e.Message.Modes, e.Message.ModeArguments); channel.Modes.ResetWith(modes.Modes); } }