public void RoverModelTest_CalculateNewPositions() { var rover = new RoverModel(Container); rover.StartRover(5, 5, "1 1 N", "MMRM"); Assert.AreEqual("2 3 E", rover.CalculateNewPosition()); rover.StartRover(5, 5, "3 5 S", "M"); Assert.AreEqual("3 4 S", rover.CalculateNewPosition()); // keep the same direction as previous when error occurs // 35S is a wrong position rover.StartRover(5, 5, "35S", "M"); Assert.AreEqual("3 4 S", rover.CalculateNewPosition()); rover.Dispose(); rover.StartRover(54444444, 123456445, "54443444 123456425 S", "MML"); Assert.AreEqual("54443444 123456423 E", rover.CalculateNewPosition()); rover.Dispose(); rover.StartRover(5, 5, "35S", "M"); Assert.AreEqual("", rover.CalculateNewPosition()); rover.Dispose(); }
public void RoverModelTest_CalculateNewPositions_Errors() { var rover = new RoverModel(Container); rover.StartRover(5, 5, "", ""); Assert.AreEqual("", rover.CalculateNewPosition()); rover.StartRover(5, 5, " - -", "-('"); Assert.AreEqual("", rover.CalculateNewPosition()); rover.StartRover(5, 5, "1 1", "MMRM"); Assert.AreEqual("", rover.CalculateNewPosition()); rover.StartRover(5, 5, "1 1 W", "MMRM"); Assert.AreEqual("", rover.CalculateNewPosition()); rover.StartRover(5, 5, "1 ", "M"); Assert.AreEqual("", rover.CalculateNewPosition()); rover.StartRover(0, 0, "1 1 S", "M"); Assert.AreEqual("", rover.CalculateNewPosition()); rover.StartRover(0, 0, "1 1 S", "M---"); Assert.AreEqual("", rover.CalculateNewPosition()); rover.StartRover(0, 0, "1 1111111( S", "M---"); Assert.AreEqual("", rover.CalculateNewPosition()); rover.StartRover('r', 'r', "1 1 W", "MMRM"); Assert.AreEqual("", rover.CalculateNewPosition()); rover.Dispose(); }
public void RoverModelTest_StartRover() { var rover = new RoverModel(Container); // true Assert.IsTrue(rover.StartRover(5, 5, "1 1 N", "MMRM")); Assert.IsTrue(rover.StartRover(5, 5, "1 1 N", "aze")); // false Assert.IsFalse(rover.StartRover(5, 5, "2 3N", "MMRM")); Assert.IsFalse(rover.StartRover(5, 5, "11N", "aze")); Assert.IsFalse(rover.StartRover(5, 5, "1 1 N", "")); Assert.IsFalse(rover.StartRover(5, 5, "", "")); Assert.IsFalse(rover.StartRover(5, 5, "1 1", "")); Assert.IsFalse(rover.StartRover(5, 5, "1", "")); rover.Dispose(); }
/// <summary> /// Parse and register the data /// </summary> /// <param name="paramsToParse">Parameters to handle</param> /// <returns>True if everything is set, false otherwise</returns> public bool ParseData(string[] paramsToParse) { if (paramsToParse == null || paramsToParse.Length != 1) { return(false); } var fileUtilities = _container.Resolve <IFileUtilities>(); if (fileUtilities == null) { return(false); } var data = fileUtilities.ParseFile(_container, paramsToParse[0]); if (data.Count == 0) { return(false); } var dimensionMap = data[0].Split(' '); if (dimensionMap.Length != 2) { return(false); } if (int.TryParse(dimensionMap[0], out int x)) { _length_x = x; } if (int.TryParse(dimensionMap[1], out int y)) { _length_y = y; } // if no lenght no need to go further if (_length_x < 0 || _length_y < 0) { ReleaseAttributes(); return(false); } // build rovers _rovers = new List <RoverModel>(); for (var i = 1; i < data.Count && i + 1 < data.Count; i += 1) { var newCar = new RoverModel(_container); if (newCar.StartRover(_length_x, _length_y, data[i], data[i + 1])) { _rovers.Add(newCar); } } if (_rovers.Count == 0) { ReleaseAttributes(); return(false); } return(true); }