public void Move_Robot_Before_Placing_On_Table()
        {
            var robotInstructions = new RobotInstructions();

            var moveResult = robotInstructions.Move();
            Assert.AreEqual(moveResult, false);
            Assert.AreEqual("Robot can not move!! Robot is not placed on the table.", robotInstructions._error);
        }
        public void Move_Robot_After_Placing_On_Table_But_Out_Of_Table_Boundary()
        {
            var robotInstructions = new RobotInstructions();

            var placeResult = robotInstructions.Place(0, 0, FacingDirection.South);
            Assert.AreEqual(placeResult, true);

            var moveResult = robotInstructions.Move();
            Assert.AreEqual("Can not Move the Robot out of the table boundary.", robotInstructions._error);
        }
        public void Move_Robot_After_Placing_On_Table()
        {
            var robotInstructions = new RobotInstructions();

            var placeResult = robotInstructions.Place(0, 0, FacingDirection.North);
            Assert.AreEqual(placeResult, true);

            var moveResult = robotInstructions.Move();
            Assert.AreEqual(moveResult, true);
        }
        public void Report_After_Placing_On_Table_After_Moving()
        {
            var robotInstructions = new RobotInstructions();

            var placeResult = robotInstructions.Place(0, 0, FacingDirection.North);
            Assert.AreEqual(placeResult, true);

            var moveResult = robotInstructions.Move();
            Assert.AreEqual(moveResult, true);

            var reportResult = robotInstructions.Report();
            Assert.AreEqual("0,1,NORTH", reportResult);
        }
        public void Move_Move_Rotate_Left_Move_Robot_After_Placing_On_Table_Report()
        {
            var robotInstructions = new RobotInstructions();

            var placeResult = robotInstructions.Place(1,2, FacingDirection.East);
            Assert.AreEqual(placeResult, true);

            var moveResult1 = robotInstructions.Move();
            Assert.AreEqual(moveResult1, true);

            var moveResult2 = robotInstructions.Move();
            Assert.AreEqual(moveResult2, true);

            var rotateResult = robotInstructions.Left();
            Assert.AreEqual(rotateResult, true);

            var moveResult3 = robotInstructions.Move();
            Assert.AreEqual(moveResult3, true);

            var reportResult = robotInstructions.Report();
            Assert.AreEqual("3,3,NORTH", reportResult);
        }
        public void Report_After_Placing_On_Table_After_Rotating_And_Moving()
        {
            var robotInstructions = new RobotInstructions();

            var placeResult = robotInstructions.Place(0, 0, FacingDirection.North);
            Assert.AreEqual(placeResult, true);

            var rightRotateResult = robotInstructions.Right();
            Assert.AreEqual(rightRotateResult, true);

            var moveResult = robotInstructions.Move();
            Assert.AreEqual(moveResult, true);

            var reportResult = robotInstructions.Report();
            Assert.AreEqual("1,0,EAST", reportResult);
        }