Esempio n. 1
0
        public void ParseAsyncWhenInvalidInputWithShortLineGivenThenExceptionExpected()
        {
            var         parser = new FieldParser();
            Func <Task> act    = async() => await parser.ParseAsync(10, 10, "...");

            act.ShouldThrow <Exception>();
        }
Esempio n. 2
0
        /// <summary>
        /// Le Main
        /// </summary>
        /// <param name="args">
        /// Program arguments
        /// </param>
        public static void Main(string[] args)
        {
            var counter = 1;

            // repeat until "0 0" is entered for dimension size input
            while (true)
            {
                // read dimension
                Console.Write("Field dimension (format 'n m'): ");
                string dimensionInput = Console.ReadLine();
                if (String.IsNullOrEmpty(dimensionInput))
                {
                    Console.WriteLine("Expecting dimension input");
                    break;
                }

                string[] dimensionParts = dimensionInput.Trim().Split(new[] { ' ' }, 2);
                if (dimensionParts.Length != 2)
                {
                    Console.WriteLine("Invalid input given, expecting dimension in format \"Width Height\" (e.g. \"4 3\"");
                    break;
                }

                int width, height;
                if (!ParseDimension(dimensionParts[0], "Width", out width))
                {
                    break;
                }

                if (!ParseDimension(dimensionParts[1], "Height", out height))
                {
                    break;
                }

                // validate input
                if (width == 0 && height == 0)
                {
                    break;
                }

                string fieldString = ReadField(width, height);

                // init
                var fieldParser = new FieldParser(MaxSize);
                var mineCounter = new MineCounter();
                var fieldSolver = new FieldSolver(mineCounter);

                Field field = fieldParser.ParseAsync(width, height, fieldString).Result;
                char[,] result = fieldSolver.GetTextualRepresentation(field);

                // output
                Console.WriteLine();
                Console.WriteLine("Field #{0}: ", counter);

                WriteResult(result);
                Console.WriteLine();

                ++counter;
            }
        }
Esempio n. 3
0
        public void ParseAsyncWhenNullPassedAsFieldThenArgumentNullExceptionExpected()
        {
            var parser = new FieldParser();

            Func <Task> act = async() => await parser.ParseAsync(100, 100, null);

            act.ShouldThrow <ArgumentException>();
        }
Esempio n. 4
0
        public void ParseAsyncWhenInvalidHeightPassedThenArgumentExceptionExpected()
        {
            var parser = new FieldParser();

            Func <Task> act = async() => await parser.ParseAsync(100, -1, "dummy");

            act.ShouldThrow <ArgumentException>();
        }
Esempio n. 5
0
        public void ParseAsyncWhenRectangleFieldGivenThenFieldInstanceExpected()
        {
            var input    = String.Format("..{0}*.{0}*.{0}..", Environment.NewLine);
            var expected = new Field(
                2,
                4,
                new List <MinePoint>
            {
                new MinePoint(0, 1),
                new MinePoint(0, 2),
            });

            var parser = new FieldParser();
            var actual = parser.ParseAsync(2, 4, input).Result;

            actual.ShouldBeEquivalentTo(expected);
        }
Esempio n. 6
0
        public void ParseAsyncWhenSquareGivenThenFieldInstanceExpected()
        {
            var input    = String.Format("*....{0}..*..{0}.....{0}*....{0}....*", Environment.NewLine);
            var expected = new Field(
                5,
                5,
                new List <MinePoint>
            {
                new MinePoint(0, 0),
                new MinePoint(2, 1),
                new MinePoint(0, 3),
                new MinePoint(4, 4)
            });

            var parser = new FieldParser();
            var actual = parser.ParseAsync(5, 5, input).Result;

            actual.ShouldBeEquivalentTo(expected);
        }