示例#1
0
        public void SetPositionTest()
        {
            var result = new CoordinatesRequestModel {
                XCoordinate = 1, YCoordinate = 2
            };
            var expect = _marsRoverService.SetPosition(new MoveModel
            {
                Position = new CoordinatesRequestModel {
                    XCoordinate = 1, YCoordinate = 1
                }, Direction = 'N'
            });

            Assert.AreEqual(expect.YCoordinate, result.YCoordinate);
        }
        public ActionResult Calculate([Bind(Include = CoordinatesRequestModelValidationBindings)] CoordinatesRequestModel model)
        {
            if (this.ModelState.IsValid)
            {
                var coordinateStrings = model.Coordinates.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries)
                                        .Select(c => c.Trim())
                                        .Where(c => c.Length > 1)
                                        .Distinct()
                                        .ToArray();

                var viewModel = new CoordinatesResponseViewModel();
                foreach (var coordinateString in coordinateStrings)
                {
                    try
                    {
                        var coordinate = this.coordinateParser.ParseCoordinateString(coordinateString);

                        viewModel.Coordinates.Add(new CoordinateViewModel
                        {
                            Coordinate = coordinateString,
                            Latitude   = coordinate.Latitude,
                            Longitude  = coordinate.Longitude
                        });
                    }
                    catch
                    {
                        viewModel.Coordinates.Add(new CoordinateViewModel
                        {
                            Coordinate = coordinateString,
                            Latitude   = "Error",
                            Longitude  = "Error"
                        });
                    }
                }

                this.Response.StatusCode = (int)HttpStatusCode.OK;
                return(this.View(viewModel));
            }

            this.Response.StatusCode = (int)HttpStatusCode.BadRequest;
            return(this.Redirect(nameof(this.Index)));
        }