public async Task AddGroupTest() { int commandsHandled = 0; var lpHandler = new LongpollEventHandler(); Func <MessageContext, Action, Task> cmdHandler = (ctx, next) => { next(); commandsHandled++; return(Task.CompletedTask); }; lpHandler.HearCommand("/must work", cmdHandler); var group = lpHandler.CreateGroup(msg => msg.Text?.StartsWith("!") ?? false); group.HearCommand(new Regex(@"method1"), cmdHandler); group.HearCommand(new Regex(@"method2"), cmdHandler); group.HearCommand(new Regex(@"method3"), cmdHandler); lpHandler.HearCommand("/must work2", cmdHandler); var commands = new[] { "/must work", "/test2", "method1", "!method1", "!method2", "", "!method3", "/must work2", "/msg succ", "/msg failed", "qwet", "/free" }; foreach (var command in commands) { lpMessageNewEvent.MessageNew.Message.Text = command; await lpHandler.Handle(lpMessageNewEvent); } Assert.AreEqual(5, commandsHandled); }
public void ThrowExcetionInCommandHandlerTest() { var lpHandler = new LongpollEventHandler(); lpHandler.HearCommand("/foo", _ => throw new Exception()); lpMessageNewEvent.MessageNew.Message.Text = "/foo"; var handlerResult = lpHandler.Handle(lpMessageNewEvent); Assert.ThrowsAsync <Exception>(async() => await handlerResult); }
public void AddCommandTest() { var lpHandler = new LongpollEventHandler(); lpHandler.HearCommand("/test", testCommandHandler); lpHandler.HearCommand(new Regex(@"^\/test"), testCommandHandler); lpHandler.HearCommand(new[] { "/test", "/test2" }, testCommandHandler); lpHandler.HearCommand(new CommandMatchPattern { Text = "/test", Texts = new[] { "/test2" }, Regex = new Regex(@"^\/test") }, testCommandHandler); Assert.AreEqual(4, lpHandler.CommandsCount); }
public async Task CommandHandlingTest() { int commandsHandled = 0; var lpHandler = new LongpollEventHandler(); Func <MessageContext, Action, Task> cmdHandler = (ctx, next) => { next(); commandsHandled++; return(Task.CompletedTask); }; lpHandler.HearCommand(@"/free", cmdHandler); lpHandler.HearCommand(new CommandMatchPattern { Text = "/test1", Texts = new[] { "/test2", "test/3" }, Regex = new Regex(@"^\/test foo$", RegexOptions.IgnoreCase) }, cmdHandler); lpHandler.HearCommand(new CommandMatchPattern { Regex = new Regex(@"^\/msg (.*)"), Predicate = ctx => ctx.Text.Length <= 10 }, cmdHandler); lpHandler.HearCommand(new CommandMatchPattern { Text = "/copy img", Attachments = new[] { typeof(VkNet.Model.Attachments.Photo) } }, cmdHandler); var commands = new[] { "/test1", "/test2", "test/3", "/test foo", "/tesT foo", "", "not a cmd", "not a cmd2", "/msg succ", "/msg failed", "qwet", "/free" }; foreach (var command in commands) { lpMessageNewEvent.MessageNew.Message.Text = command; await lpHandler.Handle(lpMessageNewEvent); } lpMessageNewEvent.MessageNew.Message.Text = "/copy img"; await lpHandler.Handle(lpMessageNewEvent); lpMessageNewEvent.MessageNew.Message.Attachments = new System.Collections.ObjectModel.ReadOnlyCollection <VkNet.Model.Attachments.Attachment>(new[] { new VkNet.Model.Attachments.Attachment { Type = typeof(VkNet.Model.Attachments.Photo) } }); await lpHandler.Handle(lpMessageNewEvent); Assert.AreEqual(8, commandsHandled); }
public async Task EventHandlingTest() { int eventsHandled = 0; var lpHandler = new LongpollEventHandler(); Func <dynamic, Action, Task> testHandler = (_, next) => { next(); eventsHandled++; return(Task.CompletedTask); }; lpHandler.On <MessageNew>(GroupUpdateType.MessageNew, testHandler); lpHandler.On <MessageContext>(GroupUpdateType.MessageNew, testHandler); lpHandler.On <GroupLeave>(GroupUpdateType.GroupLeave, testHandler); await lpHandler.Handle(lpMessageNewEvent); Assert.AreEqual(2, eventsHandled); }
public async Task CommandHandlingMatchTest() { int regexGroupsCount = 0; var lpHandler = new LongpollEventHandler(); lpHandler.HearCommand(new CommandMatchPattern { Regex = new Regex(@"^\/test (foo) (\d) (s|f)", RegexOptions.IgnoreCase) }, (ctx, next) => { regexGroupsCount = ctx.Match.Groups.Count; return(Task.CompletedTask); }); lpMessageNewEvent.MessageNew.Message.Text = "/test foo 3 s"; await lpHandler.Handle(lpMessageNewEvent); Assert.AreEqual(4, regexGroupsCount); }