### Question:
RotatedLatLon extends AbstractProjection { public LatLonPoint projToLatLon(ProjectionPoint ppt) { double[] lonlat = new double[2]; lonlat[0] = ppt.getX(); lonlat[1] = ppt.getY(); double[] rlonlat = rotate(lonlat, -polerotate, -lonpole, -sinDlat); return LatLonPoint.create(rlonlat[1], rlonlat[0]); } RotatedLatLon();  RotatedLatLon(double southPoleLat, double southPoleLon, double southPoleAngle); double getLonPole(); double getPoleRotate(); double getSinDlat(); @Override Projection constructCopy(); @Override String paramsToString(); ProjectionPoint latLonToProj(LatLonPoint latlon); LatLonPoint projToLatLon(ProjectionPoint ppt); boolean crossSeam(ProjectionPoint pt1, ProjectionPoint pt2); @Override boolean equals(Object o); @Override int hashCode(); static final String GRID_MAPPING_NAME; static final String GRID_SOUTH_POLE_LONGITUDE; static final String GRID_SOUTH_POLE_LATITUDE; static final String GRID_SOUTH_POLE_ANGLE; }### Answer:
@Test public void testProjToLatLon() { ProjectionPoint p = ProjectionPoint.create(0, 0); LatLonPoint latlonResult = proj.projToLatLon(p); Assert.assertEquals("Unexpected longitude", 254 - 360, latlonResult.getLongitude(), TOLERANCE); Assert.assertEquals("Unexpected latitude", 54, latlonResult.getLatitude(), TOLERANCE); }