Example #1
0
        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();
            }
        }
Example #3
0
        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");
            }
        }
Example #4
0
        private void assertRoverIsInPosition(string position)
        {
            var storedRover = (Rover)_storage.Read(ROVER_ID);

            Assert.AreEqual(position, storedRover.Position);
        }