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.util.Binary64;
20 import org.hipparchus.util.Binary64Field;
21 import org.junit.jupiter.api.Test;
22 import org.mockito.Mockito;
23 import org.orekit.propagation.FieldSpacecraftState;
24 import org.orekit.propagation.events.handlers.FieldContinueOnEvent;
25 import org.orekit.propagation.events.handlers.FieldEventHandler;
26 import org.orekit.time.FieldAbsoluteDate;
27
28 import static org.junit.jupiter.api.Assertions.*;
29
30 class FieldBooleanDetectorTest {
31
32 @Test
33 @SuppressWarnings("unchecked")
34 void testInit() {
35 final TestDetector detector = new TestDetector();
36 final FieldBooleanDetector<Binary64> booleanDetector = FieldBooleanDetector.orCombine(detector);
37 final FieldAbsoluteDate<Binary64> date = FieldAbsoluteDate.getArbitraryEpoch(Binary64Field.getInstance());
38 final FieldSpacecraftState<Binary64> mockedState = Mockito.mock(FieldSpacecraftState.class);
39 Mockito.when(mockedState.getDate()).thenReturn(date);
40
41 booleanDetector.init(mockedState, date);
42
43 assertTrue(detector.initialized);
44 assertFalse(detector.finished);
45 assertFalse(detector.resetted);
46 }
47
48 @Test
49 @SuppressWarnings("unchecked")
50 void testReset() {
51 final TestDetector detector = new TestDetector();
52 final FieldBooleanDetector<Binary64> booleanDetector = FieldBooleanDetector.orCombine(detector);
53 final FieldAbsoluteDate<Binary64> date = FieldAbsoluteDate.getArbitraryEpoch(Binary64Field.getInstance());
54 final FieldSpacecraftState<Binary64> mockedState = Mockito.mock(FieldSpacecraftState.class);
55 Mockito.when(mockedState.getDate()).thenReturn(date);
56
57 booleanDetector.reset(mockedState, date);
58
59 assertTrue(detector.resetted);
60 assertFalse(detector.finished);
61 assertFalse(detector.initialized);
62 }
63
64 @Test
65 @SuppressWarnings("unchecked")
66 void testFinish() {
67 final TestDetector detector = new TestDetector();
68 final FieldBooleanDetector<Binary64> booleanDetector = FieldBooleanDetector.orCombine(detector);
69 final FieldAbsoluteDate<Binary64> date = FieldAbsoluteDate.getArbitraryEpoch(Binary64Field.getInstance());
70 final FieldSpacecraftState<Binary64> mockedState = Mockito.mock(FieldSpacecraftState.class);
71 Mockito.when(mockedState.getDate()).thenReturn(date);
72
73 booleanDetector.finish(mockedState);
74
75 assertTrue(detector.finished);
76 assertFalse(detector.initialized);
77 assertFalse(detector.resetted);
78 }
79
80 private static class TestDetector implements FieldEventDetector<Binary64> {
81 boolean initialized = false;
82 boolean resetted = false;
83 boolean finished = false;
84
85 @Override
86 public void init(FieldSpacecraftState<Binary64> s0, FieldAbsoluteDate<Binary64> t) {
87 FieldEventDetector.super.init(s0, t);
88 initialized = true;
89 }
90
91 @Override
92 public void reset(FieldSpacecraftState<Binary64> state, FieldAbsoluteDate<Binary64> target) {
93 FieldEventDetector.super.reset(state, target);
94 resetted = true;
95 }
96
97 @Override
98 public void finish(FieldSpacecraftState<Binary64> state) {
99 FieldEventDetector.super.finish(state);
100 finished = true;
101 }
102
103 @Override
104 public Binary64 g(FieldSpacecraftState<Binary64> s) {
105 return Binary64.ONE;
106 }
107
108 @Override
109 public FieldEventHandler<Binary64> getHandler() {
110 return new FieldContinueOnEvent<>();
111 }
112
113 @Override
114 public FieldEventDetectionSettings<Binary64> getDetectionSettings() {
115 return new FieldEventDetectionSettings<>(Binary64Field.getInstance(),
116 EventDetectionSettings.getDefaultEventDetectionSettings());
117 }
118 }
119 }