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)); }
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."); }
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())); }