### Question:
MSGnavigation extends AbstractProjection { @Override public Projection constructCopy() { return new MSGnavigation(lat0, Math.toDegrees(lon0), 1000 * major_axis, 1000 * minor_axis, 1000 * sat_height, scale_x, scale_y); } MSGnavigation();  MSGnavigation(double lat0, double lon0, double major_axis, double minor_axis, double sat_height,
      double scale_x, double scale_y); @Override String toString(); @Override Projection constructCopy(); @Override String paramsToString(); @Override ProjectionPoint latLonToProj(LatLonPoint latlon); @Override LatLonPoint projToLatLon(ProjectionPoint ppt); @Override boolean crossSeam(ProjectionPoint pt1, ProjectionPoint pt2); @Override boolean equals(Object o); @Override int hashCode(); @Override ProjectionRect latLonToProjBB(LatLonRect rect); double getLon0(); static final String HEIGHT_FROM_EARTH_CENTER; static final String SCALE_X; static final String SCALE_Y; }### Answer:
@Test public void testConstructCopy() throws Exception { MSGnavigation msgNav = new MSGnavigation(0.0, 180, R_EQ, R_POL, SAT_HEIGHT, SAT_HEIGHT - R_EQ, SAT_HEIGHT - R_EQ); Assert.assertEquals(Math.PI, msgNav.getLon0(), 1e-6); MSGnavigation msgNavCopy1 = (MSGnavigation) msgNav.constructCopy(); Assert.assertEquals(Math.PI, msgNavCopy1.getLon0(), 1e-6); MSGnavigation msgNavCopy2 = (MSGnavigation) msgNavCopy1.constructCopy(); Assert.assertEquals(Math.PI, msgNavCopy2.getLon0(), 1e-6); }