public void NextDirection_ShouldReturnCorrectDirection(DirectionEnum currentEnum, MoveBehaviorEnum moveBehavior, DirectionEnum expected) { //Arrange & Act var actualDirection = currentEnum.NextDirection(moveBehavior); //Assert Assert.Equal(expected, actualDirection); }
public Position Move(MoveBehaviorEnum currentBehavior, DirectionEnum currentDirection, Point currentPosition) { var nextPosition = currentPosition; var nextDirection = currentDirection.NextDirection(currentBehavior); if (currentBehavior == MoveBehaviorEnum.Move) { switch (nextDirection) { case DirectionEnum.East: nextPosition.Y = currentPosition.Y + 1; break; case DirectionEnum.West: nextPosition.Y = currentPosition.Y - 1; break; case DirectionEnum.North: nextPosition.X = currentPosition.X - 1; break; case DirectionEnum.South: nextPosition.X = currentPosition.X + 1; break; default: throw new ArgumentOutOfRangeException(); } } // Check boundary of boarsize if (nextPosition.X < 0) { nextPosition.X = 0; } else if (nextPosition.X > _gameSetting.BoardSize.Height - 1) { nextPosition.X = _gameSetting.BoardSize.Height - 1; } if (nextPosition.Y < 0) { nextPosition.Y = 0; } else if (nextPosition.Y > _gameSetting.BoardSize.Width - 1) { nextPosition.Y = _gameSetting.BoardSize.Width - 1; } return(new Position { Direction = nextDirection, CurrentPosition = nextPosition }); }