public int Execute() { bool hasRequestedHelp = HelpOutput.ShowHelpIfRequested(); if (hasRequestedHelp) { return(1); } InputTextResult inputTextResult = TextInput.GetInputText(); if (inputTextResult.Text.IsNullOrEmpty()) { return(0); } do { WordCountAnalyzerResult analyzeResult = WordCountAnalyzer.Analyze(text: inputTextResult.Text); WordCountAnalyzerOutput.DisplayResult(result: analyzeResult); IndexOutputRequest indexOutputRequest = new IndexOutputRequest { DistinctWords = analyzeResult.DistinctWords }; IndexOutput.OutputIndex(indexOutputRequest: indexOutputRequest); inputTextResult = TextInput.GetInputText(); } while (inputTextResult.HasEnteredConsoleText); return(0); }
public void WordCountAnalyzerTests_Analyze_Stopword_a_This_is_a_Text_Expect_3_Words() { const string text = "This is a Text"; List <string> values = new List <string> { "This", "is", "a", "Text" }; _mockTextSplit .Setup(m => m.Split(text)) .Returns(new TextSplitResult(values)); _mockStopwordRemover .Setup(m => m.RemoveStopwords(values)) .Returns(new StopwordRemoverResult { Words = new List <string> { "This", "is", "Text" } }); WordCountAnalyzerResult actual = _systemUnderTest.Analyze(text: text); Assert.Equal(expected: 3, actual: actual.NumberOfWords); }
public void WordCountAnalyzerTests_Text_with_1_Linebreak_Expect_1_chapters() { _mockTextSplit .Setup(m => m.Split(It.IsAny <string>())) .Returns(new TextSplitResult(new List <string>() { "asd" })); _mockStopwordRemover .Setup(m => m.RemoveStopwords(It.IsAny <List <string> >())) .Returns(new StopwordRemoverResult() { Words = new List <string>() { "asd" } }); string inputText = $"Das ist das erste Kapitel.{Environment.NewLine}Das ist das zweite Kapitel."; WordCountAnalyzerResult actual = _systemUnderTest.Analyze(text: inputText); Assert.Equal( expected: 1, actual: actual.NumberOfChapters); }
public void WordCountAnalyzerTests_Text_Bla_bla_bla_Expect_distinct_Words_Bla_bla() { const string text = "Bla bla bla"; List <string> mockValues = new List <string> { "Bla", "bla", "bla" }; _mockTextSplit .Setup(expression: m => m.Split(text)) .Returns(value: new TextSplitResult(mockValues)); _mockStopwordRemover .Setup(expression: m => m.RemoveStopwords(mockValues)) .Returns(value: new StopwordRemoverResult { Words = mockValues }); List <string> expected = new List <string> { "Bla", "bla" }; WordCountAnalyzerResult actual = _systemUnderTest.Analyze(text: text); Assert.Equal(expected: expected, actual: actual.DistinctWords); }
public void WordCountAnalyzerTests_Analyze_empty_strings_Expect_0_Words( string inputtext) { _mockTextSplit .Setup(m => m.Split(inputtext)) .Returns(new TextSplitResult(new List <string>())); WordCountAnalyzerResult actual = _systemUnderTest.Analyze(text: inputtext); Assert.Equal(expected: 0, actual: actual.NumberOfWords); }
public void WordCountAnalyzerTests_Text_a_Stopword_a_Expect_All_Values_in_Result_0() { _mockStopwordRemover .Setup(m => m.RemoveStopwords(It.IsAny <List <string> >())) .Returns(value: new StopwordRemoverResult()); _mockTextSplit .Setup(m => m.Split("a.")) .Returns(value: new TextSplitResult(new List <string> { "a" })); WordCountAnalyzerResult actual = _systemUnderTest.Analyze("a."); Assert.NotNull(@object: actual); Assert.Equal(expected: 0.0, actual: actual.AverageWordLength); Assert.Equal(expected: 0, actual: actual.NumberOfUniqueWords); Assert.Equal(expected: 0, actual: actual.NumberOfWords); }
public void WordCountAnalyzerTests_Analyze_Text_Bla_bla_Expect_2_Words() { string text = "Bla bla"; List <string> mockTextSplitResulValues = new List <string> { "Bla", "bla" }; _mockStopwordRemover .Setup(m => m.RemoveStopwords(It.IsAny <List <string> >())) .Returns(value: new StopwordRemoverResult { Words = mockTextSplitResulValues }); _mockTextSplit .Setup(m => m.Split(text)) .Returns(new TextSplitResult(mockTextSplitResulValues)); WordCountAnalyzerResult actual = _systemUnderTest.Analyze(text: text); Assert.Equal(expected: 2, actual: actual.NumberOfWords); }
public void WordCountAnalyzerTests_Text_Bla_bla_bla_Expect_Average_word_Length_3() { string text = "Bla bla bla"; List <string> mockValues = new List <string> { "Bla", "bla", "bla" }; _mockTextSplit .Setup(m => m.Split(text)) .Returns(value: new TextSplitResult(mockValues)); _mockStopwordRemover .Setup(expression: m => m.RemoveStopwords(mockValues)) .Returns(value: new StopwordRemoverResult { Words = mockValues }); WordCountAnalyzerResult actual = _systemUnderTest.Analyze(text: text); Assert.Equal(expected: 3.0, actual: actual.AverageWordLength); }
public void WordCountAnalyzerTests_Long_text_Bla_bla_bla_Expect_Number_of_unique_Words_2() { const string text = "Bla bla bla"; List <string> mockValues = new List <string> { "Bla", "bla", "bla" }; _mockTextSplit .Setup(expression: m => m.Split(text)) .Returns(value: new TextSplitResult(mockValues)); _mockStopwordRemover .Setup(expression: m => m.RemoveStopwords(mockValues)) .Returns(value: new StopwordRemoverResult { Words = mockValues }); WordCountAnalyzerResult actual = _systemUnderTest.Analyze(text: text); Assert.Equal(expected: 2, actual: actual.NumberOfUniqueWords); }
public void InteractorTests_Loop_While_Enter_Text_Expect_2_Calls_of_GetInputText() { MockSequence sequence = new MockSequence(); _mockTextInput .InSequence(sequence: sequence) .Setup(expression: m => m.GetInputText()) .Returns(value: new InputTextResult() { HasEnteredConsoleText = true, Text = "Bla bla" }); WordCountAnalyzerResult wordCountAnalyzerResult = new WordCountAnalyzerResult(); _mockWordCountAnalyzer .InSequence(sequence: sequence) .Setup(m => m.Analyze("Bla bla")) .Returns(value: wordCountAnalyzerResult); _mockTextInput .InSequence(sequence: sequence) .Setup(m => m.GetInputText()) .Returns(value: new InputTextResult() { HasEnteredConsoleText = false, Text = "" }); int actual = _systemUnderTest.Execute(); Assert.Equal( expected: 0, actual: actual); _mockTextInput .Verify( expression: v => v.GetInputText(), times: Times.Exactly(callCount: 2)); }
public void DisplayResult(WordCountAnalyzerResult result) { DisplayOutput.WriteResourceLine(resourceIdent: "STATISTICS"); int lengthOfMaxString = LanguageResource.DetectLongestResourceString( resourceIdents: new[] { "NUMBER_OF_WORDS", "UNIQUE", "AVERAGE_WORD_LENGTH", "CHAPTERS" }); StatisticsOutput.WriteNumberOfWords( numberOfWords: result.NumberOfWords, maxCountOfFillingPoints: lengthOfMaxString); StatisticsOutput.WriteNumberOfUniqeWords( numberOfUniqeWords: result.NumberOfUniqueWords, maxCountOfFillingPoints: lengthOfMaxString); StatisticsOutput.WriteAverageWordLength( averageWordLength: result.AverageWordLength, maxCountOfFillingPoints: lengthOfMaxString); StatisticsOutput.WriteNumberOfChapters( numberOfChapters: result.NumberOfChapters, maxCountOfFillingPoints: lengthOfMaxString); }