private static ProgressLine[] GetProgressLines(
            Point origin,
            Direction entranceDirection,
            Direction exitDirection)
        {
            var lines = new List <ProgressLine>();

            var combinedDirection = DirectionHelper.GetCombinedDirection(
                entranceDirection,
                exitDirection);

            switch (combinedDirection)
            {
            case Direction.Right:
                lines.AddRange(GetRightProgressLines(origin));
                break;

            case Direction.Left:
                lines.AddRange(GetLeftProgressLines(origin));
                break;

            case Direction.Top:
                lines.AddRange(GetTopProgressLines(origin));
                break;

            case Direction.Bottom:
                lines.AddRange(GetBottomProgressLines(origin));
                break;

            case Direction.BottomLeft:
                lines.AddRange(GetBottomLeftProgressLines(origin));
                break;

            case Direction.BottomRight:
                lines.AddRange(GetBottomRightProgressLines(origin));
                break;

            case Direction.TopLeft:
                lines.AddRange(GetTopLeftProgressLines(origin));
                break;

            case Direction.TopRight:
                lines.AddRange(GetTopRightProgressLines(origin));
                break;
            }

            return(lines.ToArray());
        }
 public void CombinedDirectionWorks()
 {
     Assert.AreEqual(Direction.BottomRight, DirectionHelper.GetCombinedDirection(Direction.Bottom, Direction.Right));
     Assert.AreEqual(Direction.TopLeft, DirectionHelper.GetCombinedDirection(Direction.Left, Direction.Top));
 }