public bool RoverDataControl(string roverData, UpperRightCoordinatesModel upperRightCoordinateModel) { try { string[] roverDataSplit = roverData.CustomSplit(' '); if (roverDataSplit.Count() < 3) { Console.WriteLine("Lütfen geçerli rover bilgisi giriniz!"); return(false); } if (!int.TryParse(roverDataSplit[0], out int x) || x <0 || x> upperRightCoordinateModel.XCoordinate || !int.TryParse(roverDataSplit[1], out int y) || y <0 || y> upperRightCoordinateModel.YCoordinate) { Console.WriteLine("Lütfen bölge sınırları içinde geçerli değerler giriniz!"); return(false); } if (!EnumHelper.GetItems(typeof(DirectionEnum)).Contains(roverDataSplit[2])) { Console.WriteLine("Lütfen geçerli pusula yön bilgisi giriniz!"); return(false); } return(true); } catch { Console.WriteLine("Lütfen geçerli rover bilgisi giriniz!"); return(false); } }
static void Main(string[] args) { RegisterServices(); UpperRightCoordinatesModel upperRightCoordinates = _roverService.EnterUpperRightCoordinates(); List <RoversModel> roverList = _roverService.FillRoversData(upperRightCoordinates); _roverService.RoversMovementActions(roverList); Console.ReadKey(); }
private char[] EnterRoverMovementCommandsData(string[] roverData, UpperRightCoordinatesModel upperRightCoordinateModel) { bool succcess = false; string movementCommandsData = string.Empty; while (!succcess) { Console.WriteLine("Rover hareket komutlarını giriniz..."); movementCommandsData = Console.ReadLine(); succcess = RoverMovementCommandsDataControl(roverData, movementCommandsData, upperRightCoordinateModel); } char[] movementCommandsDataSplit = movementCommandsData.ToUpper().ToCharArray(); return(movementCommandsDataSplit); }
private string[] EnterRoverData(UpperRightCoordinatesModel upperRightCoordinateModel) { bool succcess = false; string roverData = string.Empty; while (!succcess) { Console.WriteLine("Rover bilgilerini giriniz..."); roverData = Console.ReadLine(); succcess = RoverDataControl(roverData, upperRightCoordinateModel); } string[] roverDataSplit = roverData.CustomSplit(' '); return(roverDataSplit); }
public void RoversMovementActionTest() { List <RoversModel> roverList = new List <RoversModel>(); #region Create Rover Test Model string upperRightCoordinates = "5 5"; Assert.IsTrue(_roverService.UpperRightCoordinatesControl(upperRightCoordinates)); UpperRightCoordinatesModel upperRightCoordinatesModel = new UpperRightCoordinatesModel { XCoordinate = Convert.ToInt32(upperRightCoordinates.Split(' ')[0]), YCoordinate = Convert.ToInt32(upperRightCoordinates.Split(' ')[1]) }; List <RoverListTestModel> roverTestList = new List <RoverListTestModel> { new RoverListTestModel { RoverData = "1 2 N", RoverMovementCommandsData = "LMLMLMLMM" }, new RoverListTestModel { RoverData = "3 3 E", RoverMovementCommandsData = "MMRMMRMRRM" } }; #endregion foreach (RoverListTestModel testModel in roverTestList) { Assert.IsTrue(_roverService.RoverDataControl(testModel.RoverData, upperRightCoordinatesModel)); Assert.IsTrue(_roverService.RoverMovementCommandsDataControl(testModel.RoverData.Split(' '), testModel.RoverMovementCommandsData, upperRightCoordinatesModel)); roverList.Add(new RoversModel { XCoordinate = Convert.ToInt32(testModel.RoverData.Split(' ')[0]), YCoordinate = Convert.ToInt32(testModel.RoverData.Split(' ')[1]), Direction = (int)EnumHelper.GetEnumByName <DirectionEnum>(testModel.RoverData.Split(' ')[2]), RoverMovementCommands = testModel.RoverMovementCommandsData.ToCharArray().ToList() }); } _roverService.RoversMovementActions(roverList); }
public List <RoversModel> FillRoversData(UpperRightCoordinatesModel upperRightCoordinateModel) { List <RoversModel> rovers = new List <RoversModel>(); do { string[] roverData = EnterRoverData(upperRightCoordinateModel); char[] movementCommandsData = EnterRoverMovementCommandsData(roverData, upperRightCoordinateModel); rovers.Add(new RoversModel { XCoordinate = Convert.ToInt32(roverData[0]), YCoordinate = Convert.ToInt32(roverData[1]), Direction = (int)EnumHelper.GetEnumByName <DirectionEnum>(roverData[2]), RoverMovementCommands = movementCommandsData.ToList() }); Console.WriteLine("Rover ekleme işleminden çıkmak için ESC tuşuna basınız. İşleme devam etmek için herhangi bir tuşa basınız..."); }while (Console.ReadKey().Key != ConsoleKey.Escape); Console.WriteLine(); return(rovers); }
public bool RoverMovementCommandsDataControl(string[] roverData, string movementCommandsData, UpperRightCoordinatesModel upperRightCoordinateModel) { try { if (string.IsNullOrEmpty(movementCommandsData)) { return(false); } else { char[] movementCommandsDataSplit = movementCommandsData.ToUpper().ToCharArray(); List <string> movementCommandsEnumDataList = EnumHelper.GetItems(typeof(MovementCommandsEnum)); RoversModel routeTestModel = new RoversModel { XCoordinate = Convert.ToInt32(roverData[0]), YCoordinate = Convert.ToInt32(roverData[1]), Direction = (int)EnumHelper.GetEnumByName <DirectionEnum>(roverData[2]), }; foreach (char data in movementCommandsDataSplit) { if (!movementCommandsEnumDataList.Contains(data.ToString())) { Console.WriteLine("Lütfen geçerli hareket komut bilgisi giriniz!"); return(false); } else { switch (data) { case 'L': routeTestModel.TurnLeft(); break; case 'R': routeTestModel.TurnRight(); break; default: routeTestModel.Move(); break; } if (routeTestModel.XCoordinate > upperRightCoordinateModel.XCoordinate || routeTestModel.YCoordinate > upperRightCoordinateModel.YCoordinate || routeTestModel.XCoordinate < 0 || routeTestModel.YCoordinate < 0) { Console.WriteLine("Lütfen hareket komutlarını rover bölge içinde kalacak şekilde giriniz!"); return(false); } } } return(true); } } catch { return(false); } }