/// <summary>
        /// The main method of the Console UI of the game.
        /// </summary>
        public static void Main()
        {
            var printer = new Printer();

            var reader = new Reader();

            var gameInitializator = new GameInitializer.GameInitializer(printer, reader);

            var game = gameInitializator.Initialize();

            var scoreboard = new Scoreboard();

            var commandManager = new CommandManager();

            var boardHistory = new BoardHistory();

            EngineTemplate engine = new Engine.Engine(game, scoreboard, printer, reader, commandManager, boardHistory);

            engine.Run();
        }
        /// <summary>
        /// Method get reader.
        /// </summary>
        /// <param name="value">Type string.</param>
        /// <returns>Returns mockedPrinter.</returns>
        public static IReader GetReader(string value)
        {
            var mockedReader = new Mock<IReader>();
            var numberOfCalls = 2;
            result = value;
            var parsedInput = new string[3];
            mockedReader.Setup(x => x.ReadLine())
                .Callback(() =>
                {
                    if (numberOfCalls == 0)
                    {
                        result = "Exit";
                    }
                    else
                    {
                        // Result = It.IsAny<string>();
                        numberOfCalls--;
                    }
                })
                .Returns(() => result);

            mockedReader.Setup(x => x.ParseInput(It.IsAny<string>()))
                .Callback<string>(
            toparse =>
            {
                var simpleReader = new Reader();
                parsedInput = simpleReader.ParseInput(toparse);
            })
                .Returns(() => parsedInput);

            return mockedReader.Object;
        }
 public void ExpectToThrowWhenNoPrinerAndNoReaderAreProvided()
 {
     var reader = new Reader();
     var gameInitializer = new GameInitializer(null, null);
 }
 public void ExpectToThrowWhenNoPrinerIsProvided()
 {
     var reader = new Reader();
     var gameInitializer = new GameInitializer(null, reader);
 }
 public void ExpectNotToThrowWhenPrinterAndReaderAreProvided()
 {
     var printer = new Printer();
     var reader = new Reader();
     var gameInitializer = new GameInitializer(printer, reader);
 }