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.Test;
22 import org.mockito.Mockito;
23 import org.orekit.propagation.SpacecraftState;
24 import org.orekit.propagation.events.EventDetector;
25 import org.orekit.time.AbsoluteDate;
26
27 class RecallLastOccurrenceTest {
28
29 private static final Action ACTION = Action.CONTINUE;
30
31 @Test
32 void testFinish() {
33
34 final EventHandler mockedHandler = Mockito.mock(EventHandler.class);
35 final RecallLastOccurrence wrappingHandler = new RecallLastOccurrence(mockedHandler);
36 final SpacecraftState mockedState = Mockito.mock(SpacecraftState.class);
37
38 wrappingHandler.finish(mockedState, null);
39
40 Mockito.verify(mockedHandler, Mockito.times(1)).finish(mockedState, null);
41 }
42
43 @Test
44 void testEventOccurred() {
45
46 final TestHandler testHandler = new TestHandler();
47 final RecallLastOccurrence recallLastOccurrence = new RecallLastOccurrence(testHandler);
48 final AbsoluteDate expectedDate = AbsoluteDate.J2000_EPOCH;
49 final SpacecraftState mockedState = mockState(expectedDate);
50
51 final Action action = recallLastOccurrence.eventOccurred(mockedState, null, true);
52
53 Assertions.assertEquals(expectedDate, recallLastOccurrence.getLastOccurrence());
54 Assertions.assertEquals(ACTION, action);
55 }
56
57 @Test
58 void testResetState() {
59
60 final TestHandler testHandler = new TestHandler();
61 final RecallLastOccurrence recallLastOccurrence = new RecallLastOccurrence(testHandler);
62 final SpacecraftState mockedState = mockState(AbsoluteDate.ARBITRARY_EPOCH);
63
64 final SpacecraftState actualState = recallLastOccurrence.resetState(null, mockedState);
65
66 Assertions.assertEquals(mockedState, actualState);
67 Assertions.assertNull(recallLastOccurrence.getLastOccurrence());
68 }
69
70 @Test
71 void testInitBackward() {
72
73 final TestHandler testHandler = new TestHandler();
74 final RecallLastOccurrence recallLastOccurrence = new RecallLastOccurrence(testHandler);
75 final SpacecraftState mockedState = mockState(AbsoluteDate.FUTURE_INFINITY);
76
77 recallLastOccurrence.init(mockedState, AbsoluteDate.ARBITRARY_EPOCH, null);
78
79 Assertions.assertTrue(testHandler.isInitialized);
80 Assertions.assertEquals(AbsoluteDate.FUTURE_INFINITY, recallLastOccurrence.getLastOccurrence());
81 }
82
83 @Test
84 void testInitForward() {
85
86 final TestHandler testHandler = new TestHandler();
87 final RecallLastOccurrence recallLastOccurrence = new RecallLastOccurrence(testHandler);
88 final SpacecraftState mockedState = mockState(AbsoluteDate.PAST_INFINITY);
89
90 recallLastOccurrence.init(mockedState, AbsoluteDate.ARBITRARY_EPOCH, null);
91
92 Assertions.assertTrue(testHandler.isInitialized);
93 Assertions.assertEquals(AbsoluteDate.PAST_INFINITY, recallLastOccurrence.getLastOccurrence());
94 }
95
96 private SpacecraftState mockState(final AbsoluteDate date) {
97 final SpacecraftState mockedState = Mockito.mock(SpacecraftState.class);
98 Mockito.when(mockedState.getDate()).thenReturn(date);
99 return mockedState;
100 }
101
102 private static class TestHandler implements EventHandler {
103
104 boolean isInitialized = false;
105
106 boolean isFinished = false;
107
108 @Override
109 public void init(SpacecraftState initialState, AbsoluteDate target, EventDetector detector) {
110 isInitialized = true;
111 }
112
113 @Override
114 public Action eventOccurred(SpacecraftState s, EventDetector detector, boolean increasing) {
115 return ACTION;
116 }
117
118 @Override
119 public void finish(SpacecraftState finalState, EventDetector detector) {
120 isFinished = true;
121 }
122 }
123
124 }