1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.orekit.propagation.events;
19
20 import org.hipparchus.geometry.euclidean.threed.Vector3D;
21 import org.junit.jupiter.api.Assertions;
22 import org.junit.jupiter.api.Test;
23 import org.mockito.Mockito;
24 import org.orekit.frames.FramesFactory;
25 import org.orekit.orbits.CartesianOrbit;
26 import org.orekit.propagation.SpacecraftState;
27 import org.orekit.propagation.analytical.KeplerianPropagator;
28 import org.orekit.propagation.events.handlers.EventHandler;
29 import org.orekit.propagation.events.handlers.StopOnIncreasing;
30 import org.orekit.time.AbsoluteDate;
31 import org.orekit.utils.Constants;
32 import org.orekit.utils.PVCoordinatesProvider;
33 import org.orekit.utils.TimeStampedPVCoordinates;
34
35 class RelativeDistanceDetectorTest {
36
37 @Test
38 void testCreate() {
39
40 final double distanceThreshold = 1.;
41 final RelativeDistanceDetector distanceDetector = new RelativeDistanceDetector(
42 Mockito.mock(PVCoordinatesProvider.class), distanceThreshold);
43 final EventHandler expectedHandler = new StopOnIncreasing();
44
45 final RelativeDistanceDetector detector = distanceDetector.create(distanceDetector.getDetectionSettings(), expectedHandler);
46
47 Assertions.assertEquals(expectedHandler, detector.getHandler());
48 }
49
50 @Test
51 void testGetDistanceThreshold() {
52
53 final double expectedDistanceThreshold = 1.;
54 final RelativeDistanceDetector distanceDetector = new RelativeDistanceDetector(
55 Mockito.mock(PVCoordinatesProvider.class), expectedDistanceThreshold);
56
57 final double actualDistanceThreshold = distanceDetector.getDistanceThreshold();
58
59 Assertions.assertEquals(expectedDistanceThreshold, actualDistanceThreshold);
60 }
61
62 @Test
63 void testG() {
64
65 final double zeroDistanceThreshold = 0.;
66 final CartesianOrbit initialOrbit = createOrbit();
67 final KeplerianPropagator propagator = new KeplerianPropagator(initialOrbit);
68 final RelativeDistanceDetector distanceDetector = new RelativeDistanceDetector(propagator,
69 zeroDistanceThreshold);
70
71 final double g = distanceDetector.g(new SpacecraftState(initialOrbit));
72
73 Assertions.assertEquals(0., g, 1e-8);
74 }
75
76 private CartesianOrbit createOrbit() {
77 final Vector3D position = new Vector3D(1e7, 2e3, 1e4);
78 final Vector3D velocity = new Vector3D(0., 6e3, -1e2);
79 final TimeStampedPVCoordinates pvCoordinates = new TimeStampedPVCoordinates(AbsoluteDate.ARBITRARY_EPOCH,
80 position, velocity);
81 return new CartesianOrbit(pvCoordinates, FramesFactory.getGCRF(), Constants.EGM96_EARTH_MU);
82 }
83
84 }