public WordCountAnalyzerResult Analyze(string text) { TextSplitResult textSplitResult = TextSplit.Split(text: text); if (!textSplitResult.WordsAvailable) { return(new WordCountAnalyzerResult()); } StopwordRemoverResult stopwordRemoverResult = StopwordRemover.RemoveStopwords(words: textSplitResult.Words); List <string> words = stopwordRemoverResult.Words; List <string> distinctWords = words.Distinct().ToList(); int numberOfWords = words.Count; int numberOfUniqueWords = distinctWords.Count; double averageWordLength = words.Any() ? words.Average(selector: s => s.Length) : 0.0; int numberOfchapters = text.Split(separator: new[] { Environment.NewLine + Environment.NewLine }, options: StringSplitOptions.None).Count(); return(new WordCountAnalyzerResult { NumberOfWords = numberOfWords, NumberOfUniqueWords = numberOfUniqueWords, AverageWordLength = averageWordLength, DistinctWords = distinctWords, NumberOfChapters = numberOfchapters }); }
public void StopwordRemoverTests_Analyze_Stopword_a_Mary_has_a_little_lamb_Expect_5_Words_without_Stopwords() { List <string> values = new List <string> { "Mary", "had", "a", "little", "lamb" }; _mockStopwordLoader .Setup(m => m.GetStopwords()) .Returns(new List <string>()); List <string> expected = new List <string> { "Mary", "had", "a", "little", "lamb" }; StopwordRemoverResult actual = _systemUnderTest.RemoveStopwords(words: values); Assert.NotNull(actual); Assert.NotNull(@object: actual.Words); Assert.NotEmpty(collection: actual.Words); Assert.Equal(expected: expected, actual: actual.Words); }