public void ScanTextForWords_Find2BadWordsInTheTextFromTheStory()
        {
            var mock_repository = new MoqWordsRepository(new string[] { "bad", "horrible" });
            var controller      = new DataController(mock_repository);

            var result = controller.ScanTextForWords(_example_text) as ScanResult;

            Assert.AreEqual(result.Count, 2);
        }
        public void SetWords_TryToSetArrayWithNullAndEmptyWordsTheyAreIgnored()
        {
            var mock_repository = new MoqWordsRepository(new string[] { "bad", "horrible" });
            var localController = new DataController(mock_repository);

            var result   = localController.SetWords(new string[] { null, "", "terrible", "worse" }) as UpdateResult;
            var newWords = localController.GetAllWords();

            CollectionAssert.AreEqual(new string[] { "terrible", "worse" }, newWords.OrderBy(x => x).ToArray());
        }
        public void HideWords_WordsWithLengthLessThan3ReplacedWithHashes()
        {
            var mock_repository = new MoqWordsRepository(new string[] { "no", "x" });
            var localController = new DataController(mock_repository);

            var text = "The first letter is no X - that's for sure";

            localController.TryHideWords(text, out string edited_text);
            Assert.AreEqual("The first letter is ## # - that's for sure",
                            edited_text);
        }
        public void SetWords_ReturnsTheSameAsNewWords()
        {
            var newWords        = new string[] { "terrible" };
            var mock_repository = new MoqWordsRepository(new string[] { "bad", "horrible" });
            var localController = new DataController(mock_repository);

            localController.SetWords(newWords);

            var words = localController.GetAllWords();

            CollectionAssert.AreEqual(words.ToArray(), newWords);
        }
        public void SetWords_CheckScanResultsBeforeAndAfter()
        {
            var newWords        = new string[] { "terrible" };
            var mock_repository = new MoqWordsRepository(new string[] { "bad", "horrible" });
            var localController = new DataController(mock_repository);

            var resultBefore = localController.ScanTextForWords(_example_text) as ScanResult;

            localController.SetWords(newWords);
            var resultAfter = localController.ScanTextForWords(_example_text) as ScanResult;

            Assert.AreNotEqual(resultBefore.Count, resultAfter.Count);
        }