Exemple #1
0
        public void TakeTurnShouldAskUserToReEnterIfGivenOutOfBoundsCoordinate()
        {
            // do I need to use TestReaderWriter
            var board = new Board(3);

            var coordValidator = new CoordinateValidator();
            var coord          = new Coordinate {
                X = 5, Y = 2
            };
            var isValid = coordValidator.IsValid(board, coord);

            Assert.False(isValid);
        }
Exemple #2
0
        public void IsValid_ValidInput_IsTrue()
        {
            // Act
            var validCoordinateCollection = Defaults.Coordinate.Valid;

            foreach (var item in validCoordinateCollection)
            {
                // Arrange
                var result = CoordinateValidator.IsValid(item);

                // Assert
                Assert.IsTrue(result);
            }
        }
Exemple #3
0
        public void TakeTurnShouldAskUserToReEnterCoordIfIndexTaken()
        {
            // do I need to use TestReaderWriter
            var board         = new Board(3);
            var existingCoord = new Coordinate {
                X = 1, Y = 2
            };

            board.UpdateSquare(existingCoord, 'X');

            var coordValidator = new CoordinateValidator();
            var enteredCord    = new Coordinate {
                X = 1, Y = 2
            };
            var isValid = coordValidator.IsValid(board, enteredCord);

            Assert.False(isValid);
        }
Exemple #4
0
        /// <summary>
        /// Method decodes polyline encoded representation to coordinates.
        /// </summary>
        /// <param name="polyline">Encoded polyline char array to decode</param>
        /// <returns>Returns coordinates.</returns>
        /// <exception cref="ArgumentException">If polyline argument is null -or- empty char array.</exception>
        /// <exception cref="InvalidOperationException">If polyline representation is not in correct format.</exception>
        public static IEnumerable <(double Latitude, double Longitude)> Decode(char[] polyline)
        {
            // Checking null and at least one character
            if (polyline == null || !polyline.Any())
            {
                throw new ArgumentException(ExceptionMessageResource.ArgumentCannotBeNullOrEmpty, nameof(polyline));
            }

            // Initialize local variables
            int index     = 0;
            int latitude  = 0;
            int longitude = 0;
            var result    = new List <(double Latitude, double Longitude)>();

            // Looping through encoded polyline char array
            while (index < polyline.Length)
            {
                // Attempting to calculate next latitude value. If failed exception is thrown
                if (!TryCalculateNext(polyline, ref index, ref latitude))
                {
                    throw new InvalidOperationException(ExceptionMessageResource.PolylineCharArrayIsMalformed);
                }

                // Attempting to calculate next longitude value. If failed exception is thrown
                if (!TryCalculateNext(polyline, ref index, ref longitude))
                {
                    throw new InvalidOperationException(ExceptionMessageResource.PolylineCharArrayIsMalformed);
                }

                var coordinate = (GetDoubleRepresentation(latitude), GetDoubleRepresentation(longitude));

                if (!CoordinateValidator.IsValid(coordinate))
                {
                    throw new InvalidOperationException(ExceptionMessageResource.PolylineCharArrayIsMalformed);
                }

                result.Add(coordinate);
            }

            return(result);
        }