### Question:
G1Point implements Group<G1Point> { public static G1Point random(long seed) { return random(new Random(seed)); } G1Point();  G1Point(ECP point); static G1Point random(long seed); static G1Point fromBytes(Bytes bytes); static G1Point fromBytesCompressed(Bytes bytes); static ECP scaleWithCofactor(ECP point); @Override G1Point add(G1Point other); @Override G1Point mul(Scalar scalar); G1Point neg(); ECP getPoint(); Bytes toBytes(); Bytes toBytesCompressed(); static boolean isInGroup(ECP point); ECP ecpPoint(); @Override String toString(); @Override int hashCode(); @Override boolean equals(Object obj);  }### Answer:
@Test void succeedsWhenSameSeedGivesSamePoint() { G1Point point1 = G1Point.random(42L); G1Point point2 = G1Point.random(42L); assertEquals(point1, point2); }
@Test void succeedsWhenDifferentSeedsGiveDifferentPoints() { G1Point point1 = G1Point.random(1L); G1Point point2 = G1Point.random(2L); assertNotEquals(point1, point2); }
@Test void succeedsWhenEqualsReturnsTrueForTheSamePoint() { G1Point point = G1Point.random(65L); assertEquals(point, point); }
@Test void succeedsWhenEqualsReturnsFalseForDifferentPoints() { G1Point point1 = G1Point.random(42L); G1Point point2 = G1Point.random(43L); assertNotEquals(point1, point2); }