Exemplo n.º 1
0
 public IEnumerable <XYPoint> GetAllAdjacentPoints(
     eDirection startingDirection    = eDirection.North,
     eDirectionChange deltaDirection = eDirectionChange.Clockwise)
 {
     // ReSharper disable once RedundantArgumentDefaultValue
     return(GetAdjacentPoints(startingDirection, deltaDirection, eAdjacencyType.All));
 }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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;
        }
Exemplo n.º 4
0
        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;
        }
Exemplo n.º 5
0
 public static eDirection Turn(this eDirection currentDirection, eDirectionChange directionToMove)
 {
     return(FromInt((int)currentDirection + (int)directionToMove));
 }
Exemplo n.º 6
0
 public IEnumerable <XYPoint> GetEdgeAdjacentPoints(
     eDirection startingDirection    = eDirection.North,
     eDirectionChange deltaDirection = eDirectionChange.Clockwise)
 {
     return(GetAdjacentPoints(startingDirection, deltaDirection, eAdjacencyType.Orthogonal));
 }
Exemplo n.º 7
0
 public static eDirection ApplyTo(this eDirectionChange change, eDirection originalDirection)
 {
     return(originalDirection.Turn(change));
 }
Exemplo n.º 8
0
 public void DirectionEnumerationWorks(eDirection startingDirection, eDirectionChange deltaDirection, eDirection[] expectedOutput)
 {
     CollectionAssert.AreEqual(expectedOutput, DirectionAccessor.Enumerate(startingDirection, deltaDirection));
 }