### Question:
Line extends AUnboundedLine implements ILine { @Override public ILine getOrthogonalLine() { IVector2 sV = supportVector(); IVector2 dV = directionVector().turnNew(Math.PI / 2); return createNewFromVectorCopy(sV, dV); } private  Line(final IVector2 supportVector, final IVector2 directionVector); static ILine fromPoints(final IVector2 supportPointA, final IVector2 supportPointB); static ILine fromDirection(final IVector2 supportVector, final IVector2 directionVector); @Override ILine copy(); @Override final boolean equals(final Object other); @Override final int hashCode(); @Override Optional<Double> getYIntercept(); @Override Optional<Double> getXValue(final double y); @Override Optional<Double> getYValue(final double x); @Override ILine getOrthogonalLine(); @Override IVector2 closestPointOnLine(final IVector2 point); @Override ILine toLine(); @Override Optional<IVector2> intersectLine(final ILine other); @Override Optional<IVector2> intersectHalfLine(final IHalfLine halfLine); @Override Optional<IVector2> intersectSegment(final ILineSegment segment); @Override String toString();  }### Answer:
@Test public void testGetOrthogonalLine() { for (int degAngle = 0; degAngle <= 360; degAngle += 10) { double radAngle = Math.toRadians(degAngle); IVector2 sV = Vector2.fromXY(degAngle, -degAngle); IVector2 dV = Vector2.fromAngle(radAngle); ILine line = Line.fromDirection(sV, dV); IVector2 turnedDV = dV.turnNew(Math.PI / 2); ILine turnedLine = line.getOrthogonalLine(); assertThat(turnedLine.supportVector(), is(sV)); assertThat(turnedLine.directionVector().isParallelTo(turnedDV), is(true)); } }