public void CanHAndleEmptyStringWhenAnalyseSentence()
        {
            const string input = "";

            SentenceAnalyzer sentenceAnalyzer = new SentenceAnalyzer();

            SentenceWithWordCounts result = sentenceAnalyzer.AnalyzeSentence(input);

            Assert.AreEqual(input, result.Sentence);

            IDictionary<string, int> counts = result.WordCounts.ToDictionary(wc => wc.Word, wc => wc.Count);
            Assert.AreEqual(0, counts.Count);
        }
        public void CanAnalyseSentence()
        {
            const string input = "This is a test.";

            SentenceAnalyzer sentenceAnalyzer = new SentenceAnalyzer();

            SentenceWithWordCounts result = sentenceAnalyzer.AnalyzeSentence(input);

            Assert.AreEqual(input, result.Sentence);

            IDictionary<string, int> counts = result.WordCounts.ToDictionary(wc => wc.Word, wc => wc.Count);
            Assert.AreEqual(1, counts["this"]);
            Assert.AreEqual(1, counts["is"]);
            Assert.AreEqual(1, counts["a"]);
            Assert.AreEqual(1, counts["test"]);
        }
        public void CanAnalyseSentenceWithPunctuation()
        {
            const string input = "This is a statement, and so is this.";

            SentenceAnalyzer sentenceAnalyzer = new SentenceAnalyzer();

            SentenceWithWordCounts result = sentenceAnalyzer.AnalyzeSentence(input);

            Assert.AreEqual(input, result.Sentence);

            IDictionary<string, int> counts = result.WordCounts.ToDictionary(wc => wc.Word, wc => wc.Count);
            Assert.AreEqual(2, counts["this"]);
            Assert.AreEqual(2, counts["is"]);
            Assert.AreEqual(1, counts["a"]);
            Assert.AreEqual(1, counts["statement"]);
            Assert.AreEqual(1, counts["and"]);
            Assert.AreEqual(1, counts["so"]);
        }
 public Application(SentenceAnalyzer sentenceAnalyzer, OutputRenderer outputRenderer)
 {
     this.sentenceAnalyzer = sentenceAnalyzer;
     this.outputRenderer = outputRenderer;
 }