/// <summary>
        /// Create a different matrix depending of the input parameter.
        /// </summary>
        /// <param name="matrixType">Enumeration MatrixType - there are Big, Small and Medium matrix.</param>
        /// <returns>Returns a new instance of matrix.</returns>
        public IMatrix CreateMatrix(MatrixTypes matrixType)
        {
            var director = new MatrixDirector();
            MatrixBuilder builder;

            switch (matrixType)
            {
                case MatrixTypes.SMALL:
                    builder = new SmallMatrixBuilder();
                    break;
                case MatrixTypes.MEDIUM:
                    builder = new MediumMatrixBuilder();
                    break;
                case MatrixTypes.BIG:
                    builder = new BigMatrixBuilder();
                    break;
                default:
                    builder = new SmallMatrixBuilder();
                    break;
            }

            director.Construct(builder);

            return builder.GetMatrix();
        }
 /// <summary>
 /// Constructor for the Start command.
 /// </summary>
 /// <param name="engine">Curent game engine.</param>
 /// <param name="matrix">Current game matrix.</param>
 /// <param name="player">Current game player.</param>
 /// <param name="matrixDirector">Matrix director constructing the matrix.</param>
 /// <param name="matrixBuilder">Matrix builder used by matrix director.</param>
 /// <param name="printer">Current game printer.</param>
 public StartCommand(MinesweeperEngine engine, Matrix matrix, Player player, MatrixDirector matrixDirector, MatrixBuilder matrixBuilder, Printer printer)
     : base(matrix, player, printer)
 {
     this.engine = engine;
     this.director = matrixDirector;
     this.builder = matrixBuilder;
 }
        /// <summary>
        /// Create a different matrix depending of the input parameter.
        /// </summary>
        /// <param name="matrixType">Enumeration MatrixType - there are Big, Small and Medium matrix.</param>
        /// <returns>Returns a new instance of matrix.</returns>
        public IMatrix CreateMatrix(MatrixTypes matrixType)
        {
            var           director = new MatrixDirector();
            MatrixBuilder builder;

            switch (matrixType)
            {
            case MatrixTypes.SMALL:
                builder = new SmallMatrixBuilder();
                break;

            case MatrixTypes.MEDIUM:
                builder = new MediumMatrixBuilder();
                break;

            case MatrixTypes.BIG:
                builder = new BigMatrixBuilder();
                break;

            default:
                builder = new SmallMatrixBuilder();
                break;
            }

            director.Construct(builder);

            return(builder.GetMatrix());
        }
        public void ExpectGetPrintFrameToReturntNotEmptyString()
        {
            var director = new MatrixDirector();
            var builder = new SmallMatrixBuilder();
            director.Construct(builder);
            var matrix = builder.GetMatrix();

            var player = new Player();

            var printer = new StandardPrinter();

            var result = printer.GetPrintFrame(matrix, player);

            Assert.AreNotEqual(result.Length, 0);
        }