예제 #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);
        }
예제 #2
0
        public void OutputIndex(IndexOutputRequest indexOutputRequest)
        {
            IndexParameter      indexParameter      = IndexParameterParser.ParseIndexParameter();
            DictionaryParameter dictionaryParameter = DictionaryParameterParser.ParseDictionaryParameter();

            if (indexParameter.IsPresent)
            {
                List <string> dictionaryWords = DictionaryFileLoader.ReadWords();

                int unknwonWordsCount = EnumerableHelpers.CountUnknownWords(
                    distinctWords: indexOutputRequest.DistinctWords,
                    dictionaryWords: dictionaryWords);

                if (dictionaryParameter.IsPresent)
                {
                    DisplayOutput.WriteResourceLine(
                        resourceIdent: "INDEX_WITH_UNKNOWN",
                        placeholderValues: unknwonWordsCount);
                }
                else
                {
                    DisplayOutput.WriteResourceLine(
                        resourceIdent: "INDEX");
                }

                DisplayWords(
                    distinctWords: indexOutputRequest.DistinctWords,
                    dictionaryWords: dictionaryWords);
            }
        }
예제 #3
0
        public void IndexOutputTests_DistinctWords_Bla_bla_Expect_Output_Index_With_Dict_bla_Bla_star()
        {
            List <string> verifyList = new List <string>();

            _mockDictionaryParameterParser
            .Setup(m => m.ParseDictionaryParameter())
            .Returns(new DictionaryParameter
            {
                IsPresent = true,
                FileName  = It.IsAny <string>()
            });

            _mockIndexParameterParser
            .Setup(m => m.ParseIndexParameter())
            .Returns(new IndexParameter {
                IsPresent = true
            });

            _mockDisplayOutput
            .Setup(expression: m => m.WriteLine(It.IsAny <string>()))
            .Callback <string>(action: (s) => verifyList.Add(item: s));

            _mockDictionaryFileLoader
            .Setup(expression: m => m.ReadWords())
            .Returns(value: new List <string> {
                "bla"
            });

            IndexOutputRequest indexOutputRequest = new IndexOutputRequest
            {
                DistinctWords = new List <string> {
                    "Bla", "bla"
                }
            };

            _systemUnderTest.OutputIndex(indexOutputRequest: indexOutputRequest);

            _mockDisplayOutput
            .Verify(
                expression: v => v.WriteResourceLine("INDEX_WITH_UNKNOWN", 1),
                times: Times.Once);

            _mockDisplayOutput
            .Verify(
                expression: v => v.WriteLine("bla"),
                times: Times.Once);

            _mockDisplayOutput
            .Verify(
                expression: v => v.WriteLine("Bla*"),
                times: Times.Once);

            Assert.Equal(expected: "bla", actual: verifyList[index: 0]);
            Assert.Equal(expected: "Bla*", actual: verifyList[index: 1]);
        }