public async Task SendActivity(IBotContext context, IList <IActivity> activities, MiddlewareSet.NextDelegate next) { activities .Where(activity => activity.Type.Equals(ActivityTypes.Message)) .Select(activity => activity.AsMessageActivity()) .ToList() .ForEach(activity => { int wordCount = TypistUtility.GetWordCount(activity.Text); int timeInMs = TypistUtility.CalculateTimeToType(_typistWordsPerMinute, wordCount); Activity typingActivity = ((Activity)context.Request).CreateReply(); typingActivity.Type = ActivityTypes.Typing; typingActivity.Value = timeInMs; Activity delayActivity = ((Activity)context.Request).CreateReply(); delayActivity.Type = ActivityTypesEx.Delay; delayActivity.Value = timeInMs; int indexOfActivity = activities.IndexOf(activity); activities.Insert(indexOfActivity, delayActivity); activities.Insert(indexOfActivity, typingActivity); }); await next(); }
public void CalculateTimeToType(int expected, int wordsPerMinute, int wordCount) { int actual = TypistUtility.CalculateTimeToType(wordsPerMinute, wordCount); Assert.Equal(expected, actual); }
public void MessageCountTest(int expected, string input) { int actual = TypistUtility.GetWordCount(input); Assert.Equal(expected, actual); }