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 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 ApplyTo(this eDirectionChange change, eDirection originalDirection) { return(originalDirection.Turn(change)); }