1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.propagation.events;
18
19 import org.hipparchus.CalculusFieldElement;
20 import org.hipparchus.util.Binary64;
21 import org.hipparchus.util.Binary64Field;
22 import org.junit.jupiter.api.Assertions;
23 import org.junit.jupiter.api.Test;
24 import org.junit.jupiter.params.ParameterizedTest;
25 import org.junit.jupiter.params.provider.ValueSource;
26 import org.mockito.Mockito;
27 import org.orekit.propagation.FieldSpacecraftState;
28 import org.orekit.propagation.events.handlers.FieldEventHandler;
29 import org.orekit.propagation.events.handlers.FieldStopOnEvent;
30 import org.orekit.time.FieldAbsoluteDate;
31
32 class FieldDetectorModifierTest {
33
34 @Test
35 @SuppressWarnings("unchecked")
36 void testGetDetectionSettings() {
37
38 final FieldEventDetector<?> detector = Mockito.mock(FieldEventDetector.class);
39 final FieldEventDetectionSettings detectionSettings = Mockito.mock(FieldEventDetectionSettings.class);
40 Mockito.when(detector.getDetectionSettings()).thenReturn(detectionSettings);
41 final TestFieldDetector<?> modifierDetector = new TestFieldDetector<>(detector);
42
43 final FieldEventDetectionSettings<?> actualSettings = modifierDetector.getDetectionSettings();
44
45 Assertions.assertEquals(detectionSettings, actualSettings);
46 }
47
48 @ParameterizedTest
49 @ValueSource(booleans = {true, false})
50 void testDependsOnlyOnTime(final boolean value) {
51
52 final FieldEventDetector<?> detector = Mockito.mock(FieldEventDetector.class);
53 Mockito.when(detector.dependsOnTimeOnly()).thenReturn(value);
54 final TestFieldDetector<?> modifierDetector = new TestFieldDetector<>(detector);
55
56 final boolean actual = modifierDetector.dependsOnTimeOnly();
57
58 Assertions.assertEquals(value, actual);
59 }
60
61 @Test
62 @SuppressWarnings("unchecked")
63 void testGetHandler() {
64
65 final FieldEventDetector<?> detector = Mockito.mock(FieldEventDetector.class);
66 final FieldEventHandler handler = Mockito.mock(FieldEventHandler.class);
67 Mockito.when(detector.getHandler()).thenReturn(handler);
68 final TestFieldDetector<?> modifierDetector = new TestFieldDetector<>(detector);
69
70 final FieldEventHandler<?> actualHandler = modifierDetector.getHandler();
71
72 Assertions.assertEquals(handler, actualHandler);
73 }
74
75 @Test
76 @SuppressWarnings("unchecked")
77 void testInit() {
78
79 final FieldEventDetector<?> detector = Mockito.mock(FieldEventDetector.class);
80 Mockito.when(detector.getHandler()).thenReturn(new FieldStopOnEvent<>());
81 final FieldSpacecraftState mockedState = Mockito.mock(FieldSpacecraftState.class);
82 final FieldAbsoluteDate mockedDate = Mockito.mock(FieldAbsoluteDate.class);
83 final TestFieldDetector<?> modifierDetector = new TestFieldDetector<>(detector);
84
85 modifierDetector.init(mockedState, mockedDate);
86
87 Mockito.verify(detector).init(mockedState, mockedDate);
88 }
89
90 @Test
91 @SuppressWarnings("unchecked")
92 void testReset() {
93
94 final FieldEventDetector<?> detector = Mockito.mock(FieldEventDetector.class);
95 Mockito.when(detector.getHandler()).thenReturn(new FieldStopOnEvent<>());
96 final FieldSpacecraftState mockedState = Mockito.mock(FieldSpacecraftState.class);
97 final FieldAbsoluteDate mockedDate = Mockito.mock(FieldAbsoluteDate.class);
98 final TestFieldDetector<?> modifierDetector = new TestFieldDetector<>(detector);
99
100 modifierDetector.reset(mockedState, mockedDate);
101
102 Mockito.verify(detector).reset(mockedState, mockedDate);
103 }
104
105 @Test
106 @SuppressWarnings("unchecked")
107 void testG() {
108
109 final Binary64Field field = Binary64Field.getInstance();
110 final FieldAbsoluteDate<Binary64> date = FieldAbsoluteDate.getArbitraryEpoch(field);
111 final FieldEventDetector<Binary64> detector = new FieldDateDetector<>(date);
112 final FieldSpacecraftState<Binary64> mockedState = Mockito.mock(FieldSpacecraftState.class);
113 Mockito.when(mockedState.getDate()).thenReturn(date);
114 final TestFieldDetector<Binary64> modifierDetector = new TestFieldDetector<>(detector);
115
116 final double actualG = modifierDetector.g(mockedState).getReal();
117
118 Assertions.assertEquals(detector.g(mockedState).getReal(), actualG);
119 }
120
121 @Test
122 @SuppressWarnings("unchecked")
123 void testFinish() {
124
125 final FieldEventDetector<?> detector = Mockito.mock(FieldEventDetector.class);
126 Mockito.when(detector.getHandler()).thenReturn(new FieldStopOnEvent<>());
127 final FieldSpacecraftState mockedState = Mockito.mock(FieldSpacecraftState.class);
128 final TestFieldDetector<?> modifierDetector = new TestFieldDetector<>(detector);
129
130 modifierDetector.finish(mockedState);
131
132 Mockito.verify(detector).finish(mockedState);
133 }
134
135 @Deprecated
136 @Test
137 void testAdapterDetector() {
138
139 final FieldDateDetector<Binary64> detector = new FieldDateDetector<>(Binary64Field.getInstance());
140
141 final FieldAdapterDetector<Binary64> adapterDetector = new FieldAdapterDetector<>(detector);
142
143 final TestFieldDetector<Binary64> detectorModifier = new TestFieldDetector<>(detector);
144 Assertions.assertEquals(detectorModifier.getDetector(), adapterDetector.getDetector());
145 }
146
147 private static class TestFieldDetector<T extends CalculusFieldElement<T>> implements FieldDetectorModifier<T> {
148
149 private final FieldEventDetector<T> detector;
150
151 TestFieldDetector(final FieldEventDetector<T> detector) {
152 this.detector = detector;
153 }
154
155 @Override
156 public FieldEventDetector<T> getDetector() {
157 return detector;
158 }
159 }
160 }