### Question:
LambertAzimuthalEqualArea extends UnitaryProjection { public static MathTransform2D create(final OperationMethod descriptor, final ParameterValueGroup values) { final Parameters parameters = Parameters.castOrWrap(values); final LambertAzimuthalEqualArea projection; if (isSpherical(parameters)) { projection = new Spherical(descriptor, parameters); } else { projection = new LambertAzimuthalEqualArea(descriptor, parameters); } try { return (MathTransform2D) projection.createMapProjection( org.apache.sis.internal.system.DefaultFactories.forBuildin( org.opengis.referencing.operation.MathTransformFactory.class)); } catch (org.opengis.util.FactoryException e) { throw new IllegalArgumentException(e); } } protected  LambertAzimuthalEqualArea(final OperationMethod method, final Parameters parameters); static MathTransform2D create(final OperationMethod descriptor,
                                         final ParameterValueGroup values); @Override ParameterDescriptorGroup getParameterDescriptors(); @Override Matrix transform(final double[] srcPts, final int srcOff,
                            final double[] dstPts, final int dstOff,
                            final boolean derivate); @Override boolean equals(final Object object, final ComparisonMode mode);  }### Answer:
@Test public void testUnitaryOnEllipse() throws TransformException { for (int phi=-90; phi<=90; phi+=15) { transform = create(true, phi); tolerance = 1E-2; validate(); assertFalse(isSpherical()); final double delta = toRadians(100.0 / 60) / 1852; derivativeDeltas = new double[] {delta, delta}; verifyInDomain(CoordinateDomain.GEOGRAPHIC_RADIANS, 484117986); } }
@Test public void testUnitaryOnSphere() throws TransformException { for (int phi=-90; phi<=90; phi+=15) { transform = create(false, phi); tolerance = TOLERANCE; validate(); assertTrue(isSpherical()); final double delta = toRadians(100.0 / 60) / 1852; derivativeDeltas = new double[] {delta, delta}; verifyInDomain(CoordinateDomain.GEOGRAPHIC_RADIANS, 862247543); } }
@Test public void testDerivative() throws TransformException { tolerance = 1E-9; final double delta = toRadians(100.0 / 60) / 1852; derivativeDeltas = new double[] {delta, delta}; transform = create(true, 90); validate(); verifyDerivative(toRadians(-6), toRadians(80)); verifyDerivative(toRadians(-6), toRadians(100)); transform = create(false, 90); validate(); verifyDerivative(toRadians(-6), toRadians(85)); transform = create(false, 0); validate(); verifyDerivative(toRadians(3), toRadians(4)); transform = create(true, 8); validate(); verifyDerivative(toRadians(-6), toRadians(2)); transform = create(false, 8); validate(); verifyDerivative(toRadians(-6), toRadians(2)); }