### Question:
Line extends AUnboundedLine implements ILine { public static ILine fromPoints(final IVector2 supportPointA, final IVector2 supportPointB) { return createNewFromVectorCopy(supportPointA, supportPointB.subtractNew(supportPointA)); } 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 testFromPoints() { IVector2 a = Vector2.fromXY(0, 0); IVector2 b = Vector2.fromXY(1, 1); IVector2 aToB = b.subtractNew(a); ILine line = Line.fromPoints(a, b); assertEquals(line.supportVector(), a); assertFalse(line.supportVector() == a); assertTrue(line.directionVector().isParallelTo(aToB)); line = Line.fromPoints(a, a); assertThat(line.supportVector(), is(a)); assertThat(line.directionVector(), is(Vector2f.ZERO_VECTOR)); }