예제 #1
0
        static void Main(string[] args)
        {
            string         input           = string.Empty;
            IRobotPosition myHorsePosition = new RobotPositionService();

            while (true)
            {
                input = Console.ReadLine();


                try
                {
                    string[] temp = input.Split();
                    switch (temp[0].ToUpper())
                    {
                    case "PLACE":
                        var temp2 = temp[1].Split(",");
                        if (temp2.Length == 3)
                        {
                            myHorsePosition.place(Int32.Parse(temp2[0]),
                                                  Int32.Parse(temp2[1]),
                                                  temp2[2]);
                        }
                        else
                        {
                            Console.WriteLine("Invalid String");
                        }
                        break;

                    case "LEFT":
                        myHorsePosition.left();
                        break;

                    case "RIGHT":
                        myHorsePosition.right();
                        break;

                    case "MOVE":
                        myHorsePosition.move();
                        break;

                    case "REPORT":
                        myHorsePosition.report();
                        break;

                    default:
                        break;
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }
            }
        }
예제 #2
0
        public void Test_RobotPositionService_GetGridIdentifer()
        {
            IDataService          dataService    = new DataService();
            IRobotPositionService service        = new RobotPositionService(dataService);
            IGridCoordinate       gridCoordinate = new GridCoordinate {
                MaxXCoordinate = 5, MaxYCoordinate = 3
            };
            IGridIdentifer gridIdentifer = service.GetGridIdentifer(gridCoordinate);

            Assert.AreEqual(1, gridIdentifer.GridID);
        }
예제 #3
0
        public void Test_RobotPositionService_GetFinalPostion()
        {
            IDataService          dataService       = new DataService();
            IRobotPositionService service           = new RobotPositionService(dataService);
            IPositionStarting     positionStarting1 = new PositionStarting
            {
                StartingXPosition = 1,
                StartingYPosition = 1,
                Orientation       = 'E',
                Instructions      = "RFRFRFRF"
            };
            IPositionFinal positionFinal1 = service.GetFinalPostion(1, positionStarting1);

            Assert.AreEqual(1, positionFinal1.FinalXPosition);
            Assert.AreEqual(1, positionFinal1.FinalYPosition);
            Assert.AreEqual('E', positionFinal1.FinalOrientation);
            Assert.AreEqual(false, positionFinal1.Lost);

            IPositionStarting positionStarting2 = new PositionStarting
            {
                StartingXPosition = 3,
                StartingYPosition = 2,
                Orientation       = 'N',
                Instructions      = "FRRFLLFFRRFLL"
            };
            IPositionFinal positionFinal2 = service.GetFinalPostion(1, positionStarting2);

            Assert.AreEqual(3, positionFinal2.FinalXPosition);
            Assert.AreEqual(3, positionFinal2.FinalYPosition);
            Assert.AreEqual('N', positionFinal2.FinalOrientation);
            Assert.AreEqual(true, positionFinal2.Lost);

            IPositionStarting positionStarting3 = new PositionStarting
            {
                StartingXPosition = 0,
                StartingYPosition = 3,
                Orientation       = 'W',
                Instructions      = "LLFFFLFLFL"
            };
            IPositionFinal positionFinal3 = service.GetFinalPostion(1, positionStarting3);

            Assert.AreEqual(2, positionFinal3.FinalXPosition);
            Assert.AreEqual(3, positionFinal3.FinalYPosition);
            Assert.AreEqual('S', positionFinal3.FinalOrientation);
            Assert.AreEqual(false, positionFinal3.Lost);
        }