public void WithSentenceWordWithNextFollowingWord_WhenAddingSameFollowingWord_OnlyOneCopyOfWordIsContained()
        {
            // ARRANGE
            var word = new SentenceWord(DefaultWord);

            // ACT
            word.AddPossibleFollowingWord(PossibleNextWordA);
            word.AddPossibleFollowingWord(PossibleNextWordA);

            // ASSERT
            Assert.AreEqual(1, word.GetPossibleFollowingWords().Count(w => w == PossibleNextWordA));
        }
        public void SentenceWordCanSpecifyPossibleFollowingWords()
        {
            // ARRANGE
            var word = new SentenceWord(DefaultWord);

            // ACT
            word.AddPossibleFollowingWord(PossibleNextWordA);
            word.AddPossibleFollowingWord(PossibleNextWordB);

            // ASSERT
            Assert.IsTrue(word.GetPossibleFollowingWords().Contains(PossibleNextWordA));
            Assert.IsTrue(word.GetPossibleFollowingWords().Contains(PossibleNextWordB));
        }
        public void SentenceWordCannotSpecifyPossibleFollowingWithSpaceInIt()
        {
            var word      = new SentenceWord(DefaultWord);
            var exception = Assert.Throws <ArgumentOutOfRangeException>(() => word.AddPossibleFollowingWord(" "));

            Assert.AreEqual("possibleNextWord", exception.ParamName);
        }
        public void WhenExistingWordInLexiconHasPossibleFollowingWord_SameWordWithPossibleFollowingWordIsAdded()
        {
            // ARRANGE
            var lexicon      = new Lexicon();
            var sentenceWord = new SentenceWord(DefaultWord);

            sentenceWord.AddPossibleFollowingWord(PossibleFollowingWordOne);

            var updatedSentenceWord = new SentenceWord(DefaultWord);

            sentenceWord.AddPossibleFollowingWord(PossibleFollowingWordTwo);

            // ACT
            lexicon.ManageWord(sentenceWord);
            lexicon.ManageWord(updatedSentenceWord);

            var lexiconWord = lexicon.Words().First();

            // ASSERT
            Assert.AreEqual(PossibleFollowingWordOne, lexiconWord.GetPossibleFollowingWords().ElementAt(0));
            Assert.AreEqual(PossibleFollowingWordTwo, lexiconWord.GetPossibleFollowingWords().ElementAt(1));
        }