예제 #1
0
        public void Test_DataService_SaveOffPosition()
        {
            IPositionFinal offPositionFinal1 = new PositionFinal {
                FinalXPosition = 5, FinalYPosition = 0, FinalOrientation = 'E', Lost = true
            };
            var result1 = dataService.SaveOffPosition(2, offPositionFinal1);

            Assert.IsTrue(result1);

            IPositionFinal offPositionFinal2 = new PositionFinal {
                FinalXPosition = 0, FinalYPosition = 5, FinalOrientation = 'N', Lost = false
            };
            var result2 = dataService.SaveOffPosition(2, offPositionFinal2);

            Assert.IsFalse(result2);
        }
예제 #2
0
        public IPositionFinal GetFinalPostion(int gridId, IPositionStarting positionStarting)
        {
            IGridCoordinate gridCoordinate = _dataService.GetGridCoordinateByGridId(gridId);
            IPositionFinal  positionFinal  = new PositionFinal
            {
                FinalXPosition   = positionStarting.StartingXPosition,
                FinalYPosition   = positionStarting.StartingYPosition,
                FinalOrientation = positionStarting.Orientation,
                Lost             = false
            };

            char[] array = positionStarting.Instructions.ToCharArray();
            foreach (char instruction in array)
            {
                if (positionFinal.Lost)
                {
                    _dataService.SaveOffPosition(gridId, positionFinal);
                    break;
                }
                switch (instruction)
                {
                case 'L':
                    LeftInstructionProcess(positionFinal);
                    break;

                case 'R':
                    RightInstructionProcess(positionFinal);
                    break;

                case 'F':
                    if (!_dataService.IsOffPosition(gridId, positionFinal))
                    {
                        ForwardInstructionProcess(positionFinal, gridCoordinate);
                    }
                    break;

                default:
                    break;
                }
            }
            return(positionFinal);
        }