*/
@Test
public void testCreation() throws FactoryException {
final CoordinateOperationFactory opf = ReferencingFactoryFinder.getCoordinateOperationFactory(null);
CoordinateReferenceSystem sourceCRS, targetCRS;
CoordinateOperation operation;
ParameterValueGroup parameters;
sourceCRS = factory.createCoordinateReferenceSystem("4274");
assertEquals("4274", getIdentifier(sourceCRS));
assertTrue(sourceCRS instanceof GeographicCRS);
assertEquals(2, sourceCRS.getCoordinateSystem().getDimension());
sourceCRS = factory.createCoordinateReferenceSystem("EPSG:4140");
assertEquals("4140", getIdentifier(sourceCRS));
assertTrue(sourceCRS instanceof GeographicCRS);
assertEquals(2, sourceCRS.getCoordinateSystem().getDimension());
sourceCRS = factory.createCoordinateReferenceSystem("2027");
assertEquals("2027", getIdentifier(sourceCRS));
assertTrue(sourceCRS instanceof ProjectedCRS);
assertEquals(2, sourceCRS.getCoordinateSystem().getDimension());
parameters = ((ProjectedCRS) sourceCRS).getConversionFromBase().getParameterValues();
assertEquals( -93, parameters.parameter("central_meridian" ).doubleValue(), EPS);
assertEquals( 0, parameters.parameter("latitude_of_origin").doubleValue(), EPS);
assertEquals(0.9996, parameters.parameter("scale_factor" ).doubleValue(), EPS);
assertEquals(500000, parameters.parameter("false_easting" ).doubleValue(), EPS);
assertEquals( 0, parameters.parameter("false_northing" ).doubleValue(), EPS);
sourceCRS = factory.createCoordinateReferenceSystem(" EPSG : 2442 ");
assertEquals("2442", getIdentifier(sourceCRS));
assertTrue(sourceCRS instanceof ProjectedCRS);
assertEquals(2, sourceCRS.getCoordinateSystem().getDimension());
parameters = ((ProjectedCRS) sourceCRS).getConversionFromBase().getParameterValues();
assertEquals( 135, parameters.parameter("central_meridian" ).doubleValue(), EPS);
assertEquals( 0, parameters.parameter("latitude_of_origin").doubleValue(), EPS);
assertEquals( 1, parameters.parameter("scale_factor" ).doubleValue(), EPS);
assertEquals(500000, parameters.parameter("false_easting" ).doubleValue(), EPS);
assertEquals( 0, parameters.parameter("false_northing" ).doubleValue(), EPS);
sourceCRS = factory.createCoordinateReferenceSystem("EPSG:4915");
assertEquals("4915", getIdentifier(sourceCRS));
assertTrue(sourceCRS instanceof GeocentricCRS);
assertEquals(3, sourceCRS.getCoordinateSystem().getDimension());
sourceCRS = factory.createCoordinateReferenceSystem("EPSG:4993");
assertEquals("4993", getIdentifier(sourceCRS));
assertTrue(sourceCRS instanceof GeographicCRS);
assertEquals(3, sourceCRS.getCoordinateSystem().getDimension());
sourceCRS = factory.createCoordinateReferenceSystem("EPSG:5735");
assertEquals("5735", getIdentifier(sourceCRS));
assertTrue(sourceCRS instanceof VerticalCRS);
assertEquals(1, sourceCRS.getCoordinateSystem().getDimension());
sourceCRS = factory.createCoordinateReferenceSystem("EPSG:5801");
assertEquals("5801", getIdentifier(sourceCRS));
assertTrue(sourceCRS instanceof EngineeringCRS);
assertEquals(2, sourceCRS.getCoordinateSystem().getDimension());
sourceCRS = factory.createCoordinateReferenceSystem("EPSG:7400");
assertEquals("7400", getIdentifier(sourceCRS));
assertTrue(sourceCRS instanceof CompoundCRS);
assertEquals(3, sourceCRS.getCoordinateSystem().getDimension());
// GeographicCRS without datum
sourceCRS = factory.createCoordinateReferenceSystem("63266405");
assertTrue(sourceCRS instanceof GeographicCRS);
assertEquals("WGS 84 (deg)", sourceCRS.getName().getCode());
assertEquals(2, sourceCRS.getCoordinateSystem().getDimension());
// Operations
sourceCRS = factory.createCoordinateReferenceSystem("4273");
targetCRS = factory.createCoordinateReferenceSystem("4979");
operation = opf.createOperation(sourceCRS, targetCRS);
assertNotSame(sourceCRS, targetCRS);
assertFalse(operation.getMathTransform().isIdentity());
assertSame(sourceCRS, factory.createCoordinateReferenceSystem("EPSG:4273"));
assertSame(targetCRS, factory.createCoordinateReferenceSystem("EPSG:4979"));
assertSame(sourceCRS, factory.createCoordinateReferenceSystem(" EPSG : 4273 "));
assertSame(targetCRS, factory.createCoordinateReferenceSystem(" EPSG : 4979 "));
// CRS with "South along 180 deg" and "South along 90 deg East" axis
sourceCRS = factory.createCoordinateReferenceSystem("EPSG:32661");
targetCRS = factory.createCoordinateReferenceSystem("4326");
operation = opf.createOperation(sourceCRS, targetCRS);
final MathTransform transform = operation.getMathTransform();
final CoordinateSystem sourceCS = sourceCRS.getCoordinateSystem();
final CoordinateSystemAxis axis0 = sourceCS.getAxis(0);
final CoordinateSystemAxis axis1 = sourceCS.getAxis(1);
assertEquals("Northing", axis0.getName().getCode());
assertEquals("Easting", axis1.getName().getCode());