1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.propagation;
18
19 import org.hipparchus.complex.Complex;
20 import org.hipparchus.complex.ComplexField;
21 import org.hipparchus.geometry.euclidean.threed.FieldVector3D;
22 import org.hipparchus.geometry.euclidean.threed.Vector3D;
23 import org.junit.jupiter.api.Assertions;
24 import org.junit.jupiter.api.Test;
25 import org.mockito.Mockito;
26 import org.orekit.attitudes.AttitudeProvider;
27 import org.orekit.frames.Frame;
28 import org.orekit.frames.FramesFactory;
29 import org.orekit.propagation.events.FieldEventDetector;
30 import org.orekit.propagation.sampling.FieldStepHandlerMultiplexer;
31 import org.orekit.time.AbsoluteDate;
32 import org.orekit.time.FieldAbsoluteDate;
33 import org.orekit.utils.FieldPVCoordinates;
34 import org.orekit.utils.PVCoordinates;
35 import org.orekit.utils.TimeStampedFieldPVCoordinates;
36 import org.orekit.utils.TimeStampedPVCoordinates;
37
38 import java.util.Collection;
39 import java.util.List;
40
41 class FieldPropagatorTest {
42
43 @Test
44 void testGetPosition() {
45
46 final TestFieldPropagator testPropagator = new TestFieldPropagator();
47 final AbsoluteDate date = AbsoluteDate.ARBITRARY_EPOCH;
48 final FieldAbsoluteDate<Complex> fieldDate = new FieldAbsoluteDate<>(ComplexField.getInstance(), date);
49 final Frame frame = FramesFactory.getGCRF();
50
51 final FieldVector3D<Complex> actualPosition = testPropagator.getPosition(fieldDate, frame);
52
53 final FieldPVCoordinates<Complex> expectedState = testPropagator.propagate(fieldDate).getPVCoordinates(frame);
54 Assertions.assertEquals(expectedState.getPosition().toVector3D(), actualPosition.toVector3D());
55 }
56
57 @Test
58 void testGetPVCoordinates() {
59
60 final TestFieldPropagator testPropagator = new TestFieldPropagator();
61 final AbsoluteDate date = AbsoluteDate.ARBITRARY_EPOCH;
62 final FieldAbsoluteDate<Complex> fieldDate = new FieldAbsoluteDate<>(ComplexField.getInstance(), date);
63 final Frame frame = FramesFactory.getGCRF();
64
65 final FieldPVCoordinates<Complex> actualState = testPropagator.getPVCoordinates(fieldDate, frame);
66
67 final FieldPVCoordinates<Complex> expectedState = testPropagator.propagate(fieldDate).getPVCoordinates(frame);
68 Assertions.assertEquals(expectedState.getPosition().toVector3D(), actualState.getPosition().toVector3D());
69 Assertions.assertEquals(expectedState.getVelocity().toVector3D(), actualState.getVelocity().toVector3D());
70 }
71
72 @SuppressWarnings("unchecked")
73 private static FieldSpacecraftState<Complex> mockFieldSpacecraftState(final FieldAbsoluteDate<Complex> date) {
74 final FieldSpacecraftState<Complex> mockedFieldSpacecraftState = Mockito.mock(FieldSpacecraftState.class);
75 Mockito.when(mockedFieldSpacecraftState.getDate()).thenReturn(date);
76 final ComplexField complexField = ComplexField.getInstance();
77 final PVCoordinates pvCoordinates = new PVCoordinates(Vector3D.MINUS_I, Vector3D.PLUS_K);
78 final TimeStampedPVCoordinates tspvc = new TimeStampedPVCoordinates(date.toAbsoluteDate(), pvCoordinates);
79 final TimeStampedFieldPVCoordinates<Complex> fieldPVCoordinates = new TimeStampedFieldPVCoordinates<>(
80 complexField, tspvc);
81 Mockito.when(mockedFieldSpacecraftState.getPVCoordinates()).thenReturn(fieldPVCoordinates);
82 Mockito.when(mockedFieldSpacecraftState.getPVCoordinates(Mockito.any(Frame.class)))
83 .thenReturn(fieldPVCoordinates);
84 Mockito.when(mockedFieldSpacecraftState.getPosition(Mockito.any(Frame.class)))
85 .thenReturn(fieldPVCoordinates.getPosition());
86 return mockedFieldSpacecraftState;
87 }
88
89 private static class TestFieldPropagator implements FieldPropagator<Complex> {
90
91 @Override
92 public FieldStepHandlerMultiplexer<Complex> getMultiplexer() {
93 return null;
94 }
95
96 @Override
97 public FieldEphemerisGenerator<Complex> getEphemerisGenerator() {
98 return null;
99 }
100
101 @Override
102 public FieldSpacecraftState<Complex> getInitialState() {
103 return null;
104 }
105
106 @Override
107 public void resetInitialState(FieldSpacecraftState<Complex> state) {
108
109 }
110
111 @Override
112 public void addAdditionalDataProvider(FieldAdditionalDataProvider<?, Complex> additionalDataProvider) {
113
114 }
115
116 @Override
117 public List<FieldAdditionalDataProvider<?, Complex>> getAdditionalDataProviders() {
118 return null;
119 }
120
121 @Override
122 public boolean isAdditionalDataManaged(String name) {
123 return false;
124 }
125
126 @Override
127 public String[] getManagedAdditionalData() {
128 return new String[0];
129 }
130
131 @Override
132 public <D extends FieldEventDetector<Complex>> void addEventDetector(D detector) {
133
134 }
135
136 @Override
137 public Collection<FieldEventDetector<Complex>> getEventDetectors() {
138 return null;
139 }
140
141 @Override
142 public void clearEventsDetectors() {
143
144 }
145
146 @Override
147 public AttitudeProvider getAttitudeProvider() {
148 return null;
149 }
150
151 @Override
152 public void setAttitudeProvider(AttitudeProvider attitudeProvider) {
153
154 }
155
156 @Override
157 public Frame getFrame() {
158 return null;
159 }
160
161 @Override
162 public FieldSpacecraftState<Complex> propagate(FieldAbsoluteDate<Complex> target) {
163 return mockFieldSpacecraftState(target);
164 }
165
166 @Override
167 public FieldSpacecraftState<Complex> propagate(FieldAbsoluteDate<Complex> start, FieldAbsoluteDate<Complex> target) {
168 return null;
169 }
170 }
171
172 }