public void GetMoves_should_return_Sequences_From_File(string fileExtension)
        {
            //
            // Arrange.
            //
            string MovesFilePath           = "moves" + fileExtension;
            IEnumerable <Sequence> seqList = new List <Sequence>()
            {
                new Sequence()
                {
                    Moves = new List <Move>()
                    {
                        Move.StepForward, Move.Turn, Move.StepForward, Move.Turn
                    },
                    Name = "Seq 1"
                },
            };

            IDataProvider mockDataProvider = MockRepository.GenerateMock <IDataProvider>();

            mockDataProvider.Stub(p => p.GetAllMoves(MovesFilePath)).Return(seqList);
            mockDataProvider.Stub(p => p.Extension).Return(fileExtension);
            IDataProvider[] dataProviders = new IDataProvider[1];
            dataProviders[0] = mockDataProvider;
            IoCContainer.Instance().RegisterInstance(fileExtension, mockDataProvider);



            IGameDataManager manager = new GameDataManager(dataProviders);

            //
            // Act.
            //

            IEnumerable <Sequence> result = manager.GetMoves(MovesFilePath);


            //
            // Assert.
            //

            Assert.That(result.Count(), Is.EqualTo(1));
            Assert.That(result.ToList()[0].Moves.Count, Is.EqualTo(4));
            Assert.That(result.ToList()[0].Moves[3], Is.EqualTo(Move.Turn));
        }
Exemplo n.º 2
0
        public static void ConfigureIoC()
        {
            IUnityContainer container = IoCContainer.Instance();

            container.RegisterType <IDataProvider, XmlDataProvider>(".xml");   // for the xml files
            container.RegisterType <IDataProvider, JsonDataProvider>(".json"); // for json files
            container.RegisterType <IGameDataManager, GameDataManager>();
            container.RegisterType <IGameManager, GameManager>();
            container.RegisterType <IGameDataValidator, GameDataValidator>();
            container.RegisterType <IRotator, Rotator>();
            container.RegisterType <IMoveProcessor, NorthMoveProcessor>("NorthMoveProcessor");
            container.RegisterType <IMoveProcessor, EastMoveProcessor>("EastMoveProcessor");
            container.RegisterType <IMoveProcessor, SouthMoveProcessor>("SouthMoveProcessor");
            container.RegisterType <IMoveProcessor, WestMoveProcessor>("WestMoveProcessor");
            container.RegisterType <IFileReadonlyAccess, FileReadOnlyAccess>();

            Logger.InfoFormat("Dependencies registered successfully.");
        }
Exemplo n.º 3
0
        public static void Main(string[] args)
        {
            try
            {
                /*
                 * Uncomment the following lines to run this project in debug more with following files.
                 */

                //args = new string[2];
                //args[0] = "game-settings.xml";
                //args[1] = "moves.xml";

                log4net.Config.XmlConfigurator.Configure();

                Logger.InfoFormat("------------------------------------");
                Logger.InfoFormat("Turtle challenge game launched.");
                Logger.InfoFormat("------------------------------------");

                TurtleChallengeIoCConfigurator.ConfigureIoC();

                IGameManager manager = IoCContainer.Instance().Resolve <IGameManager>();

                string gameSettingsFile = args[0]; // assuming the user inputs the game settings file with its extension being  xml or json..
                string movesFile        = args[1]; // assuming the user inputs the moves file with its extension being xml or json.

                Logger.InfoFormat($"Starting the game with {gameSettingsFile} and {movesFile} files.");
                IEnumerable <string> sequenceResults = manager.Start(gameSettingsFile, movesFile);

                foreach (string sequenceResult in sequenceResults)
                {
                    Console.WriteLine(sequenceResult);
                    Logger.InfoFormat(sequenceResult);
                }

                Logger.InfoFormat("------------------------------------");
                Logger.InfoFormat("Turtle challenge game exits.");
                Logger.InfoFormat("------------------------------------");
            }
            catch (Exception ex)
            {
                Console.WriteLine("A fatel error occured during the execution of the game. Please check the log file for the detailed error message.\n");
                Logger.ErrorFormat($"A fatel error occured during the execution of the game. Details {ex}");
            }
        }
        public void GetGameSettings_Should_Return_Games_Settings_Data_From_File(string fileExtension)
        {
            //
            // Arrange.
            //

            GameSettings gs = new GameSettings();

            gs.GameBoard = new GameBoard()
            {
                Columns = 50, Rows = 50
            };
            gs.ExitPoint = new Point()
            {
                Y = 45, X = 25
            };
            gs.StartingPoint = new Point()
            {
                Y = 12, X = 33
            };
            gs.Mines = new List <Point>()
            {
                new Point()
                {
                    X = 1, Y = 10
                },
                new Point()
                {
                    X = 2, Y = 12
                },
                new Point()
                {
                    X = 2, Y = 13
                },
                new Point()
                {
                    X = 3, Y = 14
                }
            };


            string gameSettingsFile = "game-settings" + fileExtension;


            IDataProvider mockDataProvider = MockRepository.GenerateMock <IDataProvider>();

            mockDataProvider.Stub(p => p.GetGameSettings(gameSettingsFile)).Return(gs);

            mockDataProvider.Stub(dp => dp.Extension).Return(fileExtension);

            IDataProvider[] dataProviders = new IDataProvider[1];
            dataProviders[0] = mockDataProvider;

            IoCContainer.Instance().RegisterInstance(fileExtension, mockDataProvider);

            IGameDataManager manager = new GameDataManager(dataProviders);

            //
            // Act.
            //

            GameSettings result = manager.GetGameSettings(gameSettingsFile);


            //
            // Assert.
            //


            Assert.That(result.GameBoard.Columns, Is.EqualTo(gs.GameBoard.Columns));
            Assert.That(result.GameBoard.Rows, Is.EqualTo(gs.GameBoard.Rows));
            Assert.That(result.Direction, Is.EqualTo(gs.Direction));
            mockDataProvider.AssertWasCalled(p => p.GetGameSettings(gameSettingsFile));
            Assert.That(result.Mines.Count(), Is.EqualTo(gs.Mines.Count()));
        }