@Before
  public void before() throws Exception {
    intersector = new ConfigurableRayBodyIntersector();
    intersector.registerDefaults();

    rectBody = bodyWith(new Rect(50, 50, 10, 10));
  }
  @Test
  public void RayLongEnoughButNotLinedUp_ReturnsNull() {
    Ray ray = new Ray(new Vector2f(10, 50), new Vector2f(50, 80));

    assertNull(intersector.intersect(ray, rectBody));
  }
  @Test
  public void RayGoesAlongRightEdgeFromBelow_ReturnsPointAtRectsLowerRightCorner() {
    Ray ray = new Ray(new Vector2f(55, 70), new Vector2f(55, 10));

    assertEquals(new Vector2f(55, 55), intersector.intersect(ray, rectBody));
  }
  @Test
  public void RayGoesAlongLeftEdgeFromTop_ReturnsPointAtRectsUpperLeftCorner() {
    Ray ray = new Ray(new Vector2f(45, 10), new Vector2f(45, 70));

    assertEquals(new Vector2f(45, 45), intersector.intersect(ray, rectBody));
  }
  @Test
  public void RayGoesAlongTopEdgeFromRight_ReturnsPointAtRectsUpperRightCorner() {
    Ray ray = new Ray(new Vector2f(75, 45), new Vector2f(10, 45));

    assertEquals(new Vector2f(55, 45), intersector.intersect(ray, rectBody));
  }
  @Test
  public void RayGoesAlongBottomEdgeFromLeft_ReturnsPointAtRectsLowerLeftCorner() {
    Ray ray = new Ray(new Vector2f(10, 55), new Vector2f(75, 55));

    assertEquals(new Vector2f(45, 55), intersector.intersect(ray, rectBody));
  }
  @Test
  public void RayGoesThroughRectFromBelow_ReturnsPointOnBottom() {
    Ray ray = new Ray(new Vector2f(48, 70), new Vector2f(48, 10));

    assertEquals(new Vector2f(48, 55), intersector.intersect(ray, rectBody));
  }
  @Test
  public void RayGoesThroughRectFromAbove_ReturnsPointOnTop() {
    Ray ray = new Ray(new Vector2f(48, 10), new Vector2f(48, 70));

    assertEquals(new Vector2f(48, 45), intersector.intersect(ray, rectBody));
  }
  @Test
  public void RayGoesThroughRectFromRight_ReturnsPointOnRight() {
    Ray ray = new Ray(new Vector2f(70, 48), new Vector2f(10, 48));

    assertEquals(new Vector2f(55, 48), intersector.intersect(ray, rectBody));
  }
  @Test
  public void RayStartsAtRectEdge_ReturnsPointAtRayOrigin() {
    Ray ray = new Ray(new Vector2f(45, 50), new Vector2f(80, 50));

    assertEquals(new Vector2f(45, 50), intersector.intersect(ray, rectBody));
  }