public IEnumerable <XYPoint> GetAllAdjacentPoints( eDirection startingDirection = eDirection.North, eDirectionChange deltaDirection = eDirectionChange.Clockwise) { // ReSharper disable once RedundantArgumentDefaultValue return(GetAdjacentPoints(startingDirection, deltaDirection, eAdjacencyType.All)); }
private static void AssertChangeIsCorrectlyApplied( eDirection startDirection, eDirectionChange deltaDirection, eDirection expectedDirection) { var resultantDirectionFromTurn = startDirection.Turn(deltaDirection); var resultantDirectionFromApplyTo = deltaDirection.ApplyTo(startDirection); Assert.AreEqual(expectedDirection, resultantDirectionFromTurn); Assert.AreEqual(expectedDirection, resultantDirectionFromApplyTo); }
public IEnumerable <XYPoint> GetAdjacentPoints( eDirection startingDirection = eDirection.North, eDirectionChange deltaDirection = eDirectionChange.Clockwise, eAdjacencyType adjacencyType = eAdjacencyType.All) { var centrePoint = this; foreach (var currentDirection in DirectionAccessor.Enumerate(startingDirection, deltaDirection)) { if (adjacencyType.HasFlag(eAdjacencyType.Orthogonal)) { yield return(centrePoint.MoveOne(currentDirection)); } if (adjacencyType.HasFlag(eAdjacencyType.Diagonal)) { eDirection nextDirection = currentDirection.Turn(deltaDirection); yield return(centrePoint.MoveOne(currentDirection).MoveOne(nextDirection)); } } // ReSharper disable once RedundantJumpStatement yield break; }
public static IEnumerable <eDirection> Enumerate(eDirection startingDirection = eDirection.North, eDirectionChange deltaDirection = eDirectionChange.Clockwise) { eDirection currentDirection = startingDirection; for (int i = 0; i < 4; i++) { yield return(currentDirection); currentDirection = currentDirection.Turn(deltaDirection); } // ReSharper disable once RedundantJumpStatement yield break; }
public static eDirection Turn(this eDirection currentDirection, eDirectionChange directionToMove) { return(FromInt((int)currentDirection + (int)directionToMove)); }
public IEnumerable <XYPoint> GetEdgeAdjacentPoints( eDirection startingDirection = eDirection.North, eDirectionChange deltaDirection = eDirectionChange.Clockwise) { return(GetAdjacentPoints(startingDirection, deltaDirection, eAdjacencyType.Orthogonal)); }
public static eDirection ApplyTo(this eDirectionChange change, eDirection originalDirection) { return(originalDirection.Turn(change)); }
public void DirectionEnumerationWorks(eDirection startingDirection, eDirectionChange deltaDirection, eDirection[] expectedOutput) { CollectionAssert.AreEqual(expectedOutput, DirectionAccessor.Enumerate(startingDirection, deltaDirection)); }