1   package org.orekit.propagation.conversion;
2   
3   import org.hipparchus.Field;
4   import org.hipparchus.ode.nonstiff.DormandPrince54FieldIntegrator;
5   import org.hipparchus.util.Binary64;
6   import org.junit.jupiter.api.Assertions;
7   import org.junit.jupiter.api.Test;
8   import org.orekit.frames.FramesFactory;
9   import org.orekit.orbits.KeplerianOrbit;
10  import org.orekit.orbits.Orbit;
11  import org.orekit.orbits.PositionAngleType;
12  import org.orekit.propagation.ToleranceProvider;
13  import org.orekit.time.AbsoluteDate;
14  import org.orekit.utils.Constants;
15  
16  import java.util.Arrays;
17  
18  class AbstractVariableStepFieldIntegratorBuilderTest {
19  
20      @Test
21      void testGetTolerances() {
22          // GIVEN
23          final Orbit orbit = new KeplerianOrbit(7e6, 0.1, 1, 2, 3, 4, PositionAngleType.ECCENTRIC, FramesFactory.getGCRF(),
24                  AbsoluteDate.ARBITRARY_EPOCH, Constants.EGM96_EARTH_MU);
25          final double expectedAbsoluteTolerance = 1.;
26          final double expectedRelativeTolerance = 2;
27          final TestIntegratorBuilder integratorBuilder = new TestIntegratorBuilder(0., 1.,
28                  ToleranceProvider.of(expectedAbsoluteTolerance, expectedRelativeTolerance));
29          // WHEN
30          final double[][] actualTolerances = integratorBuilder.getTolerances(orbit, orbit.getType(), PositionAngleType.TRUE);
31          // THEN
32          final double[] expectedAbsolute = new double[7];
33          Arrays.fill(expectedAbsolute, expectedAbsoluteTolerance);
34          final double[] expectedRelative = new double[7];
35          Arrays.fill(expectedRelative, expectedRelativeTolerance);
36          final double [][] expectedTolerances = new double[][] {expectedAbsolute, expectedRelative};
37          Assertions.assertArrayEquals(expectedTolerances[0], actualTolerances[0]);
38          Assertions.assertArrayEquals(expectedTolerances[1], actualTolerances[1]);
39      }
40  
41      private static class TestIntegratorBuilder extends AbstractVariableStepFieldIntegratorBuilder<Binary64, DormandPrince54FieldIntegrator<Binary64>> {
42  
43          protected TestIntegratorBuilder(double minStep, double maxStep, ToleranceProvider toleranceProvider) {
44              super(minStep, maxStep, toleranceProvider);
45          }
46  
47          @Override
48          protected DormandPrince54FieldIntegrator<Binary64> buildIntegrator(Field field, double[][] tolerances) {
49              return null;
50          }
51  
52          @Override
53          public ODEIntegratorBuilder toODEIntegratorBuilder() {
54              return null;
55          }
56      }
57  }