*/
@Test
public void testGeographic3D_ZFirst() throws Exception {
final CoordinateReferenceSystem sourceCRS = crsFactory.createFromWKT(Z_NAD27);
final CoordinateReferenceSystem targetCRS = crsFactory.createFromWKT(WGS84_Z);
final CoordinateOperation op = opFactory.createOperation(sourceCRS, targetCRS);
final MathTransform mt = op.getMathTransform();
assertNotSame(sourceCRS, op.getSourceCRS());
assertNotSame(targetCRS, op.getTargetCRS());
assertTrue(op instanceof Transformation);
assertTrue(sourceCRS instanceof CompoundCRS);
assertTrue(op.getSourceCRS() instanceof GeographicCRS); // 2D + 1D ---> 3D
assertTrue(targetCRS instanceof CompoundCRS);
assertTrue(op.getTargetCRS() instanceof GeographicCRS); // 2D + 1D ---> 3D
assertFalse(sourceCRS.equals(targetCRS));
assertFalse(op.getSourceCRS().equals(op.getTargetCRS()));
assertFalse(mt.isIdentity());
assertInterfaced(mt);
// Note: Expected values below were computed with Geotools (not an external library).
// However, it was tested with both Molodenski and Geocentric transformations.
assertTransformEquals3_3(mt, 0, 0, 0,