public string Segregate(string input) { try { _roverDetails = _initializor.InitializeRoverDetails(input.Trim()); if (_orientationPattern.IsMatch(input)) { _roverDetails = _initializor.GetTheDestinationDetails(input.Trim()); } else if (!_roverDetails.HasValidPattern) { throw new InvalidInputException("Invalid Input"); } } catch (InvalidInputException exception) { _roverDetails.ValidationResult = exception.Message; } catch (InvalidCoordinateException exception) { _roverDetails.ValidationResult = exception.Message; } return(_roverDetails.Output); }
public void Validate(RoverDetails roverDetails, bool validateCurrentPosition) { if (roverDetails.MaximumCoordinates == null) { throw new InvalidInputException("Enter Maximum Coordinates"); } }
public void Validate(RoverDetails roverDetails, bool validateCurrentPosition) { if (validateCurrentPosition) { if (roverDetails.CurrentPosition.XCoordinate > roverDetails.MaximumCoordinates.XCoordinate || roverDetails.CurrentPosition.XCoordinate < 0) { _errMsgBuilder.Append(ErrMsgXCoordinate); } if (roverDetails.CurrentPosition.YCoordinate > roverDetails.MaximumCoordinates.YCoordinate || roverDetails.CurrentPosition.YCoordinate < 0) { _errMsgBuilder.Append(ErrMsgYCoordinate); } } else { if (roverDetails.FinalPosition.XCoordinate > roverDetails.MaximumCoordinates.XCoordinate || roverDetails.FinalPosition.XCoordinate < 0) { _errMsgBuilder.Append(ErrMsgXCoordinate); } if (roverDetails.FinalPosition.YCoordinate > roverDetails.MaximumCoordinates.YCoordinate || roverDetails.FinalPosition.YCoordinate < 0) { _errMsgBuilder.Append(ErrMsgYCoordinate); } } if (_errMsgBuilder.Length > 1) { throw new InvalidCoordinateException(_errMsgBuilder.ToString()); } }
public RoverDetails GetTheDestination(RoverDetails roverDetails) { _rover = roverDetails.CurrentPosition; foreach (var command in roverDetails.RoverInstruction) { if (ValidOrientation.Contains(command.ToString())) { ChangeOrientation(command); } else { MoveForward(); } } roverDetails.FinalPosition = _rover; return(roverDetails); }
public void ShouldValidateInvalidFinalPosition() { var roverDetails = new RoverDetails { MaximumCoordinates = new Rover() { XCoordinate = 5, YCoordinate = 5 }, FinalPosition = new Rover() { XCoordinate = 6, YCoordinate = 7, CompassDirection = OrientationDetails.CompassDirection.N } }; _validate.Validate(roverDetails, false); }
public void GetTheDestination2() { var roverDetails = new RoverDetails() { MaximumCoordinates = new Rover() { XCoordinate = 5, YCoordinate = 5 }, CurrentPosition = new Rover() { XCoordinate = 3, YCoordinate = 3, CompassDirection = OrientationDetails.CompassDirection.E }, RoverInstruction = "MMRMMRMRRM" }; var result = _processor.GetTheDestination(roverDetails); Assert.AreEqual(result.FinalPosition, new Rover() { XCoordinate = 5, YCoordinate = 1, CompassDirection = OrientationDetails.CompassDirection.E }); }
public Segregator(RoverDetails roverDetails) { _roverDetails = roverDetails; }
public Initialize(ValidationProvider validationProvider, RoverDetails roverDetails) { _roverDetails = roverDetails; _validators = validationProvider.GetValidators(); }