1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.propagation.events.handlers;
18
19 import org.hipparchus.ode.events.Action;
20 import org.junit.jupiter.api.Assertions;
21 import org.junit.jupiter.api.BeforeEach;
22 import org.junit.jupiter.api.Test;
23 import org.mockito.Mockito;
24 import org.orekit.Utils;
25 import org.orekit.frames.Frame;
26 import org.orekit.frames.FramesFactory;
27 import org.orekit.orbits.KeplerianOrbit;
28 import org.orekit.orbits.Orbit;
29 import org.orekit.orbits.PositionAngleType;
30 import org.orekit.propagation.SpacecraftState;
31 import org.orekit.propagation.events.DateDetector;
32 import org.orekit.propagation.events.EventDetector;
33 import org.orekit.time.AbsoluteDate;
34 import org.orekit.utils.Constants;
35
36
37
38
39
40
41 public class EventMultipleHandlerTest {
42
43 @BeforeEach
44 public void setUp() {
45 Utils.setDataRoot("regular-data");
46 }
47
48 @Test
49 void testFinishEmpty() {
50 final EventHandler mockedHandler = Mockito.mock(EventHandler.class);
51 final SpacecraftState mockedState = Mockito.mock(SpacecraftState.class);
52 final EventDetector mockedDetector = Mockito.mock(EventDetector.class);
53 final EventMultipleHandler eventMultipleHandler = new EventMultipleHandler();
54 Assertions.assertDoesNotThrow(() -> eventMultipleHandler.finish(mockedState, mockedDetector));
55 }
56
57 @Test
58 void testFinish() {
59 final EventHandler mockedHandler = Mockito.mock(EventHandler.class);
60 final SpacecraftState mockedState = Mockito.mock(SpacecraftState.class);
61 final EventDetector mockedDetector = Mockito.mock(EventDetector.class);
62 final EventMultipleHandler eventMultipleHandler = new EventMultipleHandler().addHandler(mockedHandler);
63 Assertions.assertDoesNotThrow(() -> eventMultipleHandler.finish(mockedState, mockedDetector));
64 }
65
66
67
68
69 @Test
70 public void testEventOccurred() {
71
72 ContinueOnEvent handler1 = new ContinueOnEvent();
73 StopOnEvent handler2 = new StopOnEvent();
74 StopOnDecreasing handler3 = new StopOnDecreasing();
75 AbsoluteDate date = AbsoluteDate.J2000_EPOCH;
76 DateDetector detector = new DateDetector(date);
77 Frame eci = FramesFactory.getGCRF();
78 Orbit orbit = new KeplerianOrbit(6378137 + 500e3, 0, 0, 0, 0, 0,
79 PositionAngleType.TRUE, eci, date, Constants.EIGEN5C_EARTH_MU);
80 SpacecraftState s = new SpacecraftState(orbit);
81
82
83 EventMultipleHandler facade1 = new EventMultipleHandler().addHandler(handler1).addHandler(handler2);
84 Assertions.assertEquals(Action.STOP, facade1.eventOccurred(s, detector, true));
85
86 EventMultipleHandler facade2 = new EventMultipleHandler().addHandler(handler1).addHandler(handler3);
87 Assertions.assertEquals(Action.CONTINUE, facade2.eventOccurred(s, detector, true));
88 }
89
90
91
92
93 @Test
94 public void testResetState() {
95
96 ContinueOnEvent handler1 = new ContinueOnEvent();
97 AbsoluteDate date = AbsoluteDate.J2000_EPOCH;
98 DateDetector detector = new DateDetector(date);
99 Frame eci = FramesFactory.getGCRF();
100 Orbit orbit = new KeplerianOrbit(6378137 + 500e3, 0, 0, 0, 0, 0,
101 PositionAngleType.TRUE, eci, date, Constants.EIGEN5C_EARTH_MU);
102 SpacecraftState s = new SpacecraftState(orbit);
103
104
105 EventHandler handler2 = getHandler(10);
106 EventHandler handler3 = getHandler(20);
107 EventMultipleHandler facade = new EventMultipleHandler().addHandlers(handler1, handler2, handler3);
108
109
110 Assertions.assertEquals(Action.RESET_STATE, facade.eventOccurred(s, detector, true));
111 Assertions.assertEquals(s.shiftedBy(30).getOrbit().getDate(), facade.resetState(detector, s).getOrbit().getDate());
112 }
113
114
115
116
117 private EventHandler getHandler(double timeShift) {
118
119 return new EventHandler() {
120
121 @Override
122 public Action eventOccurred(SpacecraftState s, EventDetector detector, boolean increasing) {
123 return Action.RESET_STATE;
124 }
125
126 @Override
127 public SpacecraftState resetState(EventDetector detector, SpacecraftState oldState) {
128 return oldState.shiftedBy(timeShift);
129 }
130 };
131 }
132 }