Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
        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));
        }
Exemplo n.º 11
0
        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);
        }