public void GetPuzzleFilePathsFromPuzzleDirectory_WhenPuzzleDirectoryExistsAndContainsFiles_ListOfFilePathsReturned()
        {
            //arrange
            WordSearchProgramHelper wordSearchProgramHelper = new WordSearchProgramHelper(_consoleWrapper, _fileOperations, _wordFinder, _searchOrientationManager);

            //act
            var filePaths = wordSearchProgramHelper.GetPuzzleFilePathsFromPuzzleDirectory(TestUtilities.TEST_PUZZLES_DIRECTORY, 9);

            //assert
            Assert.True(filePaths.Length == 2);
        }
Esempio n. 2
0
        public void WriteGridToConsole_WhenGridIsNull_ThrowArgumentException()
        {
            //arrange
            string expectedMessage = "grid is null.";

            string[,] grid = null;
            WordSearchProgramHelper wordSearchProgramHelper = new WordSearchProgramHelper(_consoleWrapper, null, null, null);

            //act & assert
            var exception = Assert.Throws <ArgumentException>(() => wordSearchProgramHelper.WriteGridToConsole(grid, ConsoleColor.Gray, ConsoleColor.Black));

            Assert.Equal(expectedMessage, exception.Message);
        }
        public void GetPuzzleFilePathsFromPuzzleDirectory_WhenPuzzleDirectoryDoesNotExist_ListOfFilePathsReturned()
        {
            //arrange
            string directory       = "NODIRECTORY";
            string fullPath        = $"{_fileOperations.ApplicationBasePath("WordSearch")}{Path.DirectorySeparatorChar}{directory}";
            string expectedMessage = $"directory does not exist: {fullPath}";
            WordSearchProgramHelper wordSearchProgramHelper = new WordSearchProgramHelper(_consoleWrapper, _fileOperations, _wordFinder, _searchOrientationManager);

            //act & assert
            var exception = Assert.Throws <ArgumentException>(() => wordSearchProgramHelper.GetPuzzleFilePathsFromPuzzleDirectory(directory, 9));

            Assert.Equal(expectedMessage, exception.Message);
        }
Esempio n. 4
0
        public void WriteTitle_ClearsConsoleAndWritesTitle()
        {
            //arrange
            string                  expected                = $"<clear>---- Word Search ----{Environment.NewLine}{Environment.NewLine}";
            IConsoleWrapper         consoleWrapper          = new ConsoleWrapperMock(true);
            WordSearchProgramHelper wordSearchProgramHelper = new WordSearchProgramHelper(consoleWrapper, null, null, null);

            //act
            wordSearchProgramHelper.WriteTitle();
            string output = _consoleOuput.ToString();

            //assert
            Assert.Equal(expected, output);
        }
Esempio n. 5
0
        public void WriteGridToConsole_WhenGridArrayPassedIn_WritesArrayContentsToConsole(string gridSource, string expected)
        {
            //arrange
            expected       = expected.Replace("{Environment.NewLine}", Environment.NewLine);
            string[,] grid = _testUtilities.StringToGrid(gridSource);
            WordSearchProgramHelper wordSearchProgramHelper = new WordSearchProgramHelper(_consoleWrapper, null, null, null);

            //act
            wordSearchProgramHelper.WriteGridToConsole(grid, ConsoleColor.Gray, ConsoleColor.Black);

            var output = _consoleOuput.ToString();

            //assert
            Assert.True(expected == output);
        }
Esempio n. 6
0
        public void ReadFileNumber_WhenUserFirstEntersInvalidNumber_UserIsPromptedToEnterAgain(int numFiles, string userInput, string expected)
        {
            //arrange
            expected = expected.Replace("{Environment.NewLine}", Environment.NewLine);
            IConsoleWrapper consoleWrapper = new ConsoleWrapperMock();

            ((ConsoleWrapperMock)consoleWrapper).ReadKeyChars = userInput.ToCharArray().ToList();

            WordSearchProgramHelper wordSearchProgramHelper = new WordSearchProgramHelper(consoleWrapper, null, null, null);

            //act
            var    userSelection = wordSearchProgramHelper.ReadFileNumberFromConsole(numFiles);
            string output        = _consoleOuput.ToString();

            //assert
            Assert.Equal(expected, output);
            Assert.Equal(userInput.Substring(userInput.Length - 1), userSelection.ToString());
        }
Esempio n. 7
0
        public void WriteNumberedFileNamesToConsole_WhenWellFormedFilePathsArePassedIn_WritesNumberedFileNamesToConsole(string filePathDelimeteredArray, string expected)
        {
            //arrange
            expected = expected.Replace("{Environment.NewLine}", Environment.NewLine);
            string[] filePaths = filePathDelimeteredArray.Split('|');
            Mock <IFileOperations> mockFileOperations = new Mock <IFileOperations>();

            mockFileOperations.Setup(m => m.GetFileNameFromPath(It.IsAny <string>())).Returns(() => "file.txt");

            WordSearchProgramHelper wordSearchProgramHelper = new WordSearchProgramHelper(_consoleWrapper, mockFileOperations.Object, null, null);

            //act
            wordSearchProgramHelper.WriteNumberedFileNamesToConsole(filePaths);
            var output = _consoleOuput.ToString();

            //assert
            Assert.Equal(expected, _consoleOuput.ToString());
        }
        public void GetSearchStringsAndGridFromPuzzleFile_WhenFileExistsInCorrectFormat_ReturnsFirstRowAsSearchStringAndAllOthersAsStringArray(string searchWords, string fileRowsDelimeteredArray, string puzzleFileName)
        {
            //arrange
            string workingDir = $"{_fileOperations.ApplicationBasePath(TestUtilities.APPLICATION_DIRECTORY)}{Path.DirectorySeparatorChar}{TEST_DIRECTORY}";

            CreatePuzzleFile(workingDir, searchWords, fileRowsDelimeteredArray, puzzleFileName);

            //need to remove the commas to provide meaningful input to StringToGrid
            string[,] expectedGrid = _testUtilities.StringToGrid(fileRowsDelimeteredArray.Replace(",", ""));

            WordSearchProgramHelper wordSearchProgramHelper = new WordSearchProgramHelper(_consoleWrapper, _fileOperations, _wordFinder, _searchOrientationManager);

            //act
            var(searchString, grid) = wordSearchProgramHelper.ConvertPuzzleFileToSearchWordsAndGrid($"{workingDir}{Path.DirectorySeparatorChar}{puzzleFileName}");

            //assert
            Assert.Equal(searchWords, searchString);
            Assert.Equal(expectedGrid, grid);
        }
Esempio n. 9
0
        public void PromptForMenuSelection_WhenUserSelectsNumberedOptionOutOfRange_RetryMessageDisplayed(string menuSelection, string expectedOutput, MenuSelection expectedMenuSelection)
        {
            //arrange
            expectedOutput = expectedOutput.Replace("{Environment.NewLine}", Environment.NewLine);
            IConsoleWrapper         consoleWrapper          = new ConsoleWrapperMock();
            WordSearchProgramHelper wordSearchProgramHelper = new WordSearchProgramHelper(consoleWrapper, null, null, null);

            ((ConsoleWrapperMock)consoleWrapper).ReadKeyChars = menuSelection.ToCharArray().ToList();
            Console.ForegroundColor = ConsoleColor.Gray;
            Console.BackgroundColor = ConsoleColor.Black;

            //act
            MenuSelection actualMenuSelection = wordSearchProgramHelper.PromptForMenuSelection();
            string        output = _consoleOuput.ToString();

            //assert
            Assert.Equal(expectedMenuSelection, actualMenuSelection);
            Assert.Equal(expectedOutput, output);
        }
Esempio n. 10
0
        public void PromptForMenuSelection_WhenUserSelectsNumberedOptionInRange_CorrectNumberReturned(MenuSelection menuSelection)
        {
            //arrange
            IConsoleWrapper         consoleWrapper          = new ConsoleWrapperMock();
            WordSearchProgramHelper wordSearchProgramHelper = new WordSearchProgramHelper(consoleWrapper, null, null, null);

            ((ConsoleWrapperMock)consoleWrapper).ReadKeyChar = ((int)menuSelection).ToString().ToCharArray().First();
            Console.ForegroundColor = ConsoleColor.Gray;
            Console.BackgroundColor = ConsoleColor.Black;
            string expected = $"(1) Show solution{Environment.NewLine}(2) Enter a search word{Environment.NewLine}(3) Select another puzzle{Environment.NewLine}(4) Exit{Environment.NewLine}{Environment.NewLine}Enter selection: {(int)menuSelection}{Environment.NewLine}";

            //act
            MenuSelection actualMenuSelection = wordSearchProgramHelper.PromptForMenuSelection();
            string        output = _consoleOuput.ToString();

            //assert
            Assert.Equal(menuSelection, actualMenuSelection);
            Assert.Equal(expected, output);
        }
Esempio n. 11
0
        public void WriteNumberedFileNamesToConsole_WhenWellFormedFilePathIsPassedIn_WritesNumberedFileNameToConsole()
        {
            //arrange
            string fileName = "EvilMorty.txt";
            string expected = $"(1) {fileName}{Environment.NewLine}";

            string[] filePaths = new string[1];
            Mock <IFileOperations> mockFileOperations = new Mock <IFileOperations>();

            mockFileOperations.Setup(m => m.GetFileNameFromPath(It.IsAny <string>())).Returns(() => fileName);

            WordSearchProgramHelper wordSearchProgramHelper = new WordSearchProgramHelper(_consoleWrapper, mockFileOperations.Object, null, null);

            //act
            wordSearchProgramHelper.WriteNumberedFileNamesToConsole(filePaths);
            var output = _consoleOuput.ToString();

            //assert
            Assert.True(expected == output);
        }
Esempio n. 12
0
        public void GetPuzzleFilePathsFromPuzzleDirectory_WhenPuzzleDirectoryDoesNotExist_ListOfFilePathsReturned()
        {
            //arrange
            Mock <IFileOperations> mockFileOperations = new Mock <IFileOperations>();
            string applicationBasePath = "basePath";
            bool   directoryExists     = false;

            mockFileOperations.Setup(m => m.ApplicationBasePath(It.IsAny <string>(), It.IsAny <string>())).Returns(() => applicationBasePath);
            mockFileOperations.Setup(m => m.DirectoryExists(It.IsAny <string>())).Returns(() => directoryExists);

            string directory       = "NODIRECTORY";
            string fullPath        = $"{applicationBasePath}{Path.DirectorySeparatorChar}{directory}";
            string expectedMessage = $"directory does not exist: {fullPath}";
            WordSearchProgramHelper wordSearchProgramHelper = new WordSearchProgramHelper(_consoleWrapper, mockFileOperations.Object, null, null);

            //act & assert
            var exception = Assert.Throws <ArgumentException>(() => wordSearchProgramHelper.GetPuzzleFilePathsFromPuzzleDirectory(directory, 9));

            Assert.Equal(expectedMessage, exception.Message);
        }
Esempio n. 13
0
        public void GetPuzzleFilePathsFromPuzzleDirectory_WhenPuzzleDirectoryExistsAndContainsFiles_ListOfFilePathsReturned()
        {
            //arrange
            Mock <IFileOperations> mockFileOperations = new Mock <IFileOperations>();
            string applicationBasePath = "basePath";
            bool   directoryExists     = true;

            string[] directoryContents = new string[] { "one.txt", "two.txt", "three.txt" };
            mockFileOperations.Setup(m => m.ApplicationBasePath(It.IsAny <string>(), It.IsAny <string>())).Returns(() => applicationBasePath);
            mockFileOperations.Setup(m => m.DirectoryExists(It.IsAny <string>())).Returns(() => directoryExists);
            mockFileOperations.Setup(m => m.GetSortedDirectoryContents(It.IsAny <string>())).Returns(() => directoryContents);

            WordSearchProgramHelper wordSearchProgramHelper = new WordSearchProgramHelper(_consoleWrapper, mockFileOperations.Object, null, null);

            //act
            var filePaths = wordSearchProgramHelper.GetPuzzleFilePathsFromPuzzleDirectory(TestUtilities.TEST_PUZZLES_DIRECTORY, 9);

            //assert
            Assert.Equal(directoryContents, filePaths);
        }
Esempio n. 14
0
        public void WriteGridToConsole_WhenGridArrayAndHighlightCoordinatesPassedIn_WritesArrayContentsToConsoleWithColorChanges(string gridSource, int xcoord, int ycoord, string expected)
        {
            //arrange
            expected       = expected.Replace("{Environment.NewLine}", Environment.NewLine);
            string[,] grid = _testUtilities.StringToGrid(gridSource);
            IConsoleWrapper         consoleWrapper          = new ConsoleWrapperMock();
            WordSearchProgramHelper wordSearchProgramHelper = new WordSearchProgramHelper(consoleWrapper, null, null, null);

            Console.ForegroundColor = ConsoleColor.Gray;
            Console.BackgroundColor = ConsoleColor.Black;

            //act
            wordSearchProgramHelper.WriteGridToConsole(grid, ConsoleColor.Gray, ConsoleColor.Black, new PointList()
            {
                new Point(xcoord, ycoord)
            });
            var output = _consoleOuput.ToString();

            //assert
            Assert.Equal(expected, output);
        }
Esempio n. 15
0
        public void PromptForSearchWord_WhenUserEntersWord_PromptDisplayedAndWordReturned(string searchWord)
        {
            //arrange
            string                  expected                = $"Enter a search word to find in puzzle or hit <enter> to return to the menu{Environment.NewLine}{Environment.NewLine}Search word: {searchWord}{Environment.NewLine}";
            IConsoleWrapper         consoleWrapper          = new ConsoleWrapperMock();
            WordSearchProgramHelper wordSearchProgramHelper = new WordSearchProgramHelper(consoleWrapper, null, null, null);

            ((ConsoleWrapperMock)consoleWrapper).ReadLineResults = new List <string>()
            {
                searchWord
            };
            Console.ForegroundColor = ConsoleColor.Gray;
            Console.BackgroundColor = ConsoleColor.Black;

            //act
            string searchWordOut = wordSearchProgramHelper.PromptForSearchWord();
            string output        = _consoleOuput.ToString();

            //assert
            Assert.Equal(searchWord, searchWordOut);
            Assert.Equal(expected, output);
        }
Esempio n. 16
0
        public void SetConsoleColors_WhenColorsAreSameAsCurrentColors_ColorsAreNotChanged()
        {
            //arrange
            var    fg       = Console.ForegroundColor;
            var    bg       = Console.BackgroundColor;
            string expected = "";

            Console.BackgroundColor = ConsoleColor.DarkBlue;
            Console.ForegroundColor = ConsoleColor.Blue;
            IConsoleWrapper         consoleWrapper          = new ConsoleWrapperMock();
            WordSearchProgramHelper wordSearchProgramHelper = new WordSearchProgramHelper(consoleWrapper, null, null, null);

            //act
            wordSearchProgramHelper.SetConsoleColors(ConsoleColor.Blue, ConsoleColor.DarkBlue);
            string output = _consoleOuput.ToString();

            //assert
            Assert.Equal(expected, output);

            Console.ForegroundColor = fg;
            Console.BackgroundColor = bg;
        }
Esempio n. 17
0
        public void SetConsoleColors_WhenOnlyForegroundColorsIsDifferentToCurrentColor_OnlyForegroundColorChanged()
        {
            //arrange
            var    fg       = Console.ForegroundColor;
            var    bg       = Console.BackgroundColor;
            string expected = "<fg:Cyan>";

            Console.BackgroundColor = ConsoleColor.DarkBlue;
            Console.ForegroundColor = ConsoleColor.Blue;
            IConsoleWrapper         consoleWrapper          = new ConsoleWrapperMock();
            WordSearchProgramHelper wordSearchProgramHelper = new WordSearchProgramHelper(consoleWrapper, null, null, null);

            //act
            wordSearchProgramHelper.SetConsoleColors(ConsoleColor.Cyan, ConsoleColor.DarkBlue);
            string output = _consoleOuput.ToString();

            //assert
            Assert.Equal(expected, output);

            Console.ForegroundColor = fg;
            Console.BackgroundColor = bg;
        }
        public void WriteSolvedPuzzleCoordinatesToConsole_WhenSearchWordFound_CoordinatesWrittenToConsole(string searchWords, string fileRowsDelimeteredArray, string puzzleFileName, string expected)
        {
            //arrange
            expected = expected.Replace("{Environment.NewLine}", Environment.NewLine);
            string workingDir = $"{_fileOperations.ApplicationBasePath(TestUtilities.APPLICATION_DIRECTORY)}{Path.DirectorySeparatorChar}{TEST_DIRECTORY}";

            CreatePuzzleFile(workingDir, searchWords, fileRowsDelimeteredArray, puzzleFileName);

            IConsoleWrapper         consoleWrapper          = new ConsoleWrapperMock();
            WordSearchProgramHelper wordSearchProgramHelper = new WordSearchProgramHelper(consoleWrapper, _fileOperations, _wordFinder, _searchOrientationManager);

            Console.ForegroundColor = ConsoleColor.Gray;
            Console.BackgroundColor = ConsoleColor.Black;

            //act
            var(searchString, grid) = wordSearchProgramHelper.ConvertPuzzleFileToSearchWordsAndGrid($"{workingDir}{Path.DirectorySeparatorChar}{puzzleFileName}");
            IGridManager gridManager = new GridManager(grid);

            wordSearchProgramHelper.WriteSolvedPuzzleCoordinatesToConsole(searchString, gridManager);
            var output = _consoleOuput.ToString();

            //assert
            Assert.True(expected == _consoleOuput.ToString());
        }