public void WhenFindingClosestEdgePointResultsAreValid() { var someAabb = new BoundingRectangle(100, 100, 120, 120); var diagonalPoint = new Vector2(121, 121); var topSidePoint = new Vector2(110, 99); var rightSidePoint = new Vector2(121, 110); var bottomSidePoint = new Vector2(110, 121); var leftSidePoint = new Vector2(99, 110); var farAwayPoint = new Vector2(-100000000, 0); var containedCenterPoint = new Vector2(110, 110); var containedPoint = new Vector2(115, 115); var edgePoint = new Vector2(100, 110); Assert.That(someAabb.ClosestEdgePoint(diagonalPoint), Is.EqualTo(new Vector2(120, 120))); Assert.That(someAabb.ClosestEdgePoint(topSidePoint), Is.EqualTo(new Vector2(110, 100))); Assert.That(someAabb.ClosestEdgePoint(rightSidePoint), Is.EqualTo(new Vector2(120, 110))); Assert.That(someAabb.ClosestEdgePoint(bottomSidePoint), Is.EqualTo(new Vector2(110, 120))); Assert.That(someAabb.ClosestEdgePoint(leftSidePoint), Is.EqualTo(new Vector2(100, 110))); Assert.That(someAabb.ClosestEdgePoint(farAwayPoint), Is.EqualTo(new Vector2(100, 100))); Assert.That(someAabb.ClosestEdgePoint(containedCenterPoint), Is.EqualTo(new Vector2(110, 100))); Assert.That(someAabb.ClosestEdgePoint(containedPoint), Is.EqualTo(new Vector2(115, 120))); Assert.That(someAabb.ClosestEdgePoint(edgePoint), Is.EqualTo(edgePoint)); }