private void assertRoverTookThePhotoForPosition(string position) { var roverData = (PictureData)_storage.Read(ROVER_ID); var pictures = roverData.Pictures; var picturesInPosition = pictures.Where(p => p.Key == position); Assert.IsTrue(picturesInPosition.Count() > 0); }
public void TakePhoto(string roverId) { var bitmap = _goPro.TakePhotos("default obturation", "0X", 1); var rover = (PictureData)_storage.Read(roverId); var position = rover.Position; rover.Pictures.Add(position, bitmap); if (rover.Pictures.Count > 3) { throw new PhotoStorageFullException(); } }
public void Move(string roverId, string movements) { object roverObj = _storage.Read(roverId); if (roverObj != null) { var roverData = (Rover)roverObj; var plateauObj = _storage.Read(roverData.PlateauId); if (plateauObj != null) { var plateau = (Plateau)plateauObj; var position = roverData.Position; var positionArray = position.Split(','); var initialX = int.Parse(positionArray[0]); var initialY = int.Parse(positionArray[1]); var initialOrientation = positionArray[2]; var movementsArray = movements.ToArray(); var currentX = initialX; var currentY = initialY; var currentOrientation = initialOrientation; var plateauDimensions = plateau.Dimensions; var plateauDimensionsArray = plateau.Dimensions.Split(','); maxX = plateauDimensionsArray[0]; maxY = plateauDimensionsArray[1]; foreach (var movement in movementsArray) { switch (movement) { case 'R': if (currentOrientation == "N") { currentOrientation = "E"; } break; case 'M': if (currentOrientation == "E") { currentX++; } break; } roverData.Position = string.Join(',', new string[] { currentX.ToString(), currentY.ToString(), currentOrientation }); } } else { throw new Exception("Plateau not found"); } } else { throw new Exception("Rover not found"); } }
private void assertRoverIsInPosition(string position) { var storedRover = (Rover)_storage.Read(ROVER_ID); Assert.AreEqual(position, storedRover.Position); }