public void TryMoveAhead_NullPosition_ThrowArgumentNullException()
        {
            //Arrange
            ICardinalDirectionManager cardinalDirectionManager = new SouthManager();

            //Act and Assert
            Assert.Throws <ArgumentNullException>(() => cardinalDirectionManager.TryMoveAhead(null));
        }
        public void TurnLeft_FromSouth_ToEast()
        {
            //Arrange
            ICardinalDirectionManager cardinalDirectionManager = new SouthManager();

            //Act
            ICardinalDirectionManager leftFacing = cardinalDirectionManager.TurnLeft();

            //Assert
            Assert.AreEqual(CardinalDirection.EAST, leftFacing.CardinalDirection);
        }
        public void TurnRight_FromSouth_ToWest()
        {
            //Arrange
            ICardinalDirectionManager cardinalDirectionManager = new SouthManager();

            //Act
            ICardinalDirectionManager rightFacing = cardinalDirectionManager.TurnRight();

            //Assert
            Assert.AreEqual(CardinalDirection.WEST, rightFacing.CardinalDirection);
        }
        public void CardinalDirection_ReadCardinalDirection_South()
        {
            //Arrange
            ICardinalDirectionManager cardinalDirectionManager = new SouthManager();

            //Act
            CardinalDirection facing = cardinalDirectionManager.CardinalDirection;

            //Assert
            Assert.AreEqual(CardinalDirection.SOUTH, facing);
        }
        public void TryMoveAhead_FromSouthestPosition_DontMove()
        {
            //Arrange
            var currentPosition = new Position(0, 0);
            ICardinalDirectionManager cardinalDirectionManager = new SouthManager();

            //Act
            Position finalPosition = cardinalDirectionManager.TryMoveAhead(currentPosition);

            //Assert
            Assert.AreEqual(0, finalPosition.X);
            Assert.AreEqual(0, finalPosition.Y);
        }
        public void TryMoveAhead_FromNotBorderPosition_DecreaseY()
        {
            //Arrange
            var currentPosition = new Position(2, 2);
            ICardinalDirectionManager cardinalDirectionManager = new SouthManager();

            //Act
            Position finalPosition = cardinalDirectionManager.TryMoveAhead(currentPosition);

            //Assert
            Assert.AreEqual(2, finalPosition.X);
            Assert.AreEqual(1, finalPosition.Y);
        }