1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.files.ccsds.ndm.cdm;
18
19 import java.net.URISyntaxException;
20 import java.util.ArrayList;
21
22 import org.hipparchus.util.FastMath;
23 import org.junit.jupiter.api.Assertions;
24 import org.junit.jupiter.api.BeforeEach;
25 import org.junit.jupiter.api.Test;
26 import org.orekit.Utils;
27 import org.orekit.bodies.CelestialBodyFactory;
28 import org.orekit.data.DataContext;
29 import org.orekit.data.DataSource;
30 import org.orekit.errors.OrekitException;
31 import org.orekit.errors.OrekitMessages;
32 import org.orekit.files.ccsds.definitions.BodyFacade;
33 import org.orekit.files.ccsds.definitions.CelestialBodyFrame;
34 import org.orekit.files.ccsds.definitions.PocMethodType;
35 import org.orekit.files.ccsds.definitions.YesNoUnknown;
36 import org.orekit.files.ccsds.ndm.ParserBuilder;
37 import org.orekit.files.ccsds.ndm.odm.ocm.ObjectType;
38 import org.orekit.frames.FramesFactory;
39 import org.orekit.time.AbsoluteDate;
40 import org.orekit.time.TimeOffset;
41 import org.orekit.time.TimeScalesFactory;
42 import org.orekit.utils.IERSConventions;
43
44 public class CdmParserTest {
45
46 private static final double DISTANCE_PRECISION = 1e-8;
47 private static final double DOUBLE_PRECISION = 1e-8;
48 private static final double DERIVATION_PRECISION = 1e-12;
49 private static final double COVARIANCE_DIAG_PRECISION = 1e-10;
50 private static final double COVARIANCE_PRECISION = 1e-8;
51
52 @BeforeEach
53 public void setUp() {
54 Utils.setDataRoot("regular-data");
55 }
56
57 @Test
58 public void testParseCDM1() {
59
60
61 final String ex = "/ccsds/cdm/CDMExample1.txt";
62
63
64 final CdmParser parser = new ParserBuilder().buildCdmParser();
65
66 final DataSource source = new DataSource(ex, () -> getClass().getResourceAsStream(ex));
67
68
69 final Cdm file = parser.parseMessage(source);
70
71
72 Assertions.assertEquals(IERSConventions.IERS_2010, file.getConventions());
73 Assertions.assertEquals(DataContext.getDefault(), file.getDataContext());
74
75
76 Assertions.assertEquals(1.0, file.getHeader().getFormatVersion(), 1.0e-10);
77 Assertions.assertEquals(new AbsoluteDate(2010, 3, 12, 22, 31, 12,
78 TimeScalesFactory.getUTC()), file.getHeader().getCreationDate());
79 Assertions.assertEquals("JSPOC", file.getHeader().getOriginator());
80 Assertions.assertEquals("201113719185", file.getHeader().getMessageId());
81
82
83
84 Assertions.assertEquals(new AbsoluteDate(2010, 3, 13, 22, 37, new TimeOffset(52, TimeOffset.SECOND, 618, TimeOffset.MILLISECOND),
85 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getTca());
86 Assertions.assertEquals(715.0, file.getRelativeMetadata().getMissDistance(), DISTANCE_PRECISION);
87
88
89 Assertions.assertEquals("OBJECT1", file.getMetadataObject1().getObject());
90 Assertions.assertEquals("12345", file.getMetadataObject1().getObjectDesignator());
91 Assertions.assertEquals("SATCAT", file.getMetadataObject1().getCatalogName());
92 Assertions.assertEquals("SATELLITE A", file.getMetadataObject1().getObjectName());
93 Assertions.assertEquals("1997−030E", file.getMetadataObject1().getInternationalDes());
94 Assertions.assertEquals("EPHEMERIS SATELLITE A", file.getMetadataObject1().getEphemName());
95 Assertions.assertEquals(CovarianceMethod.CALCULATED, file.getMetadataObject1().getCovarianceMethod());
96 Assertions.assertEquals(Maneuvrable.YES, file.getMetadataObject1().getManeuverable());
97 Assertions.assertEquals(CelestialBodyFrame.EME2000,
98 file.getMetadataObject1().getRefFrame().asCelestialBodyFrame());
99 Assertions.assertEquals("UTC", file.getMetadataObject1().getTimeSystem().name());
100
101
102
103 Assertions.assertEquals(2570.097065e3, file.getDataObject1().getStateVectorBlock().getPositionVector().getX(),
104 DISTANCE_PRECISION);
105 Assertions.assertEquals(2244.654904e3, file.getDataObject1().getStateVectorBlock().getPositionVector().getY(),
106 DISTANCE_PRECISION);
107 Assertions.assertEquals(6281.497978e3, file.getDataObject1().getStateVectorBlock().getPositionVector().getZ(),
108 DISTANCE_PRECISION);
109 Assertions.assertEquals(4.418769571e3, file.getDataObject1().getStateVectorBlock().getVelocityVector().getX(),
110 DERIVATION_PRECISION);
111 Assertions.assertEquals(4.833547743e3, file.getDataObject1().getStateVectorBlock().getVelocityVector().getY(),
112 DERIVATION_PRECISION);
113 Assertions.assertEquals(-3.526774282e3, file.getDataObject1().getStateVectorBlock().getVelocityVector().getZ(),
114 DERIVATION_PRECISION);
115
116 Assertions.assertEquals(4.142e1, file.getDataObject1().getRTNCovarianceBlock().getCrr(),
117 COVARIANCE_DIAG_PRECISION);
118 Assertions.assertEquals(-8.579, file.getDataObject1().getRTNCovarianceBlock().getCtr(),
119 COVARIANCE_DIAG_PRECISION);
120 Assertions.assertEquals(2.533e3, file.getDataObject1().getRTNCovarianceBlock().getCtt(),
121 COVARIANCE_DIAG_PRECISION);
122 Assertions.assertEquals(-2.313e1, file.getDataObject1().getRTNCovarianceBlock().getCnr(),
123 COVARIANCE_DIAG_PRECISION);
124 Assertions.assertEquals(1.336e1, file.getDataObject1().getRTNCovarianceBlock().getCnt(),
125 COVARIANCE_DIAG_PRECISION);
126 Assertions.assertEquals(7.098e1, file.getDataObject1().getRTNCovarianceBlock().getCnn(),
127 COVARIANCE_DIAG_PRECISION);
128
129 Assertions.assertEquals(2.520e-3, file.getDataObject1().getRTNCovarianceBlock().getCrdotr(),
130 COVARIANCE_PRECISION);
131 Assertions.assertEquals(-5.476, file.getDataObject1().getRTNCovarianceBlock().getCrdott(),
132 COVARIANCE_PRECISION);
133 Assertions.assertEquals(8.626e-4, file.getDataObject1().getRTNCovarianceBlock().getCrdotn(),
134 COVARIANCE_PRECISION);
135 Assertions.assertEquals(5.744e-3, file.getDataObject1().getRTNCovarianceBlock().getCrdotrdot(),
136 COVARIANCE_PRECISION);
137
138 Assertions.assertEquals(-1.006e-2, file.getDataObject1().getRTNCovarianceBlock().getCtdotr(),
139 COVARIANCE_PRECISION);
140 Assertions.assertEquals(4.041e-3, file.getDataObject1().getRTNCovarianceBlock().getCtdott(),
141 COVARIANCE_PRECISION);
142 Assertions.assertEquals(-1.359e-3, file.getDataObject1().getRTNCovarianceBlock().getCtdotn(),
143 COVARIANCE_PRECISION);
144 Assertions.assertEquals(-1.502e-5, file.getDataObject1().getRTNCovarianceBlock().getCtdotrdot(),
145 COVARIANCE_PRECISION);
146 Assertions.assertEquals(1.049e-5, file.getDataObject1().getRTNCovarianceBlock().getCtdottdot(),
147 COVARIANCE_PRECISION);
148
149 Assertions.assertEquals(1.053e-3, file.getDataObject1().getRTNCovarianceBlock().getCndotr(),
150 COVARIANCE_PRECISION);
151 Assertions.assertEquals(-3.412e-3, file.getDataObject1().getRTNCovarianceBlock().getCndott(),
152 COVARIANCE_PRECISION);
153 Assertions.assertEquals(1.213e-2, file.getDataObject1().getRTNCovarianceBlock().getCndotn(),
154 COVARIANCE_PRECISION);
155 Assertions.assertEquals(-3.004e-6, file.getDataObject1().getRTNCovarianceBlock().getCndotrdot(),
156 COVARIANCE_PRECISION);
157 Assertions.assertEquals(-1.091e-6, file.getDataObject1().getRTNCovarianceBlock().getCndottdot(),
158 COVARIANCE_PRECISION);
159 Assertions.assertEquals(5.529e-5, file.getDataObject1().getRTNCovarianceBlock().getCndotndot(),
160 COVARIANCE_PRECISION);
161
162 Assertions.assertEquals(2.520e-3, file.getDataObject1().getRTNCovarianceBlock().
163 getRTNCovarianceMatrix().getEntry(3, 0), COVARIANCE_PRECISION);
164 Assertions.assertEquals(Double.NaN, file.getDataObject1().getRTNCovarianceBlock().
165 getRTNCovarianceMatrix().getEntry(7, 6), COVARIANCE_PRECISION);
166
167
168
169
170
171 Assertions.assertEquals(file.getSegments().get(1).getMetadata().getRelativeMetadata().getTca(),
172 file.getRelativeMetadata().getTca());
173 Assertions.assertEquals(file.getSegments().get(1).getMetadata().getRelativeMetadata().getMissDistance(),
174 file.getRelativeMetadata().getMissDistance(), DISTANCE_PRECISION);
175
176
177 Assertions.assertEquals("OBJECT2", file.getMetadataObject2().getObject());
178 Assertions.assertEquals("30337", file.getMetadataObject2().getObjectDesignator());
179 Assertions.assertEquals("SATCAT", file.getMetadataObject2().getCatalogName());
180 Assertions.assertEquals("FENGYUN 1C DEB", file.getMetadataObject2().getObjectName());
181 Assertions.assertEquals("1999-025AA", file.getMetadataObject2().getInternationalDes());
182 Assertions.assertEquals("NONE", file.getMetadataObject2().getEphemName());
183 Assertions.assertEquals(CovarianceMethod.CALCULATED, file.getMetadataObject2().getCovarianceMethod());
184 Assertions.assertEquals(Maneuvrable.NO, file.getMetadataObject2().getManeuverable());
185 Assertions.assertEquals(CelestialBodyFrame.EME2000,
186 file.getMetadataObject2().getRefFrame().asCelestialBodyFrame());
187 Assertions.assertEquals("UTC", file.getMetadataObject2().getTimeSystem().name());
188
189
190 Assertions.assertEquals(2569.540800e3, file.getDataObject2().getStateVectorBlock().getPositionVector().getX(),
191 DISTANCE_PRECISION);
192 Assertions.assertEquals(2245.093614e3, file.getDataObject2().getStateVectorBlock().getPositionVector().getY(),
193 DISTANCE_PRECISION);
194 Assertions.assertEquals(6281.599946e3, file.getDataObject2().getStateVectorBlock().getPositionVector().getZ(),
195 DISTANCE_PRECISION);
196 Assertions.assertEquals(-2.888612500e3, file.getDataObject2().getStateVectorBlock().getVelocityVector().getX(),
197 DERIVATION_PRECISION);
198 Assertions.assertEquals(-6.007247516e3, file.getDataObject2().getStateVectorBlock().getVelocityVector().getY(),
199 DERIVATION_PRECISION);
200 Assertions.assertEquals(3.328770172e3, file.getDataObject2().getStateVectorBlock().getVelocityVector().getZ(),
201 DERIVATION_PRECISION);
202
203 Assertions.assertEquals(1.337e3, file.getDataObject2().getRTNCovarianceBlock().getCrr(),
204 COVARIANCE_DIAG_PRECISION);
205 Assertions.assertEquals(-4.806e4, file.getDataObject2().getRTNCovarianceBlock().getCtr(),
206 COVARIANCE_DIAG_PRECISION);
207 Assertions.assertEquals(2.492e6, file.getDataObject2().getRTNCovarianceBlock().getCtt(),
208 COVARIANCE_DIAG_PRECISION);
209 Assertions.assertEquals(-3.298e1, file.getDataObject2().getRTNCovarianceBlock().getCnr(),
210 COVARIANCE_DIAG_PRECISION);
211 Assertions.assertEquals(-7.5888e2, file.getDataObject2().getRTNCovarianceBlock().getCnt(),
212 COVARIANCE_DIAG_PRECISION);
213 Assertions.assertEquals(7.105e1, file.getDataObject2().getRTNCovarianceBlock().getCnn(),
214 COVARIANCE_DIAG_PRECISION);
215
216 Assertions.assertEquals(2.591e-3, file.getDataObject2().getRTNCovarianceBlock().getCrdotr(),
217 COVARIANCE_PRECISION);
218 Assertions.assertEquals(-4.152e-2, file.getDataObject2().getRTNCovarianceBlock().getCrdott(),
219 COVARIANCE_PRECISION);
220 Assertions.assertEquals(-1.784e-6, file.getDataObject2().getRTNCovarianceBlock().getCrdotn(),
221 COVARIANCE_PRECISION);
222 Assertions.assertEquals(6.886e-5, file.getDataObject2().getRTNCovarianceBlock().getCrdotrdot(),
223 COVARIANCE_PRECISION);
224
225 Assertions.assertEquals(-1.016e-2, file.getDataObject2().getRTNCovarianceBlock().getCtdotr(),
226 COVARIANCE_PRECISION);
227 Assertions.assertEquals(-1.506e-4, file.getDataObject2().getRTNCovarianceBlock().getCtdott(),
228 COVARIANCE_PRECISION);
229 Assertions.assertEquals(1.637e-3, file.getDataObject2().getRTNCovarianceBlock().getCtdotn(),
230 COVARIANCE_PRECISION);
231 Assertions.assertEquals(-2.987e-6, file.getDataObject2().getRTNCovarianceBlock().getCtdotrdot(),
232 COVARIANCE_PRECISION);
233 Assertions.assertEquals(1.059e-5, file.getDataObject2().getRTNCovarianceBlock().getCtdottdot(),
234 COVARIANCE_PRECISION);
235
236 Assertions.assertEquals(4.400e-3, file.getDataObject2().getRTNCovarianceBlock().getCndotr(),
237 COVARIANCE_PRECISION);
238 Assertions.assertEquals(8.482e-3, file.getDataObject2().getRTNCovarianceBlock().getCndott(),
239 COVARIANCE_PRECISION);
240 Assertions.assertEquals(8.633e-5, file.getDataObject2().getRTNCovarianceBlock().getCndotn(),
241 COVARIANCE_PRECISION);
242 Assertions.assertEquals(-1.903e-6, file.getDataObject2().getRTNCovarianceBlock().getCndotrdot(),
243 COVARIANCE_PRECISION);
244 Assertions.assertEquals(-4.594e-6, file.getDataObject2().getRTNCovarianceBlock().getCndottdot(),
245 COVARIANCE_PRECISION);
246 Assertions.assertEquals(5.178e-5, file.getDataObject2().getRTNCovarianceBlock().getCndotndot(),
247 COVARIANCE_PRECISION);
248
249 Assertions.assertEquals(1.337e3, file.getDataObject2().getRTNCovarianceBlock().getCrr(),
250 COVARIANCE_DIAG_PRECISION);
251 Assertions.assertEquals(-4.806e4, file.getDataObject2().getRTNCovarianceBlock().getCtr(),
252 COVARIANCE_DIAG_PRECISION);
253 Assertions.assertEquals(2.492e6, file.getDataObject2().getRTNCovarianceBlock().getCtt(),
254 COVARIANCE_DIAG_PRECISION);
255 Assertions.assertEquals(-3.298e1, file.getDataObject2().getRTNCovarianceBlock().getCnr(),
256 COVARIANCE_DIAG_PRECISION);
257 Assertions.assertEquals(-7.5888e2, file.getDataObject2().getRTNCovarianceBlock().getCnt(),
258 COVARIANCE_DIAG_PRECISION);
259 Assertions.assertEquals(7.105e1, file.getDataObject2().getRTNCovarianceBlock().getCnn(),
260 COVARIANCE_DIAG_PRECISION);
261
262 Assertions.assertEquals(2.591e-3,
263 file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(3, 0),
264 COVARIANCE_PRECISION);
265 Assertions.assertEquals(-4.152e-2,
266 file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(3, 1),
267 COVARIANCE_PRECISION);
268 Assertions.assertEquals(-1.784e-6,
269 file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(3, 2),
270 COVARIANCE_PRECISION);
271 Assertions.assertEquals(6.886e-5,
272 file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(3, 3),
273 COVARIANCE_PRECISION);
274
275 Assertions.assertEquals(-1.016e-2,
276 file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(4, 0),
277 COVARIANCE_PRECISION);
278 Assertions.assertEquals(-1.506e-4,
279 file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(4, 1),
280 COVARIANCE_PRECISION);
281 Assertions.assertEquals(1.637e-3,
282 file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(4, 2),
283 COVARIANCE_PRECISION);
284 Assertions.assertEquals(-2.987e-6,
285 file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(4, 3),
286 COVARIANCE_PRECISION);
287 Assertions.assertEquals(1.059e-5,
288 file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(4, 4),
289 COVARIANCE_PRECISION);
290
291 Assertions.assertEquals(4.400e-3,
292 file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(5, 0),
293 COVARIANCE_PRECISION);
294 Assertions.assertEquals(8.482e-3,
295 file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(5, 1),
296 COVARIANCE_PRECISION);
297 Assertions.assertEquals(8.633e-5,
298 file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(5, 2),
299 COVARIANCE_PRECISION);
300 Assertions.assertEquals(-1.903e-6,
301 file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(5, 3),
302 COVARIANCE_PRECISION);
303 Assertions.assertEquals(-4.594e-6,
304 file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(5, 4),
305 COVARIANCE_PRECISION);
306 Assertions.assertEquals(5.178e-5,
307 file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(5, 5),
308 COVARIANCE_PRECISION);
309
310 }
311
312 @Test
313 public void testParseCDM2() {
314
315
316 final String ex = "/ccsds/cdm/CDMExample2.txt";
317
318
319 final CdmParser parser = new ParserBuilder().buildCdmParser();
320
321 final DataSource source = new DataSource(ex, () -> getClass().getResourceAsStream(ex));
322
323
324 final Cdm file = parser.parseMessage(source);
325
326 Assertions.assertEquals(IERSConventions.IERS_2010, file.getConventions());
327 Assertions.assertEquals(DataContext.getDefault(), file.getDataContext());
328
329
330 Assertions.assertEquals(1.0, file.getHeader().getFormatVersion(), 1.0e-10);
331 Assertions.assertEquals(new AbsoluteDate(2010, 3, 12, 22, 31, 12,
332 TimeScalesFactory.getUTC()), file.getHeader().getCreationDate());
333 Assertions.assertEquals("JSPOC", file.getHeader().getOriginator());
334 Assertions.assertEquals("201113719185", file.getHeader().getMessageId());
335
336
337
338 Assertions.assertEquals(new AbsoluteDate(2010, 3, 13, 22, 37, new TimeOffset(52, TimeOffset.SECOND, 618, TimeOffset.MILLISECOND),
339 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getTca());
340 Assertions.assertEquals(715.0, file.getRelativeMetadata().getMissDistance(), DISTANCE_PRECISION);
341 Assertions.assertEquals(14762.0, file.getRelativeMetadata().getRelativeSpeed(), DERIVATION_PRECISION);
342 Assertions.assertEquals(27.4, file.getRelativeMetadata().getRelativePosition().getX(), DISTANCE_PRECISION);
343 Assertions.assertEquals(-70.2, file.getRelativeMetadata().getRelativePosition().getY(), DISTANCE_PRECISION);
344 Assertions.assertEquals(711.8, file.getRelativeMetadata().getRelativePosition().getZ(), DISTANCE_PRECISION);
345 Assertions.assertEquals(-7.2, file.getRelativeMetadata().getRelativeVelocity().getX(), DERIVATION_PRECISION);
346 Assertions.assertEquals(-14692.0, file.getRelativeMetadata().getRelativeVelocity().getY(),
347 DERIVATION_PRECISION);
348 Assertions.assertEquals(-1437.2, file.getRelativeMetadata().getRelativeVelocity().getZ(), DERIVATION_PRECISION);
349 Assertions.assertEquals(new AbsoluteDate(2010, 3, 12, 18, 29, new TimeOffset(32, TimeOffset.SECOND, 212, TimeOffset.MILLISECOND),
350 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getStartScreenPeriod());
351 Assertions.assertEquals(new AbsoluteDate(2010, 3, 15, 18, 29, new TimeOffset(32, TimeOffset.SECOND, 212, TimeOffset.MILLISECOND),
352 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getStopScreenPeriod());
353 Assertions.assertEquals(ScreenVolumeFrame.RTN, file.getRelativeMetadata().getScreenVolumeFrame());
354 Assertions.assertEquals(ScreenVolumeShape.ELLIPSOID, file.getRelativeMetadata().getScreenVolumeShape());
355 Assertions.assertEquals(200, file.getRelativeMetadata().getScreenVolumeX(), 0);
356 Assertions.assertEquals(1000, file.getRelativeMetadata().getScreenVolumeY(), 0);
357 Assertions.assertEquals(1000, file.getRelativeMetadata().getScreenVolumeZ(), 0);
358 Assertions.assertEquals(new AbsoluteDate(2010, 3, 13, 22, 37, new TimeOffset(52, TimeOffset.SECOND, 222, TimeOffset.MILLISECOND),
359 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getScreenEntryTime());
360 Assertions.assertEquals(new AbsoluteDate(2010, 3, 13, 22, 37, new TimeOffset(52, TimeOffset.SECOND, 824, TimeOffset.MILLISECOND),
361 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getScreenExitTime());
362 Assertions.assertEquals(4.835E-05, file.getRelativeMetadata().getCollisionProbability(), 1e-30);
363 Assertions.assertEquals("FOSTER-1992", file.getRelativeMetadata().getCollisionProbaMethod().getName());
364 Assertions.assertEquals(PocMethodType.FOSTER_1992,
365 file.getRelativeMetadata().getCollisionProbaMethod().getType());
366
367
368 Assertions.assertEquals("OBJECT1", file.getMetadataObject1().getObject());
369 Assertions.assertEquals(ObjectType.PAYLOAD, file.getMetadataObject1().getObjectType());
370 Assertions.assertEquals("OSA", file.getMetadataObject1().getOperatorContactPosition());
371 Assertions.assertEquals("EUMETSAT", file.getMetadataObject1().getOperatorOrganization());
372 Assertions.assertEquals("+49615130312", file.getMetadataObject1().getOperatorPhone());
373 Assertions.assertEquals("JOHN.DOE@SOMEWHERE.NET", file.getMetadataObject1().getOperatorEmail());
374 Assertions.assertEquals("EPHEMERIS SATELLITE A", file.getMetadataObject1().getEphemName());
375 Assertions.assertEquals(FramesFactory.getEME2000(), file.getMetadataObject1().getFrame());
376 Assertions.assertEquals("JACCHIA 70 DCA", file.getMetadataObject1().getAtmosphericModel());
377 Assertions.assertEquals("EGM-96", file.getMetadataObject1().getGravityModel());
378 Assertions.assertEquals(36, file.getMetadataObject1().getGravityDegree(), 0);
379 Assertions.assertEquals(36, file.getMetadataObject1().getGravityOrder(), 0);
380 Assertions.assertEquals("MOON", file.getMetadataObject1().getNBodyPerturbations().get(0).getName());
381 Assertions.assertEquals("SUN", file.getMetadataObject1().getNBodyPerturbations().get(1).getName());
382 Assertions.assertEquals("NO", file.getMetadataObject1().getSolarRadiationPressure().name());
383 Assertions.assertEquals("NO", file.getMetadataObject1().getEarthTides().name());
384 Assertions.assertEquals("NO", file.getMetadataObject1().getIntrackThrust().name());
385 Assertions.assertEquals("UTC", file.getMetadataObject1().getTimeSystem().name());
386
387
388
389 Assertions.assertEquals(new AbsoluteDate(2010, 3, 12, 2, 14,
390 new TimeOffset(12, TimeOffset.SECOND, 746, TimeOffset.MILLISECOND),
391 TimeScalesFactory.getUTC()),
392 file.getDataObject1().getODParametersBlock().getTimeLastObsStart());
393 Assertions.assertEquals(new AbsoluteDate(2010, 3, 12, 2, 14,
394 new TimeOffset(12, TimeOffset.SECOND, 746, TimeOffset.MILLISECOND),
395 TimeScalesFactory.getUTC()),
396 file.getDataObject1().getODParametersBlock().getTimeLastObsEnd());
397 Assertions.assertEquals(7.88*3600.0*24.0, file.getDataObject1().getODParametersBlock().getRecommendedOdSpan(),
398 DOUBLE_PRECISION);
399 Assertions.assertEquals(5.50*3600.0*24.0, file.getDataObject1().getODParametersBlock().getActualOdSpan(),
400 DOUBLE_PRECISION);
401 Assertions.assertEquals(592, file.getDataObject1().getODParametersBlock().getObsAvailable(), DOUBLE_PRECISION);
402 Assertions.assertEquals(579, file.getDataObject1().getODParametersBlock().getObsUsed(), DOUBLE_PRECISION);
403 Assertions.assertEquals(123, file.getDataObject1().getODParametersBlock().getTracksAvailable(),
404 DOUBLE_PRECISION);
405 Assertions.assertEquals(119, file.getDataObject1().getODParametersBlock().getTracksUsed(), DOUBLE_PRECISION);
406 Assertions.assertEquals(97.8/100.0, file.getDataObject1().getODParametersBlock().getResidualsAccepted(),
407 DOUBLE_PRECISION);
408 Assertions.assertEquals(0.864, file.getDataObject1().getODParametersBlock().getWeightedRMS(), DOUBLE_PRECISION);
409
410 Assertions.assertEquals(5.2, file.getDataObject1().getAdditionalParametersBlock().getAreaPC(),
411 DOUBLE_PRECISION);
412 Assertions.assertEquals(251.6, file.getDataObject1().getAdditionalParametersBlock().getMass(),
413 DOUBLE_PRECISION);
414 Assertions.assertEquals(0.045663, file.getDataObject1().getAdditionalParametersBlock().getCDAreaOverMass(),
415 DOUBLE_PRECISION);
416 Assertions.assertEquals(0.000000, file.getDataObject1().getAdditionalParametersBlock().getCRAreaOverMass(),
417 DOUBLE_PRECISION);
418 Assertions.assertEquals(0.0, file.getDataObject1().getAdditionalParametersBlock().getThrustAcceleration(),
419 DOUBLE_PRECISION);
420 Assertions.assertEquals(4.54570E-05, file.getDataObject1().getAdditionalParametersBlock().getSedr(),
421 DOUBLE_PRECISION);
422
423 Assertions.assertEquals(2570.097065e3, file.getDataObject1().getStateVectorBlock().getPositionVector().getX(),
424 DISTANCE_PRECISION);
425 Assertions.assertEquals(4.833547743e3, file.getDataObject1().getStateVectorBlock().getVelocityVector().getY(),
426 DERIVATION_PRECISION);
427
428 Assertions.assertEquals(4.142e1, file.getDataObject1().getRTNCovarianceBlock().getCrr(),
429 COVARIANCE_DIAG_PRECISION);
430 Assertions.assertEquals(-8.579, file.getDataObject1().getRTNCovarianceBlock().getCtr(),
431 COVARIANCE_DIAG_PRECISION);
432 Assertions.assertEquals(2.533e3, file.getDataObject1().getRTNCovarianceBlock().getCtt(),
433 COVARIANCE_DIAG_PRECISION);
434 Assertions.assertEquals(-2.313e1, file.getDataObject1().getRTNCovarianceBlock().getCnr(),
435 COVARIANCE_DIAG_PRECISION);
436 Assertions.assertEquals(1.336e1, file.getDataObject1().getRTNCovarianceBlock().getCnt(),
437 COVARIANCE_DIAG_PRECISION);
438 Assertions.assertEquals(7.098e1, file.getDataObject1().getRTNCovarianceBlock().getCnn(),
439 COVARIANCE_DIAG_PRECISION);
440
441 Assertions.assertEquals(-1.862E+00, file.getDataObject1().getRTNCovarianceBlock().getCdrgr(),
442 COVARIANCE_DIAG_PRECISION);
443 Assertions.assertEquals(3.530E+00, file.getDataObject1().getRTNCovarianceBlock().getCdrgt(),
444 COVARIANCE_DIAG_PRECISION);
445 Assertions.assertEquals(-3.100E-01, file.getDataObject1().getRTNCovarianceBlock().getCdrgn(),
446 COVARIANCE_DIAG_PRECISION);
447 Assertions.assertEquals(-1.214E-04, file.getDataObject1().getRTNCovarianceBlock().getCdrgrdot(),
448 COVARIANCE_DIAG_PRECISION);
449 Assertions.assertEquals(2.580E-04, file.getDataObject1().getRTNCovarianceBlock().getCdrgtdot(),
450 COVARIANCE_DIAG_PRECISION);
451 Assertions.assertEquals(-6.467E-05, file.getDataObject1().getRTNCovarianceBlock().getCdrgndot(),
452 COVARIANCE_DIAG_PRECISION);
453 Assertions.assertEquals(3.483E-06, file.getDataObject1().getRTNCovarianceBlock().getCdrgdrg(),
454 COVARIANCE_DIAG_PRECISION);
455
456 Assertions.assertEquals(-1.492E+02, file.getDataObject1().getRTNCovarianceBlock().getCsrpr(),
457 COVARIANCE_DIAG_PRECISION);
458 Assertions.assertEquals(2.044E+02, file.getDataObject1().getRTNCovarianceBlock().getCsrpt(),
459 COVARIANCE_DIAG_PRECISION);
460 Assertions.assertEquals(-2.331E+01, file.getDataObject1().getRTNCovarianceBlock().getCsrpn(),
461 COVARIANCE_DIAG_PRECISION);
462 Assertions.assertEquals(-1.254E-03, file.getDataObject1().getRTNCovarianceBlock().getCsrprdot(),
463 COVARIANCE_DIAG_PRECISION);
464 Assertions.assertEquals(2.013E-02, file.getDataObject1().getRTNCovarianceBlock().getCsrptdot(),
465 COVARIANCE_DIAG_PRECISION);
466 Assertions.assertEquals(-4.700E-03, file.getDataObject1().getRTNCovarianceBlock().getCsrpndot(),
467 COVARIANCE_DIAG_PRECISION);
468 Assertions.assertEquals(2.210E-04, file.getDataObject1().getRTNCovarianceBlock().getCsrpdrg(),
469 COVARIANCE_DIAG_PRECISION);
470 Assertions.assertEquals(1.593E-02, file.getDataObject1().getRTNCovarianceBlock().getCsrpsrp(),
471 COVARIANCE_DIAG_PRECISION);
472
473
474
475
476 Assertions.assertEquals(file.getSegments().get(1).getMetadata().getRelativeMetadata().getScreenVolumeX(),
477 file.getRelativeMetadata().getScreenVolumeX(), DISTANCE_PRECISION);
478 Assertions.assertEquals(
479 file.getSegments().get(1).getMetadata().getRelativeMetadata().getRelativePosition().getY(),
480 file.getRelativeMetadata().getRelativePosition().getY(), DISTANCE_PRECISION);
481 Assertions.assertEquals(
482 file.getSegments().get(1).getMetadata().getRelativeMetadata().getRelativeVelocity().getZ(),
483 file.getRelativeMetadata().getRelativeVelocity().getZ(), DERIVATION_PRECISION);
484 Assertions.assertEquals(file.getSegments().get(1).getMetadata().getRelativeMetadata().getCollisionProbability(),
485 file.getRelativeMetadata().getCollisionProbability(), 1e-30);
486 Assertions.assertEquals(file.getSegments().get(1).getMetadata().getRelativeMetadata().getCollisionProbaMethod(),
487 file.getRelativeMetadata().getCollisionProbaMethod());
488
489
490 Assertions.assertEquals("OBJECT2", file.getMetadataObject2().getObject());
491 Assertions.assertEquals("30337", file.getMetadataObject2().getObjectDesignator());
492 Assertions.assertEquals("SATCAT", file.getMetadataObject2().getCatalogName());
493 Assertions.assertEquals("FENGYUN 1C DEB", file.getMetadataObject2().getObjectName());
494 Assertions.assertEquals("1999-025AA", file.getMetadataObject2().getInternationalDes());
495 Assertions.assertEquals("NONE", file.getMetadataObject2().getEphemName());
496 Assertions.assertEquals(CovarianceMethod.CALCULATED, file.getMetadataObject2().getCovarianceMethod());
497 Assertions.assertEquals(Maneuvrable.NO, file.getMetadataObject2().getManeuverable());
498 Assertions.assertEquals(CelestialBodyFrame.EME2000,
499 file.getMetadataObject2().getRefFrame().asCelestialBodyFrame());
500 Assertions.assertEquals("UTC", file.getMetadataObject2().getTimeSystem().name());
501
502
503 Assertions.assertEquals(2569.540800e3, file.getDataObject2().getStateVectorBlock().getPositionVector().getX(),
504 DISTANCE_PRECISION);
505 Assertions.assertEquals(-2.888612500e3, file.getDataObject2().getStateVectorBlock().getVelocityVector().getX(),
506 DERIVATION_PRECISION);
507
508 Assertions.assertEquals(1.337e3, file.getDataObject2().getRTNCovarianceBlock().getCrr(),
509 COVARIANCE_DIAG_PRECISION);
510 Assertions.assertEquals(-7.5888e2, file.getDataObject2().getRTNCovarianceBlock().getCnt(),
511 COVARIANCE_DIAG_PRECISION);
512
513 Assertions.assertEquals(2.591e-3, file.getDataObject2().getRTNCovarianceBlock().getCrdotr(),
514 COVARIANCE_PRECISION);
515 Assertions.assertEquals(6.886e-5, file.getDataObject2().getRTNCovarianceBlock().getCrdotrdot(),
516 COVARIANCE_PRECISION);
517
518 Assertions.assertEquals(-1.506e-4, file.getDataObject2().getRTNCovarianceBlock().getCtdott(),
519 COVARIANCE_PRECISION);
520 Assertions.assertEquals(1.059e-5, file.getDataObject2().getRTNCovarianceBlock().getCtdottdot(),
521 COVARIANCE_PRECISION);
522
523 Assertions.assertEquals(8.633e-5, file.getDataObject2().getRTNCovarianceBlock().getCndotn(),
524 COVARIANCE_PRECISION);
525 Assertions.assertEquals(-1.903e-6, file.getDataObject2().getRTNCovarianceBlock().getCndotrdot(),
526 COVARIANCE_PRECISION);
527
528 Assertions.assertEquals(-5.117E-01, file.getDataObject2().getRTNCovarianceBlock().getCdrgr(),
529 COVARIANCE_PRECISION);
530 Assertions.assertEquals(1.319E+00, file.getDataObject2().getRTNCovarianceBlock().getCdrgt(),
531 COVARIANCE_PRECISION);
532 Assertions.assertEquals(-1.903E-05, file.getDataObject2().getRTNCovarianceBlock().getCdrgndot(),
533 COVARIANCE_PRECISION);
534 Assertions.assertEquals(7.402E-05, file.getDataObject2().getRTNCovarianceBlock().getCdrgtdot(),
535 COVARIANCE_PRECISION);
536 Assertions.assertEquals(-3.297E+01, file.getDataObject2().getRTNCovarianceBlock().getCsrpr(),
537 COVARIANCE_PRECISION);
538 Assertions.assertEquals(8.164E+01, file.getDataObject2().getRTNCovarianceBlock().getCsrpt(),
539 COVARIANCE_PRECISION);
540
541
542 Assertions.assertEquals("[Relative Metadata/Data]", file.getRelativeMetadata().getComment().toString());
543 Assertions.assertEquals("[Object1 Metadata]", file.getMetadataObject1().getComments().toString());
544 Assertions.assertEquals("[Object2 Metadata]", file.getMetadataObject2().getComments().toString());
545 Assertions.assertEquals("[Object1 Data]", file.getDataObject1().getComments().toString());
546 Assertions.assertEquals("[Object1 OD Parameters]",
547 file.getDataObject1().getODParametersBlock().getComments().toString());
548 Assertions.assertEquals("[Object2 OD Parameters]",
549 file.getDataObject2().getODParametersBlock().getComments().toString());
550 Assertions.assertEquals(
551 "[Object1 Additional Parameters, Apogee Altitude=779 km, Perigee Altitude=765 km, Inclination=86.4 deg]",
552 file.getDataObject1().getAdditionalParametersBlock().getComments().toString());
553 Assertions.assertEquals(
554 "[Object2 Additional Parameters, Apogee Altitude=786 km, Perigee Altitude=414 km, Inclination=98.9 deg]",
555 file.getDataObject2().getAdditionalParametersBlock().getComments().toString());
556
557 }
558
559 @Test
560 public void testParseCDM3() {
561
562
563 final String ex = "/ccsds/cdm/CDMExample3.txt";
564
565
566 final CdmParser parser = new ParserBuilder().buildCdmParser();
567
568 final DataSource source = new DataSource(ex, () -> getClass().getResourceAsStream(ex));
569
570
571 final Cdm file = parser.parseMessage(source);
572
573
574 Assertions.assertEquals(IERSConventions.IERS_2010, file.getConventions());
575 Assertions.assertEquals(DataContext.getDefault(), file.getDataContext());
576
577
578 Assertions.assertEquals(1.0, file.getHeader().getFormatVersion(), 0.0);
579 Assertions.assertEquals(new AbsoluteDate(2012, 9, 12, 22, 31, 12,
580 TimeScalesFactory.getUTC()), file.getHeader().getCreationDate());
581 Assertions.assertEquals("SDC", file.getHeader().getOriginator());
582 Assertions.assertEquals("GALAXY 15", file.getHeader().getMessageFor());
583 Assertions.assertEquals("20120912223112", file.getHeader().getMessageId());
584
585
586
587 Assertions.assertEquals(new AbsoluteDate(2012, 9, 13, 22, 37, new TimeOffset(52, TimeOffset.SECOND, 618, TimeOffset.MILLISECOND),
588 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getTca());
589 Assertions.assertEquals(104.92, file.getRelativeMetadata().getMissDistance(), DISTANCE_PRECISION);
590 Assertions.assertEquals(12093.52, file.getRelativeMetadata().getRelativeSpeed(), DERIVATION_PRECISION);
591 Assertions.assertEquals(30.6, file.getRelativeMetadata().getRelativePosition().getX(), DISTANCE_PRECISION);
592 Assertions.assertEquals(100.2, file.getRelativeMetadata().getRelativePosition().getY(), DISTANCE_PRECISION);
593 Assertions.assertEquals(5.7, file.getRelativeMetadata().getRelativePosition().getZ(), DISTANCE_PRECISION);
594 Assertions.assertEquals(-20.3, file.getRelativeMetadata().getRelativeVelocity().getX(), DERIVATION_PRECISION);
595 Assertions.assertEquals(-12000.0, file.getRelativeMetadata().getRelativeVelocity().getY(),
596 DERIVATION_PRECISION);
597 Assertions.assertEquals(-1500.9, file.getRelativeMetadata().getRelativeVelocity().getZ(), DERIVATION_PRECISION);
598 Assertions.assertEquals(new AbsoluteDate(2012, 9, 12, 18, 29, new TimeOffset(32, TimeOffset.SECOND, 212, TimeOffset.MILLISECOND),
599 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getStartScreenPeriod());
600 Assertions.assertEquals(new AbsoluteDate(2012, 9, 15, 18, 29, new TimeOffset(32, TimeOffset.SECOND, 212, TimeOffset.MILLISECOND),
601 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getStopScreenPeriod());
602 Assertions.assertEquals(ScreenVolumeFrame.RTN, file.getRelativeMetadata().getScreenVolumeFrame());
603 Assertions.assertEquals(ScreenVolumeShape.ELLIPSOID, file.getRelativeMetadata().getScreenVolumeShape());
604 Assertions.assertEquals(500, file.getRelativeMetadata().getScreenVolumeX(), 0);
605 Assertions.assertEquals(500, file.getRelativeMetadata().getScreenVolumeY(), 0);
606 Assertions.assertEquals(500, file.getRelativeMetadata().getScreenVolumeZ(), 0);
607 Assertions.assertEquals(new AbsoluteDate(2012, 9, 13, 20, 25, new TimeOffset(43, TimeOffset.SECOND, 222, TimeOffset.MILLISECOND),
608 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getScreenEntryTime());
609 Assertions.assertEquals(new AbsoluteDate(2012, 9, 13, 23, 44, new TimeOffset(29, TimeOffset.SECOND, 324, TimeOffset.MILLISECOND),
610 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getScreenExitTime());
611 Assertions.assertEquals(2.355e-03, file.getRelativeMetadata().getCollisionProbability(), 1e-30);
612 Assertions.assertEquals("ALFANO-2005", file.getRelativeMetadata().getCollisionProbaMethod().getName());
613 Assertions.assertEquals(PocMethodType.ALFANO_2005,
614 file.getRelativeMetadata().getCollisionProbaMethod().getType());
615
616
617 Assertions.assertEquals("OBJECT1", file.getMetadataObject1().getObject());
618 Assertions.assertEquals("28884", file.getMetadataObject1().getObjectDesignator());
619 Assertions.assertEquals("SATCAT", file.getMetadataObject1().getCatalogName());
620 Assertions.assertEquals("GALAXY 15", file.getMetadataObject1().getObjectName());
621 Assertions.assertEquals("2005-041A", file.getMetadataObject1().getInternationalDes());
622 Assertions.assertEquals(ObjectType.PAYLOAD, file.getMetadataObject1().getObjectType());
623 Assertions.assertNull(file.getMetadataObject1().getOperatorContactPosition());
624 Assertions.assertEquals("INTELSAT", file.getMetadataObject1().getOperatorOrganization());
625 Assertions.assertEquals("GALAXY-15A-2012JAN-WMANEUVER23A", file.getMetadataObject1().getEphemName());
626 Assertions.assertEquals(CovarianceMethod.CALCULATED, file.getMetadataObject1().getCovarianceMethod());
627 Assertions.assertEquals(Maneuvrable.YES, file.getMetadataObject1().getManeuverable());
628 Assertions.assertEquals(CelestialBodyFrame.EME2000,
629 file.getMetadataObject1().getRefFrame().asCelestialBodyFrame());
630 Assertions.assertEquals("UTC", file.getMetadataObject1().getTimeSystem().name());
631
632
633
634 Assertions.assertEquals(new AbsoluteDate(2012, 9, 6, 20, 25, new TimeOffset(43, TimeOffset.SECOND, 222, TimeOffset.MILLISECOND),
635 TimeScalesFactory.getUTC()),
636 file.getDataObject1().getODParametersBlock().getTimeLastObsStart());
637 Assertions.assertEquals(new AbsoluteDate(2012, 9, 6, 20, 25, new TimeOffset(43, TimeOffset.SECOND, 222, TimeOffset.MILLISECOND),
638 TimeScalesFactory.getUTC()),
639 file.getDataObject1().getODParametersBlock().getTimeLastObsEnd());
640
641 Assertions.assertEquals(-41600.46272465e3,
642 file.getDataObject1().getStateVectorBlock().getPositionVector().getX(), DISTANCE_PRECISION);
643 Assertions.assertEquals(3626.912120064e3,
644 file.getDataObject1().getStateVectorBlock().getPositionVector().getY(), DISTANCE_PRECISION);
645 Assertions.assertEquals(6039.06350924e3, file.getDataObject1().getStateVectorBlock().getPositionVector().getZ(),
646 DISTANCE_PRECISION);
647 Assertions.assertEquals(-0.306132852503e3,
648 file.getDataObject1().getStateVectorBlock().getVelocityVector().getX(), DERIVATION_PRECISION);
649 Assertions.assertEquals(-3.044998353334e3,
650 file.getDataObject1().getStateVectorBlock().getVelocityVector().getY(), DERIVATION_PRECISION);
651 Assertions.assertEquals(-0.287674310725e3,
652 file.getDataObject1().getStateVectorBlock().getVelocityVector().getZ(), DERIVATION_PRECISION);
653
654 Assertions.assertEquals(4.142e1, file.getDataObject1().getRTNCovarianceBlock().getCrr(),
655 COVARIANCE_DIAG_PRECISION);
656 Assertions.assertEquals(-8.579, file.getDataObject1().getRTNCovarianceBlock().getCtr(),
657 COVARIANCE_DIAG_PRECISION);
658 Assertions.assertEquals(2.533e3, file.getDataObject1().getRTNCovarianceBlock().getCtt(),
659 COVARIANCE_DIAG_PRECISION);
660 Assertions.assertEquals(-2.313e1, file.getDataObject1().getRTNCovarianceBlock().getCnr(),
661 COVARIANCE_DIAG_PRECISION);
662 Assertions.assertEquals(1.336e1, file.getDataObject1().getRTNCovarianceBlock().getCnt(),
663 COVARIANCE_DIAG_PRECISION);
664 Assertions.assertEquals(7.098e1, file.getDataObject1().getRTNCovarianceBlock().getCnn(),
665 COVARIANCE_DIAG_PRECISION);
666
667 Assertions.assertEquals(2.520E-03, file.getDataObject1().getRTNCovarianceBlock().getCrdotr(),
668 COVARIANCE_PRECISION);
669 Assertions.assertEquals(-5.476E+00, file.getDataObject1().getRTNCovarianceBlock().getCrdott(),
670 COVARIANCE_PRECISION);
671 Assertions.assertEquals(8.626E-04, file.getDataObject1().getRTNCovarianceBlock().getCrdotn(),
672 COVARIANCE_PRECISION);
673 Assertions.assertEquals(5.744E-03, file.getDataObject1().getRTNCovarianceBlock().getCrdotrdot(),
674 COVARIANCE_PRECISION);
675
676 Assertions.assertEquals(-1.006E-02, file.getDataObject1().getRTNCovarianceBlock().getCtdotr(),
677 COVARIANCE_PRECISION);
678 Assertions.assertEquals(4.041E-03, file.getDataObject1().getRTNCovarianceBlock().getCtdott(),
679 COVARIANCE_PRECISION);
680 Assertions.assertEquals(-1.359E-03, file.getDataObject1().getRTNCovarianceBlock().getCtdotn(),
681 COVARIANCE_PRECISION);
682 Assertions.assertEquals(-1.502E-05, file.getDataObject1().getRTNCovarianceBlock().getCtdotrdot(),
683 COVARIANCE_PRECISION);
684 Assertions.assertEquals(1.049E-05, file.getDataObject1().getRTNCovarianceBlock().getCtdottdot(),
685 COVARIANCE_PRECISION);
686
687 Assertions.assertEquals(1.053E-03, file.getDataObject1().getRTNCovarianceBlock().getCndotr(),
688 COVARIANCE_PRECISION);
689 Assertions.assertEquals(-3.412E-03, file.getDataObject1().getRTNCovarianceBlock().getCndott(),
690 COVARIANCE_PRECISION);
691 Assertions.assertEquals(1.213E-02, file.getDataObject1().getRTNCovarianceBlock().getCndotn(),
692 COVARIANCE_PRECISION);
693 Assertions.assertEquals(-3.004E-06, file.getDataObject1().getRTNCovarianceBlock().getCndotrdot(),
694 COVARIANCE_PRECISION);
695 Assertions.assertEquals(-1.091E-06, file.getDataObject1().getRTNCovarianceBlock().getCndottdot(),
696 COVARIANCE_PRECISION);
697 Assertions.assertEquals(5.529E-05, file.getDataObject1().getRTNCovarianceBlock().getCndotndot(),
698 COVARIANCE_PRECISION);
699
700
701
702 Assertions.assertEquals(file.getSegments().get(1).getMetadata().getRelativeMetadata().getScreenVolumeX(),
703 file.getRelativeMetadata().getScreenVolumeX(), DISTANCE_PRECISION);
704 Assertions.assertEquals(
705 file.getSegments().get(1).getMetadata().getRelativeMetadata().getRelativePosition().getX(),
706 file.getRelativeMetadata().getRelativePosition().getX(), DISTANCE_PRECISION);
707 Assertions.assertEquals(
708 file.getSegments().get(1).getMetadata().getRelativeMetadata().getRelativeVelocity().getZ(),
709 file.getRelativeMetadata().getRelativeVelocity().getZ(), DERIVATION_PRECISION);
710 Assertions.assertEquals(file.getSegments().get(1).getMetadata().getRelativeMetadata().getCollisionProbability(),
711 file.getRelativeMetadata().getCollisionProbability(), 1e-30);
712 Assertions.assertEquals(file.getSegments().get(1).getMetadata().getRelativeMetadata().getCollisionProbaMethod(),
713 file.getRelativeMetadata().getCollisionProbaMethod());
714
715
716 Assertions.assertEquals("OBJECT2", file.getMetadataObject2().getObject());
717 Assertions.assertEquals("21139", file.getMetadataObject2().getObjectDesignator());
718 Assertions.assertEquals("SATCAT", file.getMetadataObject2().getCatalogName());
719 Assertions.assertEquals("ASTRA 1B", file.getMetadataObject2().getObjectName());
720 Assertions.assertEquals("1991-051A", file.getMetadataObject2().getInternationalDes());
721 Assertions.assertEquals(ObjectType.PAYLOAD, file.getMetadataObject2().getObjectType());
722 Assertions.assertEquals("NONE", file.getMetadataObject2().getEphemName());
723 Assertions.assertEquals(CovarianceMethod.CALCULATED, file.getMetadataObject2().getCovarianceMethod());
724 Assertions.assertEquals(Maneuvrable.YES, file.getMetadataObject2().getManeuverable());
725 Assertions.assertEquals(CelestialBodyFrame.EME2000,
726 file.getMetadataObject2().getRefFrame().asCelestialBodyFrame());
727 Assertions.assertEquals("UTC", file.getMetadataObject2().getTimeSystem().name());
728
729
730 Assertions.assertEquals(-2956.02034826e3,
731 file.getDataObject2().getStateVectorBlock().getPositionVector().getX(), DISTANCE_PRECISION);
732 Assertions.assertEquals(-3.047096589536e3,
733 file.getDataObject2().getStateVectorBlock().getVelocityVector().getX(), DERIVATION_PRECISION);
734
735 Assertions.assertEquals(1.337e3, file.getDataObject2().getRTNCovarianceBlock().getCrr(),
736 COVARIANCE_DIAG_PRECISION);
737 Assertions.assertEquals(-7.5888e2, file.getDataObject2().getRTNCovarianceBlock().getCnt(),
738 COVARIANCE_DIAG_PRECISION);
739
740 Assertions.assertEquals(2.591e-3, file.getDataObject2().getRTNCovarianceBlock().getCrdotr(),
741 COVARIANCE_PRECISION);
742 Assertions.assertEquals(6.886e-5, file.getDataObject2().getRTNCovarianceBlock().getCrdotrdot(),
743 COVARIANCE_PRECISION);
744
745 Assertions.assertEquals(-1.506e-4, file.getDataObject2().getRTNCovarianceBlock().getCtdott(),
746 COVARIANCE_PRECISION);
747 Assertions.assertEquals(1.059e-5, file.getDataObject2().getRTNCovarianceBlock().getCtdottdot(),
748 COVARIANCE_PRECISION);
749
750 Assertions.assertEquals(8.633e-5, file.getDataObject2().getRTNCovarianceBlock().getCndotn(),
751 COVARIANCE_PRECISION);
752 Assertions.assertEquals(-1.903e-6, file.getDataObject2().getRTNCovarianceBlock().getCndotrdot(),
753 COVARIANCE_PRECISION);
754
755
756 Assertions.assertEquals("[Relative Metadata/Data]",
757 file.getMetadataObject1().getRelativeMetadata().getComment().toString());
758 Assertions.assertEquals("[Object1 Metadata]", file.getMetadataObject1().getComments().toString());
759 Assertions.assertEquals("[Object2 Metadata]", file.getMetadataObject2().getComments().toString());
760 Assertions.assertEquals("[Object1 OD Parameters]",
761 file.getDataObject1().getODParametersBlock().getComments().toString());
762 Assertions.assertEquals("[Object1 Data]", file.getDataObject1().getComments().toString());
763 Assertions.assertEquals("[Object2 Data]", file.getDataObject2().getComments().toString());
764 Assertions.assertEquals("[Object2 OD Parameters]",
765 file.getDataObject2().getODParametersBlock().getComments().toString());
766 Assertions.assertEquals("[]", file.getDataObject1().getStateVectorBlock().getComments().toString());
767 Assertions.assertEquals("[Object1 Covariance in the RTN Coordinate Frame]",
768 file.getDataObject1().getRTNCovarianceBlock().getComments().toString());
769
770 }
771
772 @Test
773 public void testParseCDM4() {
774
775
776 final String ex = "/ccsds/cdm/CDMExample4.txt";
777
778
779 final CdmParser parser = new ParserBuilder().buildCdmParser();
780
781 final DataSource source = new DataSource(ex, () -> getClass().getResourceAsStream(ex));
782
783
784 final Cdm file = parser.parseMessage(source);
785
786 Assertions.assertEquals(IERSConventions.IERS_2010, file.getConventions());
787 Assertions.assertEquals(DataContext.getDefault(), file.getDataContext());
788
789
790 Assertions.assertEquals(1.0, file.getHeader().getFormatVersion(), 1.0e-10);
791 Assertions.assertEquals(new AbsoluteDate(2010, 3, 12, 22, 31, 12,
792 TimeScalesFactory.getUTC()), file.getHeader().getCreationDate());
793 Assertions.assertEquals("JSPOC", file.getHeader().getOriginator());
794 Assertions.assertEquals("201113719185", file.getHeader().getMessageId());
795
796
797
798 Assertions.assertEquals(new AbsoluteDate(2010, 3, 13, 22, 37, new TimeOffset(52, TimeOffset.SECOND, 618, TimeOffset.MILLISECOND),
799 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getTca());
800 Assertions.assertEquals(715.0, file.getRelativeMetadata().getMissDistance(), DISTANCE_PRECISION);
801
802 Assertions.assertEquals(new AbsoluteDate(2010, 3, 12, 18, 29, new TimeOffset(32, TimeOffset.SECOND, 212, TimeOffset.MILLISECOND),
803 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getStartScreenPeriod());
804 Assertions.assertEquals(new AbsoluteDate(2010, 3, 15, 18, 29, new TimeOffset(32, TimeOffset.SECOND, 212, TimeOffset.MILLISECOND),
805 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getStopScreenPeriod());
806 Assertions.assertEquals(ScreenVolumeFrame.RTN, file.getRelativeMetadata().getScreenVolumeFrame());
807 Assertions.assertEquals(ScreenVolumeShape.ELLIPSOID, file.getRelativeMetadata().getScreenVolumeShape());
808 Assertions.assertEquals(200, file.getRelativeMetadata().getScreenVolumeX(), 0);
809 Assertions.assertEquals(1000, file.getRelativeMetadata().getScreenVolumeY(), 0);
810 Assertions.assertEquals(1000, file.getRelativeMetadata().getScreenVolumeZ(), 0);
811 Assertions.assertEquals(new AbsoluteDate(2010, 3, 13, 22, 37, new TimeOffset(52, TimeOffset.SECOND, 222, TimeOffset.MILLISECOND),
812 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getScreenEntryTime());
813 Assertions.assertEquals(new AbsoluteDate(2010, 3, 13, 22, 37, new TimeOffset(52, TimeOffset.SECOND, 824, TimeOffset.MILLISECOND),
814 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getScreenExitTime());
815 Assertions.assertEquals(4.835E-05, file.getRelativeMetadata().getCollisionProbability(), 1e-30);
816 Assertions.assertEquals("FOSTER-1992", file.getRelativeMetadata().getCollisionProbaMethod().getName());
817 Assertions.assertEquals(PocMethodType.FOSTER_1992,
818 file.getRelativeMetadata().getCollisionProbaMethod().getType());
819
820
821 Assertions.assertEquals("OBJECT1", file.getMetadataObject1().getObject());
822 Assertions.assertEquals(ObjectType.PAYLOAD, file.getMetadataObject1().getObjectType());
823 Assertions.assertEquals("OSA", file.getMetadataObject1().getOperatorContactPosition());
824 Assertions.assertEquals("EUMETSAT", file.getMetadataObject1().getOperatorOrganization());
825
826
827 Assertions.assertEquals(4.142e1, file.getDataObject1().getRTNCovarianceBlock().getCrr(),
828 COVARIANCE_DIAG_PRECISION);
829 Assertions.assertEquals(-8.579, file.getDataObject1().getRTNCovarianceBlock().getCtr(),
830 COVARIANCE_DIAG_PRECISION);
831 Assertions.assertEquals(2.533e3, file.getDataObject1().getRTNCovarianceBlock().getCtt(),
832 COVARIANCE_DIAG_PRECISION);
833 Assertions.assertEquals(-2.313e1, file.getDataObject1().getRTNCovarianceBlock().getCnr(),
834 COVARIANCE_DIAG_PRECISION);
835 Assertions.assertEquals(1.336e1, file.getDataObject1().getRTNCovarianceBlock().getCnt(),
836 COVARIANCE_DIAG_PRECISION);
837 Assertions.assertEquals(7.098e1, file.getDataObject1().getRTNCovarianceBlock().getCnn(),
838 COVARIANCE_DIAG_PRECISION);
839
840 Assertions.assertEquals(-1.862E+00, file.getDataObject1().getRTNCovarianceBlock().getCdrgr(),
841 COVARIANCE_DIAG_PRECISION);
842 Assertions.assertEquals(3.530E+00, file.getDataObject1().getRTNCovarianceBlock().getCdrgt(),
843 COVARIANCE_DIAG_PRECISION);
844 Assertions.assertEquals(-3.100E-01, file.getDataObject1().getRTNCovarianceBlock().getCdrgn(),
845 COVARIANCE_DIAG_PRECISION);
846 Assertions.assertEquals(-1.214E-04, file.getDataObject1().getRTNCovarianceBlock().getCdrgrdot(),
847 COVARIANCE_DIAG_PRECISION);
848 Assertions.assertEquals(2.580E-04, file.getDataObject1().getRTNCovarianceBlock().getCdrgtdot(),
849 COVARIANCE_DIAG_PRECISION);
850 Assertions.assertEquals(-6.467E-05, file.getDataObject1().getRTNCovarianceBlock().getCdrgndot(),
851 COVARIANCE_DIAG_PRECISION);
852 Assertions.assertEquals(3.483E-06, file.getDataObject1().getRTNCovarianceBlock().getCdrgdrg(),
853 COVARIANCE_DIAG_PRECISION);
854
855 Assertions.assertEquals(-1.492E+02, file.getDataObject1().getRTNCovarianceBlock().getCsrpr(),
856 COVARIANCE_DIAG_PRECISION);
857 Assertions.assertEquals(2.044E+02, file.getDataObject1().getRTNCovarianceBlock().getCsrpt(),
858 COVARIANCE_DIAG_PRECISION);
859 Assertions.assertEquals(-2.331E+01, file.getDataObject1().getRTNCovarianceBlock().getCsrpn(),
860 COVARIANCE_DIAG_PRECISION);
861 Assertions.assertEquals(-1.254E-03, file.getDataObject1().getRTNCovarianceBlock().getCsrprdot(),
862 COVARIANCE_DIAG_PRECISION);
863 Assertions.assertEquals(2.013E-02, file.getDataObject1().getRTNCovarianceBlock().getCsrptdot(),
864 COVARIANCE_DIAG_PRECISION);
865 Assertions.assertEquals(-4.700E-03, file.getDataObject1().getRTNCovarianceBlock().getCsrpndot(),
866 COVARIANCE_DIAG_PRECISION);
867 Assertions.assertEquals(2.210E-04, file.getDataObject1().getRTNCovarianceBlock().getCsrpdrg(),
868 COVARIANCE_DIAG_PRECISION);
869 Assertions.assertEquals(1.593E-02, file.getDataObject1().getRTNCovarianceBlock().getCsrpsrp(),
870 COVARIANCE_DIAG_PRECISION);
871
872 Assertions.assertEquals(-1.803E-06, file.getDataObject1().getRTNCovarianceBlock().getCthrr(),
873 COVARIANCE_PRECISION);
874 Assertions.assertEquals(3.803E-03, file.getDataObject1().getRTNCovarianceBlock().getCthrt(),
875 COVARIANCE_PRECISION);
876 Assertions.assertEquals(3.303E02, file.getDataObject1().getRTNCovarianceBlock().getCthrn(),
877 COVARIANCE_PRECISION);
878 Assertions.assertEquals(7.203E01, file.getDataObject1().getRTNCovarianceBlock().getCthrrdot(),
879 COVARIANCE_PRECISION);
880 Assertions.assertEquals(-1.654E01, file.getDataObject1().getRTNCovarianceBlock().getCthrtdot(),
881 COVARIANCE_PRECISION);
882 Assertions.assertEquals(9.203E-01, file.getDataObject1().getRTNCovarianceBlock().getCthrndot(),
883 COVARIANCE_PRECISION);
884 Assertions.assertEquals(-3.876, file.getDataObject1().getRTNCovarianceBlock().getCthrdrg(),
885 COVARIANCE_PRECISION);
886 Assertions.assertEquals(6.876E03, file.getDataObject1().getRTNCovarianceBlock().getCthrsrp(),
887 COVARIANCE_PRECISION);
888 Assertions.assertEquals(-2.986E-02, file.getDataObject1().getRTNCovarianceBlock().getCthrthr(),
889 COVARIANCE_PRECISION);
890
891
892
893 Assertions.assertEquals(file.getSegments().get(1).getMetadata().getRelativeMetadata().getScreenVolumeX(),
894 file.getRelativeMetadata().getScreenVolumeX(), DISTANCE_PRECISION);
895 Assertions.assertEquals(
896 file.getSegments().get(1).getMetadata().getRelativeMetadata().getRelativePosition().getY(),
897 file.getRelativeMetadata().getRelativePosition().getY(), DISTANCE_PRECISION);
898 Assertions.assertEquals(
899 file.getSegments().get(1).getMetadata().getRelativeMetadata().getRelativeVelocity().getZ(),
900 file.getRelativeMetadata().getRelativeVelocity().getZ(), DERIVATION_PRECISION);
901 Assertions.assertEquals(file.getSegments().get(1).getMetadata().getRelativeMetadata().getCollisionProbability(),
902 file.getRelativeMetadata().getCollisionProbability(), 1e-30);
903 Assertions.assertEquals(file.getSegments().get(1).getMetadata().getRelativeMetadata().getCollisionProbaMethod(),
904 file.getRelativeMetadata().getCollisionProbaMethod());
905
906
907 Assertions.assertEquals("OBJECT2", file.getMetadataObject2().getObject());
908 Assertions.assertEquals("30337", file.getMetadataObject2().getObjectDesignator());
909 Assertions.assertEquals("SATCAT", file.getMetadataObject2().getCatalogName());
910 Assertions.assertEquals("FENGYUN 1C DEB", file.getMetadataObject2().getObjectName());
911 Assertions.assertEquals("1999-025AA", file.getMetadataObject2().getInternationalDes());
912 Assertions.assertEquals("NONE", file.getMetadataObject2().getEphemName());
913 Assertions.assertEquals(CovarianceMethod.CALCULATED, file.getMetadataObject2().getCovarianceMethod());
914 Assertions.assertEquals(Maneuvrable.NO, file.getMetadataObject2().getManeuverable());
915 Assertions.assertEquals(CelestialBodyFrame.EME2000,
916 file.getMetadataObject2().getRefFrame().asCelestialBodyFrame());
917 Assertions.assertEquals("UTC", file.getMetadataObject2().getTimeSystem().name());
918
919
920 Assertions.assertEquals(2569.540800e3, file.getDataObject2().getStateVectorBlock().getPositionVector().getX(),
921 DISTANCE_PRECISION);
922 Assertions.assertEquals(-2.888612500e3, file.getDataObject2().getStateVectorBlock().getVelocityVector().getX(),
923 DERIVATION_PRECISION);
924
925 Assertions.assertEquals(1.337e3, file.getDataObject2().getRTNCovarianceBlock().getCrr(),
926 COVARIANCE_DIAG_PRECISION);
927 Assertions.assertEquals(-7.5888e2, file.getDataObject2().getRTNCovarianceBlock().getCnt(),
928 COVARIANCE_DIAG_PRECISION);
929
930 Assertions.assertEquals(2.591e-3, file.getDataObject2().getRTNCovarianceBlock().getCrdotr(),
931 COVARIANCE_PRECISION);
932 Assertions.assertEquals(6.886e-5, file.getDataObject2().getRTNCovarianceBlock().getCrdotrdot(),
933 COVARIANCE_PRECISION);
934
935 Assertions.assertEquals(-1.506e-4, file.getDataObject2().getRTNCovarianceBlock().getCtdott(),
936 COVARIANCE_PRECISION);
937 Assertions.assertEquals(1.059e-5, file.getDataObject2().getRTNCovarianceBlock().getCtdottdot(),
938 COVARIANCE_PRECISION);
939
940 Assertions.assertEquals(8.633e-5, file.getDataObject2().getRTNCovarianceBlock().getCndotn(),
941 COVARIANCE_PRECISION);
942 Assertions.assertEquals(-1.903e-6, file.getDataObject2().getRTNCovarianceBlock().getCndotrdot(),
943 COVARIANCE_PRECISION);
944
945 Assertions.assertEquals(-5.117E-01, file.getDataObject2().getRTNCovarianceBlock().getCdrgr(),
946 COVARIANCE_PRECISION);
947 Assertions.assertEquals(1.319E+00, file.getDataObject2().getRTNCovarianceBlock().getCdrgt(),
948 COVARIANCE_PRECISION);
949 Assertions.assertEquals(-1.903E-05, file.getDataObject2().getRTNCovarianceBlock().getCdrgndot(),
950 COVARIANCE_PRECISION);
951 Assertions.assertEquals(7.402E-05, file.getDataObject2().getRTNCovarianceBlock().getCdrgtdot(),
952 COVARIANCE_PRECISION);
953 Assertions.assertEquals(-3.297E+01, file.getDataObject2().getRTNCovarianceBlock().getCsrpr(),
954 COVARIANCE_PRECISION);
955 Assertions.assertEquals(8.164E+01, file.getDataObject2().getRTNCovarianceBlock().getCsrpt(),
956 COVARIANCE_PRECISION);
957
958
959 Assertions.assertEquals("[Relative Metadata/Data]", file.getRelativeMetadata().getComment().toString());
960 Assertions.assertEquals("[Object1 Metadata]", file.getMetadataObject1().getComments().toString());
961 Assertions.assertEquals("[Object2 Metadata]", file.getMetadataObject2().getComments().toString());
962 Assertions.assertEquals("[Object1 Data]", file.getDataObject1().getComments().toString());
963 Assertions.assertEquals("[Object1 OD Parameters]",
964 file.getDataObject1().getODParametersBlock().getComments().toString());
965 Assertions.assertEquals("[Object2 OD Parameters]",
966 file.getDataObject2().getODParametersBlock().getComments().toString());
967 Assertions.assertEquals(
968 "[Object1 Additional Parameters, Apogee Altitude=779 km, Perigee Altitude=765 km, Inclination=86.4 deg]",
969 file.getDataObject1().getAdditionalParametersBlock().getComments().toString());
970 Assertions.assertEquals(
971 "[Object2 Additional Parameters, Apogee Altitude=786 km, Perigee Altitude=414 km, Inclination=98.9 deg]",
972 file.getDataObject2().getAdditionalParametersBlock().getComments().toString());
973
974 }
975
976
977 @Test
978 public void testParseXML_CDM1() {
979
980
981 final String ex = "/ccsds/cdm/CDMExample1.xml";
982
983
984 final CdmParser parser = new ParserBuilder().buildCdmParser();
985
986 final DataSource source = new DataSource(ex, () -> getClass().getResourceAsStream(ex));
987
988
989 final Cdm file = parser.parseMessage(source);
990
991 Assertions.assertEquals(IERSConventions.IERS_2010, file.getConventions());
992 Assertions.assertEquals(DataContext.getDefault(), file.getDataContext());
993
994
995 Assertions.assertEquals(1.0, file.getHeader().getFormatVersion(), 0.0);
996 Assertions.assertEquals(new AbsoluteDate(2010, 3, 12, 22, 31, 12.000,
997 TimeScalesFactory.getUTC()), file.getHeader().getCreationDate());
998 Assertions.assertEquals("JSPOC", file.getHeader().getOriginator());
999 Assertions.assertEquals("SATELLITE A", file.getHeader().getMessageFor());
1000 Assertions.assertEquals("20111371985", file.getHeader().getMessageId());
1001
1002
1003
1004 Assertions.assertEquals(new AbsoluteDate(2010, 3, 13, 22, 37, new TimeOffset(52, TimeOffset.SECOND,
1005 618, TimeOffset.MILLISECOND),
1006 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getTca());
1007 Assertions.assertEquals(715.0, file.getRelativeMetadata().getMissDistance(), DISTANCE_PRECISION);
1008 Assertions.assertEquals(14762.0, file.getRelativeMetadata().getRelativeSpeed(), DERIVATION_PRECISION);
1009 Assertions.assertEquals(27.4, file.getRelativeMetadata().getRelativePosition().getX(), DISTANCE_PRECISION);
1010 Assertions.assertEquals(-70.2, file.getRelativeMetadata().getRelativePosition().getY(), DISTANCE_PRECISION);
1011 Assertions.assertEquals(711.8, file.getRelativeMetadata().getRelativePosition().getZ(), DISTANCE_PRECISION);
1012 Assertions.assertEquals(-7.2, file.getRelativeMetadata().getRelativeVelocity().getX(), DERIVATION_PRECISION);
1013 Assertions.assertEquals(-14692.0, file.getRelativeMetadata().getRelativeVelocity().getY(),
1014 DERIVATION_PRECISION);
1015 Assertions.assertEquals(-1437.2, file.getRelativeMetadata().getRelativeVelocity().getZ(),
1016 DERIVATION_PRECISION);
1017 Assertions.assertEquals(new AbsoluteDate(2010, 3, 12, 18, 29, new TimeOffset(32, TimeOffset.SECOND,
1018 212, TimeOffset.MILLISECOND),
1019 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getStartScreenPeriod());
1020 Assertions.assertEquals(new AbsoluteDate(2010, 3, 15, 18, 29, new TimeOffset(32, TimeOffset.SECOND,
1021 212, TimeOffset.MILLISECOND),
1022 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getStopScreenPeriod());
1023 Assertions.assertEquals(ScreenVolumeFrame.RTN, file.getRelativeMetadata().getScreenVolumeFrame());
1024 Assertions.assertEquals(ScreenVolumeShape.ELLIPSOID, file.getRelativeMetadata().getScreenVolumeShape());
1025 Assertions.assertEquals(200, file.getRelativeMetadata().getScreenVolumeX(), 0);
1026 Assertions.assertEquals(1000, file.getRelativeMetadata().getScreenVolumeY(), 0);
1027 Assertions.assertEquals(1000, file.getRelativeMetadata().getScreenVolumeZ(), 0);
1028 Assertions.assertEquals(new AbsoluteDate(2010, 3, 13, 20, 25, new TimeOffset(43, TimeOffset.SECOND,
1029 222, TimeOffset.MILLISECOND),
1030 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getScreenEntryTime());
1031 Assertions.assertEquals(new AbsoluteDate(2010, 3, 13, 23, 44, new TimeOffset(29, TimeOffset.SECOND,
1032 324, TimeOffset.MILLISECOND),
1033 TimeScalesFactory.getUTC()), file.getRelativeMetadata().getScreenExitTime());
1034 Assertions.assertEquals(4.835E-05, file.getRelativeMetadata().getCollisionProbability(), 1e-30);
1035 Assertions.assertEquals("FOSTER-1992", file.getRelativeMetadata().getCollisionProbaMethod().getName());
1036 Assertions.assertEquals(PocMethodType.FOSTER_1992,
1037 file.getRelativeMetadata().getCollisionProbaMethod().getType());
1038
1039
1040 Assertions.assertEquals("OBJECT1", file.getMetadataObject1().getObject());
1041 Assertions.assertEquals("12345", file.getMetadataObject1().getObjectDesignator());
1042 Assertions.assertEquals("SATCAT", file.getMetadataObject1().getCatalogName());
1043 Assertions.assertEquals("SATELLITE A", file.getMetadataObject1().getObjectName());
1044 Assertions.assertEquals("1997-030E", file.getMetadataObject1().getInternationalDes());
1045 Assertions.assertEquals("EPHEMERIS SATELLITE A", file.getMetadataObject1().getEphemName());
1046 Assertions.assertEquals(CovarianceMethod.CALCULATED, file.getMetadataObject1().getCovarianceMethod());
1047 Assertions.assertEquals(Maneuvrable.YES, file.getMetadataObject1().getManeuverable());
1048 Assertions.assertEquals(CelestialBodyFrame.EME2000,
1049 file.getMetadataObject1().getRefFrame().asCelestialBodyFrame());
1050 Assertions.assertEquals("UTC", file.getMetadataObject1().getTimeSystem().name());
1051
1052
1053
1054
1055 Assertions.assertEquals(2570.097065e3, file.getDataObject1().getStateVectorBlock().getPositionVector().getX(),
1056 DISTANCE_PRECISION);
1057 Assertions.assertEquals(2244.654904e3, file.getDataObject1().getStateVectorBlock().getPositionVector().getY(),
1058 DISTANCE_PRECISION);
1059 Assertions.assertEquals(6281.497978e3, file.getDataObject1().getStateVectorBlock().getPositionVector().getZ(),
1060 DISTANCE_PRECISION);
1061 Assertions.assertEquals(4.418769571e3, file.getDataObject1().getStateVectorBlock().getVelocityVector().getX(),
1062 DERIVATION_PRECISION);
1063 Assertions.assertEquals(4.833547743e3, file.getDataObject1().getStateVectorBlock().getVelocityVector().getY(),
1064 DERIVATION_PRECISION);
1065 Assertions.assertEquals(-3.526774282e3, file.getDataObject1().getStateVectorBlock().getVelocityVector().getZ(),
1066 DERIVATION_PRECISION);
1067
1068 Assertions.assertEquals(4.142e1, file.getDataObject1().getRTNCovarianceBlock().getCrr(),
1069 COVARIANCE_DIAG_PRECISION);
1070 Assertions.assertEquals(-8.579, file.getDataObject1().getRTNCovarianceBlock().getCtr(),
1071 COVARIANCE_DIAG_PRECISION);
1072 Assertions.assertEquals(2.533e3, file.getDataObject1().getRTNCovarianceBlock().getCtt(),
1073 COVARIANCE_DIAG_PRECISION);
1074 Assertions.assertEquals(-2.313e1, file.getDataObject1().getRTNCovarianceBlock().getCnr(),
1075 COVARIANCE_DIAG_PRECISION);
1076 Assertions.assertEquals(1.336e1, file.getDataObject1().getRTNCovarianceBlock().getCnt(),
1077 COVARIANCE_DIAG_PRECISION);
1078 Assertions.assertEquals(7.098e1, file.getDataObject1().getRTNCovarianceBlock().getCnn(),
1079 COVARIANCE_DIAG_PRECISION);
1080
1081 Assertions.assertEquals(2.520e-3, file.getDataObject1().getRTNCovarianceBlock().getCrdotr(),
1082 COVARIANCE_PRECISION);
1083 Assertions.assertEquals(-5.476, file.getDataObject1().getRTNCovarianceBlock().getCrdott(),
1084 COVARIANCE_PRECISION);
1085 Assertions.assertEquals(8.626e-4, file.getDataObject1().getRTNCovarianceBlock().getCrdotn(),
1086 COVARIANCE_PRECISION);
1087 Assertions.assertEquals(5.744e-3, file.getDataObject1().getRTNCovarianceBlock().getCrdotrdot(),
1088 COVARIANCE_PRECISION);
1089
1090 Assertions.assertEquals(-1.006e-2, file.getDataObject1().getRTNCovarianceBlock().getCtdotr(),
1091 COVARIANCE_PRECISION);
1092 Assertions.assertEquals(4.041e-3, file.getDataObject1().getRTNCovarianceBlock().getCtdott(),
1093 COVARIANCE_PRECISION);
1094 Assertions.assertEquals(-1.359e-3, file.getDataObject1().getRTNCovarianceBlock().getCtdotn(),
1095 COVARIANCE_PRECISION);
1096 Assertions.assertEquals(-1.502e-5, file.getDataObject1().getRTNCovarianceBlock().getCtdotrdot(),
1097 COVARIANCE_PRECISION);
1098 Assertions.assertEquals(1.049e-5, file.getDataObject1().getRTNCovarianceBlock().getCtdottdot(),
1099 COVARIANCE_PRECISION);
1100
1101 Assertions.assertEquals(1.053e-3, file.getDataObject1().getRTNCovarianceBlock().getCndotr(),
1102 COVARIANCE_PRECISION);
1103 Assertions.assertEquals(-3.412e-3, file.getDataObject1().getRTNCovarianceBlock().getCndott(),
1104 COVARIANCE_PRECISION);
1105 Assertions.assertEquals(1.213e-2, file.getDataObject1().getRTNCovarianceBlock().getCndotn(),
1106 COVARIANCE_PRECISION);
1107 Assertions.assertEquals(-3.004e-6, file.getDataObject1().getRTNCovarianceBlock().getCndotrdot(),
1108 COVARIANCE_PRECISION);
1109 Assertions.assertEquals(-1.091e-6, file.getDataObject1().getRTNCovarianceBlock().getCndottdot(),
1110 COVARIANCE_PRECISION);
1111 Assertions.assertEquals(5.529e-5, file.getDataObject1().getRTNCovarianceBlock().getCndotndot(),
1112 COVARIANCE_PRECISION);
1113
1114
1115
1116 Assertions.assertEquals(file.getSegments().get(1).getMetadata().getRelativeMetadata().getScreenVolumeX(),
1117 file.getRelativeMetadata().getScreenVolumeX(), DISTANCE_PRECISION);
1118 Assertions.assertEquals(
1119 file.getSegments().get(1).getMetadata().getRelativeMetadata().getRelativePosition().getZ(),
1120 file.getRelativeMetadata().getRelativePosition().getZ(), DISTANCE_PRECISION);
1121 Assertions.assertEquals(
1122 file.getSegments().get(1).getMetadata().getRelativeMetadata().getRelativeVelocity().getZ(),
1123 file.getRelativeMetadata().getRelativeVelocity().getZ(), DERIVATION_PRECISION);
1124 Assertions.assertEquals(
1125 file.getSegments().get(1).getMetadata().getRelativeMetadata().getCollisionProbability(),
1126 file.getRelativeMetadata().getCollisionProbability(), 1e-30);
1127 Assertions.assertEquals(
1128 file.getSegments().get(1).getMetadata().getRelativeMetadata().getCollisionProbaMethod(),
1129 file.getRelativeMetadata().getCollisionProbaMethod());
1130
1131
1132 Assertions.assertEquals("OBJECT2", file.getMetadataObject2().getObject());
1133 Assertions.assertEquals("30337", file.getMetadataObject2().getObjectDesignator());
1134 Assertions.assertEquals("SATCAT", file.getMetadataObject2().getCatalogName());
1135 Assertions.assertEquals("FENGYUN 1C DEB", file.getMetadataObject2().getObjectName());
1136 Assertions.assertEquals("1999-025AA", file.getMetadataObject2().getInternationalDes());
1137 Assertions.assertEquals("NONE", file.getMetadataObject2().getEphemName());
1138 Assertions.assertEquals(CovarianceMethod.CALCULATED, file.getMetadataObject2().getCovarianceMethod());
1139 Assertions.assertEquals(Maneuvrable.NO, file.getMetadataObject2().getManeuverable());
1140 Assertions.assertEquals(CelestialBodyFrame.EME2000,
1141 file.getMetadataObject2().getRefFrame().asCelestialBodyFrame());
1142 Assertions.assertEquals("UTC", file.getMetadataObject2().getTimeSystem().name());
1143
1144
1145 Assertions.assertEquals(2569.540800e3, file.getDataObject2().getStateVectorBlock().getPositionVector().getX(),
1146 DISTANCE_PRECISION);
1147 Assertions.assertEquals(2245.093614e3, file.getDataObject2().getStateVectorBlock().getPositionVector().getY(),
1148 DISTANCE_PRECISION);
1149 Assertions.assertEquals(6281.599946e3, file.getDataObject2().getStateVectorBlock().getPositionVector().getZ(),
1150 DISTANCE_PRECISION);
1151 Assertions.assertEquals(-2.888612500e3, file.getDataObject2().getStateVectorBlock().getVelocityVector().getX(),
1152 DERIVATION_PRECISION);
1153 Assertions.assertEquals(-6.007247516e3, file.getDataObject2().getStateVectorBlock().getVelocityVector().getY(),
1154 DERIVATION_PRECISION);
1155 Assertions.assertEquals(3.328770172e3, file.getDataObject2().getStateVectorBlock().getVelocityVector().getZ(),
1156 DERIVATION_PRECISION);
1157
1158 Assertions.assertEquals(1.337e3, file.getDataObject2().getRTNCovarianceBlock().getCrr(),
1159 COVARIANCE_DIAG_PRECISION);
1160 Assertions.assertEquals(-4.806e4, file.getDataObject2().getRTNCovarianceBlock().getCtr(),
1161 COVARIANCE_DIAG_PRECISION);
1162 Assertions.assertEquals(2.492e6, file.getDataObject2().getRTNCovarianceBlock().getCtt(),
1163 COVARIANCE_DIAG_PRECISION);
1164 Assertions.assertEquals(-3.298e1, file.getDataObject2().getRTNCovarianceBlock().getCnr(),
1165 COVARIANCE_DIAG_PRECISION);
1166 Assertions.assertEquals(-7.5888e2, file.getDataObject2().getRTNCovarianceBlock().getCnt(),
1167 COVARIANCE_DIAG_PRECISION);
1168 Assertions.assertEquals(7.105e1, file.getDataObject2().getRTNCovarianceBlock().getCnn(),
1169 COVARIANCE_DIAG_PRECISION);
1170
1171 Assertions.assertEquals(2.591e-3, file.getDataObject2().getRTNCovarianceBlock().getCrdotr(),
1172 COVARIANCE_PRECISION);
1173 Assertions.assertEquals(-4.152e-2, file.getDataObject2().getRTNCovarianceBlock().getCrdott(),
1174 COVARIANCE_PRECISION);
1175 Assertions.assertEquals(-1.784e-6, file.getDataObject2().getRTNCovarianceBlock().getCrdotn(),
1176 COVARIANCE_PRECISION);
1177 Assertions.assertEquals(6.886e-5, file.getDataObject2().getRTNCovarianceBlock().getCrdotrdot(),
1178 COVARIANCE_PRECISION);
1179
1180 Assertions.assertEquals(-1.016e-2, file.getDataObject2().getRTNCovarianceBlock().getCtdotr(),
1181 COVARIANCE_PRECISION);
1182 Assertions.assertEquals(-1.506e-4, file.getDataObject2().getRTNCovarianceBlock().getCtdott(),
1183 COVARIANCE_PRECISION);
1184 Assertions.assertEquals(1.637e-3, file.getDataObject2().getRTNCovarianceBlock().getCtdotn(),
1185 COVARIANCE_PRECISION);
1186 Assertions.assertEquals(-2.987e-6, file.getDataObject2().getRTNCovarianceBlock().getCtdotrdot(),
1187 COVARIANCE_PRECISION);
1188 Assertions.assertEquals(1.059e-5, file.getDataObject2().getRTNCovarianceBlock().getCtdottdot(),
1189 COVARIANCE_PRECISION);
1190
1191 Assertions.assertEquals(4.400e-3, file.getDataObject2().getRTNCovarianceBlock().getCndotr(),
1192 COVARIANCE_PRECISION);
1193 Assertions.assertEquals(8.482e-3, file.getDataObject2().getRTNCovarianceBlock().getCndott(),
1194 COVARIANCE_PRECISION);
1195 Assertions.assertEquals(8.633e-5, file.getDataObject2().getRTNCovarianceBlock().getCndotn(),
1196 COVARIANCE_PRECISION);
1197 Assertions.assertEquals(-1.903e-6, file.getDataObject2().getRTNCovarianceBlock().getCndotrdot(),
1198 COVARIANCE_PRECISION);
1199 Assertions.assertEquals(-4.594e-6, file.getDataObject2().getRTNCovarianceBlock().getCndottdot(),
1200 COVARIANCE_PRECISION);
1201 Assertions.assertEquals(5.178e-5, file.getDataObject2().getRTNCovarianceBlock().getCndotndot(),
1202 COVARIANCE_PRECISION);
1203
1204
1205 ArrayList<String> relativeMetadataComment = new ArrayList<>();
1206 relativeMetadataComment.add("Relative Metadata/Data");
1207 Assertions.assertEquals(relativeMetadataComment, file.getRelativeMetadata().getComment());
1208
1209
1210 ArrayList<String> MetadataComment = new ArrayList<>();
1211 MetadataComment.add("Object1 Metadata");
1212 Assertions.assertEquals(MetadataComment, file.getMetadataObject1().getComments());
1213
1214
1215 ArrayList<String> generalComment = new ArrayList<>();
1216 generalComment.add("Object1 Data");
1217 Assertions.assertEquals(generalComment, file.getDataObject1().getComments());
1218
1219
1220 ArrayList<String> addParametersComment = new ArrayList<>();
1221 addParametersComment.add("Object 1 Additional Parameters");
1222 Assertions.assertEquals(addParametersComment,
1223 file.getDataObject1().getAdditionalParametersBlock().getComments());
1224
1225
1226 ArrayList<String> stateVectorComment = new ArrayList<>();
1227 stateVectorComment.add("Object1 State Vector");
1228 Assertions.assertEquals(stateVectorComment, file.getDataObject1().getStateVectorBlock().getComments());
1229
1230
1231 ArrayList<String> RTNComment = new ArrayList<>();
1232 RTNComment.add("Object1 Covariance in the RTN Coordinate Frame");
1233 Assertions.assertEquals(RTNComment, file.getDataObject1().getRTNCovarianceBlock().getComments());
1234
1235
1236
1237 ArrayList<String> generalCommentObj2AddParam = new ArrayList<>();
1238 generalCommentObj2AddParam.add("Object2 Additional Parameters");
1239 generalCommentObj2AddParam.add("Apogee Altitude=768 km, Perigee Altitude=414 km, Inclination=98.8 deg");
1240 Assertions.assertEquals(generalCommentObj2AddParam.toString(),
1241 file.getDataObject2().getAdditionalParametersBlock().getComments().toString());
1242
1243 }
1244
1245 @Test
1246 public void testNonExistentFile() throws URISyntaxException {
1247 final String realName = getClass().getResource("/ccsds/cdm/CDMExample1.txt").toURI().getPath();
1248 final String wrongName = realName + "xxxxx";
1249 try {
1250 final DataSource source = new DataSource(wrongName, () -> getClass().getResourceAsStream(wrongName));
1251 new ParserBuilder().
1252 buildCdmParser().
1253 parseMessage(source);
1254 Assertions.fail("an exception should have been thrown");
1255 } catch (OrekitException oe) {
1256 Assertions.assertEquals(OrekitMessages.UNABLE_TO_FIND_FILE, oe.getSpecifier());
1257 Assertions.assertEquals(wrongName, oe.getParts()[0]);
1258 }
1259 }
1260
1261 @Test
1262 public void testMissingTCA() {
1263 final String name = "/ccsds/cdm/CDM-missing-TCA.txt";
1264 try {
1265 final DataSource source = new DataSource(name, () -> getClass().getResourceAsStream(name));
1266 new ParserBuilder().
1267 buildCdmParser().
1268 parseMessage(source);
1269 Assertions.fail("an exception should have been thrown");
1270 } catch (OrekitException oe) {
1271 Assertions.assertEquals(OrekitMessages.UNINITIALIZED_VALUE_FOR_KEY, oe.getSpecifier());
1272 Assertions.assertEquals("TCA", oe.getParts()[0]);
1273 }
1274 }
1275
1276 @Test
1277 public void testMissingObj2StateVectorX() {
1278 final String name = "/ccsds/cdm/CDM-missing-object2-state-vector.txt";
1279 try {
1280 final DataSource source = new DataSource(name, () -> getClass().getResourceAsStream(name));
1281 new ParserBuilder().
1282 buildCdmParser().
1283 parseMessage(source);
1284 Assertions.fail("an exception should have been thrown");
1285 } catch (OrekitException oe) {
1286 Assertions.assertEquals(OrekitMessages.UNINITIALIZED_VALUE_FOR_KEY, oe.getSpecifier());
1287 Assertions.assertEquals("X", oe.getParts()[0]);
1288 }
1289 }
1290
1291 @Test
1292 public void testMissingObj1CovarianceCNDOT_NDOT() {
1293 final String name = "/ccsds/cdm/CDM-missing-object1-covariance-block.xml";
1294 try {
1295 final DataSource source = new DataSource(name, () -> getClass().getResourceAsStream(name));
1296 new ParserBuilder().
1297 buildCdmParser().
1298 parseMessage(source);
1299 Assertions.fail("an exception should have been thrown");
1300 } catch (OrekitException oe) {
1301 Assertions.assertEquals(OrekitMessages.UNINITIALIZED_VALUE_FOR_KEY, oe.getSpecifier());
1302 Assertions.assertEquals("CR_R", oe.getParts()[0]);
1303 }
1304 }
1305
1306
1307 @Test
1308 public void testMissingObj1OrbitCenterGetFrame() {
1309
1310
1311 final String ex = "/ccsds/cdm/CDM-no-orbit-center-defined-obj1.txt";
1312
1313
1314 final CdmParser parser = new ParserBuilder().buildCdmParser();
1315
1316 final DataSource source = new DataSource(ex, () -> getClass().getResourceAsStream(ex));
1317
1318
1319
1320 final Cdm file = parser.parseMessage(source);
1321
1322
1323 final BodyFacade obj1OrbitCenter = file.getMetadataObject1().getOrbitCenter();
1324 final BodyFacade expectedOrbitCenter = new BodyFacade(CelestialBodyFactory.EARTH.toUpperCase(),
1325 CelestialBodyFactory.getEarth());
1326
1327 Assertions.assertEquals(expectedOrbitCenter.getName(), obj1OrbitCenter.getName());
1328 Assertions.assertEquals(expectedOrbitCenter.getBody(), obj1OrbitCenter.getBody());
1329
1330 }
1331
1332 @Test
1333 public void testCovarianceNumberFormatErrorType() {
1334 final String ex = "/ccsds/cdm/CDM-covariance-wrong-entry-format.txt";
1335 try {
1336 final DataSource source = new DataSource(ex, () -> getClass().getResourceAsStream(ex));
1337 new ParserBuilder().
1338 buildCdmParser().
1339 parseMessage(source);
1340 } catch (OrekitException oe) {
1341 Assertions.assertEquals(OrekitMessages.UNABLE_TO_PARSE_ELEMENT_IN_FILE, oe.getSpecifier());
1342 Assertions.assertEquals("CRDOT_T", oe.getParts()[0]);
1343 Assertions.assertEquals(65, oe.getParts()[1]);
1344 }
1345 }
1346
1347 @Test
1348 public void test_issue_940() {
1349
1350
1351 final String cdm_kvn = "/ccsds/cdm/CDMExample_issue_940.txt";
1352 final String cdm_xml = "/ccsds/cdm/CDMExample_issue_940.xml";
1353
1354
1355 test_issue_940_data(cdm_kvn);
1356 test_issue_940_data(cdm_xml);
1357
1358 }
1359
1360 public void test_issue_940_data(String ex) {
1361
1362
1363 final CdmParser parser = new ParserBuilder().buildCdmParser();
1364
1365 final DataSource source = new DataSource(ex, () -> getClass().getResourceAsStream(ex));
1366
1367
1368 final Cdm file = parser.parseMessage(source);
1369
1370
1371
1372
1373
1374
1375
1376
1377 Assertions.assertEquals("\"Free text - for examples see CDM pink book (CCSDS 508.0-P-1.0.2)\"",
1378 file.getHeader().getClassification(),"CLASSIFICATION");
1379
1380
1381
1382
1383
1384
1385
1386
1387 Assertions.assertEquals("20220708T10hz SATELLITEA SATELLITEB", file.getRelativeMetadata().getConjunctionId(), "CONJUNCTION ID");
1388
1389
1390 Assertions.assertEquals(180.0, FastMath.toDegrees(file.getRelativeMetadata().getApproachAngle()), 0.0);
1391
1392
1393 Assertions.assertEquals(ScreenType.SHAPE, file.getRelativeMetadata().getScreenType(), "SCREEN_TYPE");
1394
1395
1396 Assertions.assertEquals(ScreenVolumeShape.ELLIPSOID, file.getRelativeMetadata().getScreenVolumeShape(),"SCREEN_VOLUME_SHAPE");
1397
1398
1399 Assertions.assertEquals(200, file.getRelativeMetadata().getScreenVolumeX(), 0.0);
1400
1401
1402 Assertions.assertEquals(1000, file.getRelativeMetadata().getScreenVolumeY(), 0.0);
1403
1404
1405 Assertions.assertEquals(1000, file.getRelativeMetadata().getScreenVolumeZ(), 0.0);
1406
1407
1408 Assertions.assertEquals(new AbsoluteDate(2010, 3, 13, 20, 25, new TimeOffset(43, TimeOffset.SECOND,
1409 222, TimeOffset.MILLISECOND),
1410 TimeScalesFactory.getUTC()),
1411 file.getRelativeMetadata().getScreenEntryTime(), "SCREEN_ENTRY_TIME");
1412
1413
1414 Assertions.assertEquals(new AbsoluteDate(2010, 3, 13, 23, 44, new TimeOffset(29, TimeOffset.SECOND,
1415 324, TimeOffset.MILLISECOND),
1416 TimeScalesFactory.getUTC()),
1417 file.getRelativeMetadata().getScreenExitTime(), "SCREEN_EXIT_TIME");
1418
1419
1420 Assertions.assertEquals(1.000E-03, file.getRelativeMetadata().getScreenPcThreshold(), 0.0);
1421
1422
1423 int[] collisionPercentile = {50, 51, 52};
1424 Assertions.assertArrayEquals(collisionPercentile, file.getRelativeMetadata().getCollisionPercentile());
1425
1426
1427 Assertions.assertEquals(4.835E-05, file.getRelativeMetadata().getCollisionProbability(), 0.0);
1428
1429
1430 Assertions.assertEquals("FOSTER-1992", file.getRelativeMetadata().getCollisionProbaMethod().getName(), "COLLISION_PROBABILITY_METHOD");
1431
1432
1433 Assertions.assertEquals(1.234E-05, file.getRelativeMetadata().getMaxCollisionProbability(), 0.0);
1434
1435
1436 Assertions.assertEquals("SCALE_COMBINED_COVAR", file.getRelativeMetadata().getMaxCollisionProbabilityMethod().getName(), "COLLISION_MAX_PC_METHOD");
1437
1438
1439 Assertions.assertEquals(1.234E-05, file.getRelativeMetadata().getSefiCollisionProbability(), 0.0);
1440
1441
1442 Assertions.assertEquals("SEFI_PC_METHOD", file.getRelativeMetadata().getSefiCollisionProbabilityMethod().getName(),"SEFI_COLLISION_PROBABILITY_METHOD");
1443
1444
1445 Assertions.assertEquals("NASA STD BREAKUP MODEL", file.getRelativeMetadata().getSefiFragmentationModel(), "SEFI_FRAGMENTATION_MODEL");
1446
1447
1448 Assertions.assertEquals("201113719185-0", file.getRelativeMetadata().getPreviousMessageId(), "PREVIOUS_MESSAGE_ID");
1449
1450
1451 Assertions.assertEquals(new AbsoluteDate(2010, 3, 12, 10, 31, 12, TimeScalesFactory.getUTC()),
1452 file.getRelativeMetadata().getPreviousMessageEpoch(), "PREVIOUS_MESSAGE_EPOCH");
1453
1454
1455 Assertions.assertEquals(new AbsoluteDate(2010, 3, 13, 10, 31, 12, TimeScalesFactory.getUTC()),
1456 file.getRelativeMetadata().getNextMessageEpoch(), "NEXT_MESSAGE_EPOCH");
1457
1458
1459
1460
1461
1462
1463
1464
1465 Assertions.assertEquals("ODM_MSG_35132.txt", file.getMetadataObject1().getOdmMsgLink(), "ODM_MSG_LINK");
1466
1467
1468 Assertions.assertEquals("ATT_MSG_35132.txt", file.getMetadataObject1().getAdmMsgLink(),"ADM_MSG_LINK");
1469
1470
1471 Assertions.assertEquals(YesNoUnknown.YES, file.getMetadataObject1().getObsBeforeNextMessage(), "OBS_BEFORE_NEXT_MESSAGE");
1472
1473
1474 Assertions.assertEquals("HAC Covariance", file.getMetadataObject1().getCovarianceSource(), "COVARIANCE_SOURCE");
1475
1476
1477 Assertions.assertEquals(AltCovarianceType.XYZ, file.getMetadataObject1().getAltCovType(), "ALT_COV_TYPE");
1478
1479
1480 Assertions.assertEquals("EME2000", file.getMetadataObject1().getAltCovRefFrame().getName(), "ALT_COV_REF_FRAME");
1481
1482
1483
1484
1485
1486
1487
1488
1489 Assertions.assertEquals(new AbsoluteDate(2010, 3, 12, 22, 31, 12, TimeScalesFactory.getUTC()),
1490 file.getDataObject1().getODParametersBlock().getOdEpoch(), "OD_EPOCH");
1491
1492
1493
1494
1495
1496
1497
1498
1499 Assertions.assertEquals(5.0, file.getDataObject1().getAdditionalParametersBlock().getAreaPCMin(), 0.0);
1500
1501
1502 Assertions.assertEquals(5.4, file.getDataObject1().getAdditionalParametersBlock().getAreaPCMax(), 0.0);
1503
1504
1505 Assertions.assertEquals("OEB_YAW", file.getDataObject1().getAdditionalParametersBlock().getOebParentFrame().getName(), "OEB_PARENT_FRAME");
1506
1507
1508 Assertions.assertEquals(new AbsoluteDate(2010, 3, 12, 22, 31, 12, TimeScalesFactory.getUTC()),
1509 file.getDataObject1().getAdditionalParametersBlock().getOebParentFrameEpoch(), "OEB_PARENT_FRAME_EPOCH");
1510
1511
1512 Assertions.assertEquals(0.03123, file.getDataObject1().getAdditionalParametersBlock().getOebQ().getQ1(), 0.0);
1513
1514
1515 Assertions.assertEquals(0.78543, file.getDataObject1().getAdditionalParametersBlock().getOebQ().getQ2(), 0.0);
1516
1517
1518 Assertions.assertEquals(0.39158, file.getDataObject1().getAdditionalParametersBlock().getOebQ().getQ3(), 0.0);
1519
1520
1521 Assertions.assertEquals(0.47832, file.getDataObject1().getAdditionalParametersBlock().getOebQ().getQ0(), 0.0);
1522
1523
1524 Assertions.assertEquals(2.0, file.getDataObject1().getAdditionalParametersBlock().getOebMax(), 0.0);
1525
1526
1527 Assertions.assertEquals(1.0, file.getDataObject1().getAdditionalParametersBlock().getOebIntermediate(), 0.0);
1528
1529
1530 Assertions.assertEquals(0.5, file.getDataObject1().getAdditionalParametersBlock().getOebMin(), 0.0);
1531
1532
1533 Assertions.assertEquals(0.15, file.getDataObject1().getAdditionalParametersBlock().getOebAreaAlongMax(), 0.0);
1534
1535
1536 Assertions.assertEquals(0.3, file.getDataObject1().getAdditionalParametersBlock().getOebAreaAlongIntermediate(), 0.0);
1537
1538
1539 Assertions.assertEquals(0.5, file.getDataObject1().getAdditionalParametersBlock().getOebAreaAlongMin(), 0.0);
1540
1541
1542 Assertions.assertEquals(2.4, file.getDataObject1().getAdditionalParametersBlock().getRcs(), 0.0);
1543
1544
1545 Assertions.assertEquals(1.4, file.getDataObject1().getAdditionalParametersBlock().getMinRcs(), 0.0);
1546
1547
1548 Assertions.assertEquals(3.4, file.getDataObject1().getAdditionalParametersBlock().getMaxRcs(), 0.0);
1549
1550
1551 Assertions.assertEquals(15.0, file.getDataObject1().getAdditionalParametersBlock().getVmAbsolute(), 0.0);
1552
1553
1554 Assertions.assertEquals(19.0, file.getDataObject1().getAdditionalParametersBlock().getVmApparentMin(), 0.0);
1555
1556
1557 Assertions.assertEquals(15.4, file.getDataObject1().getAdditionalParametersBlock().getVmApparent(), 0.0);
1558
1559
1560 Assertions.assertEquals(14.0, file.getDataObject1().getAdditionalParametersBlock().getVmApparentMax(), 0.0);
1561
1562
1563 Assertions.assertEquals(0.7, file.getDataObject1().getAdditionalParametersBlock().getReflectance(), 0.0);
1564
1565
1566 Assertions.assertEquals(2.5, file.getDataObject1().getAdditionalParametersBlock().getHbr(), 0.0);
1567
1568
1569 Assertions.assertEquals(800000, file.getDataObject1().getAdditionalParametersBlock().getApoapsisAltitude(), 0.0);
1570
1571
1572 Assertions.assertEquals(750000, file.getDataObject1().getAdditionalParametersBlock().getPeriapsisAltitude(), 0.0);
1573
1574
1575 Assertions.assertEquals(FastMath.toRadians(89.0), file.getDataObject1().getAdditionalParametersBlock().getInclination(), 0.0);
1576
1577
1578 Assertions.assertEquals(1.0, file.getDataObject1().getAdditionalParametersBlock().getCovConfidence(), 0.0);
1579
1580
1581 Assertions.assertEquals("Wald test", file.getDataObject1().getAdditionalParametersBlock().getCovConfidenceMethod(), "COV_CONFIDENCE_METHOD");
1582
1583
1584
1585 Assertions.assertEquals(0.1, file.getDataObject1().getXYZCovarianceBlock().getCxx(), COVARIANCE_DIAG_PRECISION);
1586 Assertions.assertEquals(0.2, file.getDataObject1().getXYZCovarianceBlock().getCyx(), COVARIANCE_DIAG_PRECISION);
1587 Assertions.assertEquals(0.3, file.getDataObject1().getXYZCovarianceBlock().getCyy(), COVARIANCE_DIAG_PRECISION);
1588 Assertions.assertEquals(0.4, file.getDataObject1().getXYZCovarianceBlock().getCzx(), COVARIANCE_DIAG_PRECISION);
1589 Assertions.assertEquals(0.5, file.getDataObject1().getXYZCovarianceBlock().getCzy(), COVARIANCE_DIAG_PRECISION);
1590 Assertions.assertEquals(0.6, file.getDataObject1().getXYZCovarianceBlock().getCzz(), COVARIANCE_DIAG_PRECISION);
1591
1592 Assertions.assertEquals(0.7, file.getDataObject1().getXYZCovarianceBlock().getCxdotx(), COVARIANCE_PRECISION);
1593 Assertions.assertEquals(0.8, file.getDataObject1().getXYZCovarianceBlock().getCxdoty(), COVARIANCE_PRECISION);
1594 Assertions.assertEquals(0.9, file.getDataObject1().getXYZCovarianceBlock().getCxdotz(), COVARIANCE_PRECISION);
1595 Assertions.assertEquals(0.01, file.getDataObject1().getXYZCovarianceBlock().getCxdotxdot(), COVARIANCE_PRECISION);
1596
1597 Assertions.assertEquals(0.02, file.getDataObject1().getXYZCovarianceBlock().getCydotx(), COVARIANCE_PRECISION);
1598 Assertions.assertEquals(0.03, file.getDataObject1().getXYZCovarianceBlock().getCydoty(), COVARIANCE_PRECISION);
1599 Assertions.assertEquals(0.04, file.getDataObject1().getXYZCovarianceBlock().getCydotz(), COVARIANCE_PRECISION);
1600 Assertions.assertEquals(0.05, file.getDataObject1().getXYZCovarianceBlock().getCydotxdot(), COVARIANCE_PRECISION);
1601 Assertions.assertEquals(0.06, file.getDataObject1().getXYZCovarianceBlock().getCydotydot(), COVARIANCE_PRECISION);
1602
1603 Assertions.assertEquals(0.07, file.getDataObject1().getXYZCovarianceBlock().getCzdotx(), COVARIANCE_PRECISION);
1604 Assertions.assertEquals(0.08, file.getDataObject1().getXYZCovarianceBlock().getCzdoty(), COVARIANCE_PRECISION);
1605 Assertions.assertEquals(0.09, file.getDataObject1().getXYZCovarianceBlock().getCzdotz(), COVARIANCE_PRECISION);
1606 Assertions.assertEquals(0.001, file.getDataObject1().getXYZCovarianceBlock().getCzdotxdot(), COVARIANCE_PRECISION);
1607 Assertions.assertEquals(0.002, file.getDataObject1().getXYZCovarianceBlock().getCzdotydot(), COVARIANCE_PRECISION);
1608 Assertions.assertEquals(0.003, file.getDataObject1().getXYZCovarianceBlock().getCzdotzdot(), COVARIANCE_PRECISION);
1609
1610 Assertions.assertEquals(0.07, file.getDataObject1().getXYZCovarianceBlock().getCdrgx(), COVARIANCE_PRECISION);
1611 Assertions.assertEquals(0.08, file.getDataObject1().getXYZCovarianceBlock().getCdrgy(), COVARIANCE_PRECISION);
1612 Assertions.assertEquals(0.09, file.getDataObject1().getXYZCovarianceBlock().getCdrgz(), COVARIANCE_PRECISION);
1613 Assertions.assertEquals(0.001, file.getDataObject1().getXYZCovarianceBlock().getCdrgxdot(), COVARIANCE_PRECISION);
1614 Assertions.assertEquals(0.002, file.getDataObject1().getXYZCovarianceBlock().getCdrgydot(), COVARIANCE_PRECISION);
1615 Assertions.assertEquals(0.003, file.getDataObject1().getXYZCovarianceBlock().getCdrgzdot(), COVARIANCE_PRECISION);
1616 Assertions.assertEquals(0.004, file.getDataObject1().getXYZCovarianceBlock().getCdrgdrg(), COVARIANCE_PRECISION);
1617
1618 Assertions.assertEquals(0.07, file.getDataObject1().getXYZCovarianceBlock().getCsrpx(), COVARIANCE_PRECISION);
1619 Assertions.assertEquals(0.08, file.getDataObject1().getXYZCovarianceBlock().getCsrpy(), COVARIANCE_PRECISION);
1620 Assertions.assertEquals(0.09, file.getDataObject1().getXYZCovarianceBlock().getCsrpz(), COVARIANCE_PRECISION);
1621 Assertions.assertEquals(0.001, file.getDataObject1().getXYZCovarianceBlock().getCsrpxdot(), COVARIANCE_PRECISION);
1622 Assertions.assertEquals(0.002, file.getDataObject1().getXYZCovarianceBlock().getCsrpydot(), COVARIANCE_PRECISION);
1623 Assertions.assertEquals(0.003, file.getDataObject1().getXYZCovarianceBlock().getCsrpzdot(), COVARIANCE_PRECISION);
1624 Assertions.assertEquals(0.004, file.getDataObject1().getXYZCovarianceBlock().getCsrpdrg(), COVARIANCE_PRECISION);
1625 Assertions.assertEquals(0.005, file.getDataObject1().getXYZCovarianceBlock().getCsrpsrp(), COVARIANCE_PRECISION);
1626
1627 Assertions.assertEquals(0.07, file.getDataObject1().getXYZCovarianceBlock().getCthrx(), COVARIANCE_PRECISION);
1628 Assertions.assertEquals(0.08, file.getDataObject1().getXYZCovarianceBlock().getCthry(), COVARIANCE_PRECISION);
1629 Assertions.assertEquals(0.09, file.getDataObject1().getXYZCovarianceBlock().getCthrz(), COVARIANCE_PRECISION);
1630 Assertions.assertEquals(0.001, file.getDataObject1().getXYZCovarianceBlock().getCthrxdot(), COVARIANCE_PRECISION);
1631 Assertions.assertEquals(0.002, file.getDataObject1().getXYZCovarianceBlock().getCthrydot(), COVARIANCE_PRECISION);
1632 Assertions.assertEquals(0.003, file.getDataObject1().getXYZCovarianceBlock().getCthrzdot(), COVARIANCE_PRECISION);
1633 Assertions.assertEquals(0.004, file.getDataObject1().getXYZCovarianceBlock().getCthrdrg(), COVARIANCE_PRECISION);
1634 Assertions.assertEquals(0.005, file.getDataObject1().getXYZCovarianceBlock().getCthrsrp(), COVARIANCE_PRECISION);
1635 Assertions.assertEquals(0.006, file.getDataObject1().getXYZCovarianceBlock().getCthrthr(), COVARIANCE_PRECISION);
1636
1637
1638
1639 Assertions.assertEquals(AltCovarianceType.CSIG3EIGVEC3, file.getMetadataObject2().getAltCovType(), "ALT_COV_TYPE");
1640 Assertions.assertEquals("Object2 Covariance in the Sigma / eigenvector format",
1641 file.getDataObject2().getSig3EigVec3CovarianceBlock().getComments().get(0));
1642 Assertions.assertEquals(12, file.getDataObject2().getSig3EigVec3CovarianceBlock().getCsig3eigvec3().length);
1643 for (int i=0; i<12; i++) {
1644 Assertions.assertEquals(i+1, file.getDataObject2().getSig3EigVec3CovarianceBlock().getCsig3eigvec3()[i],
1645 COVARIANCE_DIAG_PRECISION);
1646 }
1647
1648
1649
1650
1651
1652 Assertions.assertEquals(2.5, file.getDataObject1().getAdditionalCovMetadataBlock().getDensityForecastUncertainty(), 0.0);
1653 Assertions.assertEquals(0.5, file.getDataObject1().getAdditionalCovMetadataBlock().getcScaleFactorMin(), 0.0);
1654 Assertions.assertEquals(1.0, file.getDataObject1().getAdditionalCovMetadataBlock().getcScaleFactor(), 0.0);
1655 Assertions.assertEquals(1.5, file.getDataObject1().getAdditionalCovMetadataBlock().getcScaleFactorMax(), 0.0);
1656 Assertions.assertEquals("Data source of additional covariance metadata",
1657 file.getDataObject1().getAdditionalCovMetadataBlock().getScreeningDataSource(), "SCREENING_DATA_SOURCE");
1658 Assertions.assertEquals(3, file.getDataObject1().getAdditionalCovMetadataBlock().getDcpSensitivityVectorPosition().length);
1659 Assertions.assertEquals(1.0, file.getDataObject1().getAdditionalCovMetadataBlock().getDcpSensitivityVectorPosition()[0], 0.0);
1660 Assertions.assertEquals(2.0, file.getDataObject1().getAdditionalCovMetadataBlock().getDcpSensitivityVectorPosition()[1], 0.0);
1661 Assertions.assertEquals(3.0, file.getDataObject1().getAdditionalCovMetadataBlock().getDcpSensitivityVectorPosition()[2], 0.0);
1662 Assertions.assertEquals(3, file.getDataObject1().getAdditionalCovMetadataBlock().getDcpSensitivityVectorVelocity().length);
1663 Assertions.assertEquals(0.1, file.getDataObject1().getAdditionalCovMetadataBlock().getDcpSensitivityVectorVelocity()[0], 0.0);
1664 Assertions.assertEquals(0.2, file.getDataObject1().getAdditionalCovMetadataBlock().getDcpSensitivityVectorVelocity()[1], 0.0);
1665 Assertions.assertEquals(0.3, file.getDataObject1().getAdditionalCovMetadataBlock().getDcpSensitivityVectorVelocity()[2], 0.0);
1666
1667
1668
1669
1670 Assertions.assertEquals(1, file.getUserDefinedParameters().getComments().size());
1671 Assertions.assertEquals("User Parameters", file.getUserDefinedParameters().getComments().get(0));
1672 Assertions.assertEquals(1, file.getUserDefinedParameters().getParameters().size());
1673 Assertions.assertEquals("2020-01-29T13:30:00", file.getUserDefinedParameters().getParameters().get("OBJ1_TIME_LASTOB_START"));
1674
1675
1676
1677
1678
1679 Assertions.assertEquals(IERSConventions.IERS_2010, file.getConventions());
1680 Assertions.assertEquals(DataContext.getDefault(), file.getDataContext());
1681
1682
1683 Assertions.assertEquals(2.0, file.getHeader().getFormatVersion(), 1.0e-10);
1684 Assertions.assertEquals(new AbsoluteDate(2010, 3, 12, 22, 31, 12,
1685 TimeScalesFactory.getUTC()),
1686 file.getHeader().getCreationDate());
1687 Assertions.assertEquals("JSPOC", file.getHeader().getOriginator());
1688 Assertions.assertEquals("201113719185-1", file.getHeader().getMessageId());
1689
1690
1691
1692 Assertions.assertEquals(new AbsoluteDate(2010, 3, 13, 22, 37, new TimeOffset(52, TimeOffset.SECOND, 618, TimeOffset.MILLISECOND),
1693 TimeScalesFactory.getUTC()),
1694 file.getRelativeMetadata().getTca());
1695 Assertions.assertEquals(715.0, file.getRelativeMetadata().getMissDistance(),DISTANCE_PRECISION);
1696
1697
1698 Assertions.assertEquals("OBJECT1", file.getMetadataObject1().getObject());
1699 Assertions.assertEquals("12345", file.getMetadataObject1().getObjectDesignator());
1700 Assertions.assertEquals("SATCAT", file.getMetadataObject1().getCatalogName());
1701 Assertions.assertEquals("SATELLITE A", file.getMetadataObject1().getObjectName());
1702 Assertions.assertEquals("1997-030E", file.getMetadataObject1().getInternationalDes());
1703 Assertions.assertEquals("EPHEMERIS SATELLITE A", file.getMetadataObject1().getEphemName());
1704 Assertions.assertEquals(CovarianceMethod.CALCULATED, file.getMetadataObject1().getCovarianceMethod());
1705 Assertions.assertEquals(Maneuvrable.YES, file.getMetadataObject1().getManeuverable());
1706 Assertions.assertEquals(CelestialBodyFrame.EME2000, file.getMetadataObject1().getRefFrame().asCelestialBodyFrame());
1707 Assertions.assertEquals("UTC", file.getMetadataObject1().getTimeSystem().name());
1708
1709
1710
1711 Assertions.assertEquals(2570.097065e3, file.getDataObject1().getStateVectorBlock().getPositionVector().getX(), DISTANCE_PRECISION);
1712 Assertions.assertEquals(2244.654904e3, file.getDataObject1().getStateVectorBlock().getPositionVector().getY(), DISTANCE_PRECISION);
1713 Assertions.assertEquals(6281.497978e3, file.getDataObject1().getStateVectorBlock().getPositionVector().getZ(), DISTANCE_PRECISION);
1714 Assertions.assertEquals(4.418769571e3, file.getDataObject1().getStateVectorBlock().getVelocityVector().getX(), DERIVATION_PRECISION);
1715 Assertions.assertEquals(4.833547743e3, file.getDataObject1().getStateVectorBlock().getVelocityVector().getY(), DERIVATION_PRECISION);
1716 Assertions.assertEquals(-3.526774282e3, file.getDataObject1().getStateVectorBlock().getVelocityVector().getZ(), DERIVATION_PRECISION);
1717
1718 Assertions.assertEquals(4.142e1, file.getDataObject1().getRTNCovarianceBlock().getCrr(), COVARIANCE_DIAG_PRECISION);
1719 Assertions.assertEquals(-8.579, file.getDataObject1().getRTNCovarianceBlock().getCtr(), COVARIANCE_DIAG_PRECISION);
1720 Assertions.assertEquals(2.533e3, file.getDataObject1().getRTNCovarianceBlock().getCtt(), COVARIANCE_DIAG_PRECISION);
1721 Assertions.assertEquals(-2.313e1, file.getDataObject1().getRTNCovarianceBlock().getCnr(), COVARIANCE_DIAG_PRECISION);
1722 Assertions.assertEquals(1.336e1, file.getDataObject1().getRTNCovarianceBlock().getCnt(), COVARIANCE_DIAG_PRECISION);
1723 Assertions.assertEquals(7.098e1, file.getDataObject1().getRTNCovarianceBlock().getCnn(), COVARIANCE_DIAG_PRECISION);
1724
1725 Assertions.assertEquals(2.520e-3, file.getDataObject1().getRTNCovarianceBlock().getCrdotr(), COVARIANCE_PRECISION);
1726 Assertions.assertEquals(-5.476, file.getDataObject1().getRTNCovarianceBlock().getCrdott(), COVARIANCE_PRECISION);
1727 Assertions.assertEquals(8.626e-4, file.getDataObject1().getRTNCovarianceBlock().getCrdotn(), COVARIANCE_PRECISION);
1728 Assertions.assertEquals(5.744e-3, file.getDataObject1().getRTNCovarianceBlock().getCrdotrdot(), COVARIANCE_PRECISION);
1729
1730 Assertions.assertEquals(-1.006e-2, file.getDataObject1().getRTNCovarianceBlock().getCtdotr(), COVARIANCE_PRECISION);
1731 Assertions.assertEquals(4.041e-3, file.getDataObject1().getRTNCovarianceBlock().getCtdott(), COVARIANCE_PRECISION);
1732 Assertions.assertEquals(-1.359e-3, file.getDataObject1().getRTNCovarianceBlock().getCtdotn(), COVARIANCE_PRECISION);
1733 Assertions.assertEquals(-1.502e-5, file.getDataObject1().getRTNCovarianceBlock().getCtdotrdot(), COVARIANCE_PRECISION);
1734 Assertions.assertEquals(1.049e-5, file.getDataObject1().getRTNCovarianceBlock().getCtdottdot(), COVARIANCE_PRECISION);
1735
1736 Assertions.assertEquals(1.053e-3, file.getDataObject1().getRTNCovarianceBlock().getCndotr(), COVARIANCE_PRECISION);
1737 Assertions.assertEquals(-3.412e-3, file.getDataObject1().getRTNCovarianceBlock().getCndott(), COVARIANCE_PRECISION);
1738 Assertions.assertEquals(1.213e-2, file.getDataObject1().getRTNCovarianceBlock().getCndotn(), COVARIANCE_PRECISION);
1739 Assertions.assertEquals(-3.004e-6, file.getDataObject1().getRTNCovarianceBlock().getCndotrdot(), COVARIANCE_PRECISION);
1740 Assertions.assertEquals(-1.091e-6, file.getDataObject1().getRTNCovarianceBlock().getCndottdot(), COVARIANCE_PRECISION);
1741 Assertions.assertEquals(5.529e-5, file.getDataObject1().getRTNCovarianceBlock().getCndotndot(), COVARIANCE_PRECISION);
1742
1743 Assertions.assertEquals(2.520e-3, file.getDataObject1().getRTNCovarianceBlock().
1744 getRTNCovarianceMatrix().getEntry(3, 0), COVARIANCE_PRECISION);
1745 Assertions.assertEquals(Double.NaN, file.getDataObject1().getRTNCovarianceBlock().
1746 getRTNCovarianceMatrix().getEntry(7, 6), COVARIANCE_PRECISION);
1747
1748
1749
1750 Assertions.assertEquals(file.getSegments().get(1).getMetadata().getRelativeMetadata().getTca(),
1751 file.getRelativeMetadata().getTca());
1752 Assertions.assertEquals(file.getSegments().get(1).getMetadata().getRelativeMetadata().getMissDistance(),
1753 file.getRelativeMetadata().getMissDistance(),DISTANCE_PRECISION);
1754
1755
1756 Assertions.assertEquals("OBJECT2", file.getMetadataObject2().getObject());
1757 Assertions.assertEquals("30337", file.getMetadataObject2().getObjectDesignator());
1758 Assertions.assertEquals("SATCAT", file.getMetadataObject2().getCatalogName());
1759 Assertions.assertEquals("FENGYUN 1C DEB", file.getMetadataObject2().getObjectName());
1760 Assertions.assertEquals("1999-025AA", file.getMetadataObject2().getInternationalDes());
1761 Assertions.assertEquals("NONE", file.getMetadataObject2().getEphemName());
1762 Assertions.assertEquals(CovarianceMethod.CALCULATED, file.getMetadataObject2().getCovarianceMethod());
1763 Assertions.assertEquals(Maneuvrable.NO, file.getMetadataObject2().getManeuverable());
1764 Assertions.assertEquals(CelestialBodyFrame.EME2000, file.getMetadataObject2().getRefFrame().asCelestialBodyFrame());
1765 Assertions.assertEquals("UTC", file.getMetadataObject2().getTimeSystem().name());
1766
1767
1768 Assertions.assertEquals(2569.540800e3, file.getDataObject2().getStateVectorBlock().getPositionVector().getX(), DISTANCE_PRECISION);
1769 Assertions.assertEquals(2245.093614e3, file.getDataObject2().getStateVectorBlock().getPositionVector().getY(), DISTANCE_PRECISION);
1770 Assertions.assertEquals(6281.599946e3, file.getDataObject2().getStateVectorBlock().getPositionVector().getZ(), DISTANCE_PRECISION);
1771 Assertions.assertEquals(-2.888612500e3, file.getDataObject2().getStateVectorBlock().getVelocityVector().getX(), DERIVATION_PRECISION);
1772 Assertions.assertEquals(-6.007247516e3, file.getDataObject2().getStateVectorBlock().getVelocityVector().getY(), DERIVATION_PRECISION);
1773 Assertions.assertEquals(3.328770172e3, file.getDataObject2().getStateVectorBlock().getVelocityVector().getZ(), DERIVATION_PRECISION);
1774
1775 Assertions.assertEquals(1.337e3, file.getDataObject2().getRTNCovarianceBlock().getCrr(), COVARIANCE_DIAG_PRECISION);
1776 Assertions.assertEquals(-4.806e4, file.getDataObject2().getRTNCovarianceBlock().getCtr(), COVARIANCE_DIAG_PRECISION);
1777 Assertions.assertEquals(2.492e6, file.getDataObject2().getRTNCovarianceBlock().getCtt(), COVARIANCE_DIAG_PRECISION);
1778 Assertions.assertEquals(-3.298e1, file.getDataObject2().getRTNCovarianceBlock().getCnr(), COVARIANCE_DIAG_PRECISION);
1779 Assertions.assertEquals(-7.5888e2, file.getDataObject2().getRTNCovarianceBlock().getCnt(), COVARIANCE_DIAG_PRECISION);
1780 Assertions.assertEquals(7.105e1, file.getDataObject2().getRTNCovarianceBlock().getCnn(), COVARIANCE_DIAG_PRECISION);
1781
1782 Assertions.assertEquals(2.591e-3, file.getDataObject2().getRTNCovarianceBlock().getCrdotr(), COVARIANCE_PRECISION);
1783 Assertions.assertEquals(-4.152e-2, file.getDataObject2().getRTNCovarianceBlock().getCrdott(), COVARIANCE_PRECISION);
1784 Assertions.assertEquals(-1.784e-6, file.getDataObject2().getRTNCovarianceBlock().getCrdotn(), COVARIANCE_PRECISION);
1785 Assertions.assertEquals(6.886e-5, file.getDataObject2().getRTNCovarianceBlock().getCrdotrdot(), COVARIANCE_PRECISION);
1786
1787 Assertions.assertEquals(-1.016e-2, file.getDataObject2().getRTNCovarianceBlock().getCtdotr(), COVARIANCE_PRECISION);
1788 Assertions.assertEquals(-1.506e-4, file.getDataObject2().getRTNCovarianceBlock().getCtdott(), COVARIANCE_PRECISION);
1789 Assertions.assertEquals(1.637e-3, file.getDataObject2().getRTNCovarianceBlock().getCtdotn(), COVARIANCE_PRECISION);
1790 Assertions.assertEquals(-2.987e-6, file.getDataObject2().getRTNCovarianceBlock().getCtdotrdot(), COVARIANCE_PRECISION);
1791 Assertions.assertEquals(1.059e-5, file.getDataObject2().getRTNCovarianceBlock().getCtdottdot(), COVARIANCE_PRECISION);
1792
1793 Assertions.assertEquals(4.400e-3, file.getDataObject2().getRTNCovarianceBlock().getCndotr(), COVARIANCE_PRECISION);
1794 Assertions.assertEquals(8.482e-3, file.getDataObject2().getRTNCovarianceBlock().getCndott(), COVARIANCE_PRECISION);
1795 Assertions.assertEquals(8.633e-5, file.getDataObject2().getRTNCovarianceBlock().getCndotn(), COVARIANCE_PRECISION);
1796 Assertions.assertEquals(-1.903e-6, file.getDataObject2().getRTNCovarianceBlock().getCndotrdot(), COVARIANCE_PRECISION);
1797 Assertions.assertEquals(-4.594e-6, file.getDataObject2().getRTNCovarianceBlock().getCndottdot(), COVARIANCE_PRECISION);
1798 Assertions.assertEquals(5.178e-5, file.getDataObject2().getRTNCovarianceBlock().getCndotndot(), COVARIANCE_PRECISION);
1799
1800 Assertions.assertEquals(1.337e3, file.getDataObject2().getRTNCovarianceBlock().getCrr(), COVARIANCE_DIAG_PRECISION);
1801 Assertions.assertEquals(-4.806e4, file.getDataObject2().getRTNCovarianceBlock().getCtr(), COVARIANCE_DIAG_PRECISION);
1802 Assertions.assertEquals(2.492e6, file.getDataObject2().getRTNCovarianceBlock().getCtt(), COVARIANCE_DIAG_PRECISION);
1803 Assertions.assertEquals(-3.298e1, file.getDataObject2().getRTNCovarianceBlock().getCnr(), COVARIANCE_DIAG_PRECISION);
1804 Assertions.assertEquals(-7.5888e2, file.getDataObject2().getRTNCovarianceBlock().getCnt(), COVARIANCE_DIAG_PRECISION);
1805 Assertions.assertEquals(7.105e1, file.getDataObject2().getRTNCovarianceBlock().getCnn(), COVARIANCE_DIAG_PRECISION);
1806
1807 Assertions.assertEquals(2.591e-3, file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(3, 0), COVARIANCE_PRECISION);
1808 Assertions.assertEquals(-4.152e-2, file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(3, 1), COVARIANCE_PRECISION);
1809 Assertions.assertEquals(-1.784e-6, file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(3, 2), COVARIANCE_PRECISION);
1810 Assertions.assertEquals(6.886e-5, file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(3, 3), COVARIANCE_PRECISION);
1811
1812 Assertions.assertEquals(-1.016e-2, file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(4, 0), COVARIANCE_PRECISION);
1813 Assertions.assertEquals(-1.506e-4, file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(4, 1), COVARIANCE_PRECISION);
1814 Assertions.assertEquals(1.637e-3, file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(4, 2), COVARIANCE_PRECISION);
1815 Assertions.assertEquals(-2.987e-6, file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(4, 3), COVARIANCE_PRECISION);
1816 Assertions.assertEquals(1.059e-5, file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(4, 4), COVARIANCE_PRECISION);
1817
1818 Assertions.assertEquals(4.400e-3, file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(5, 0), COVARIANCE_PRECISION);
1819 Assertions.assertEquals(8.482e-3, file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(5, 1), COVARIANCE_PRECISION);
1820 Assertions.assertEquals(8.633e-5, file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(5, 2), COVARIANCE_PRECISION);
1821 Assertions.assertEquals(-1.903e-6, file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(5, 3), COVARIANCE_PRECISION);
1822 Assertions.assertEquals(-4.594e-6, file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(5, 4), COVARIANCE_PRECISION);
1823 Assertions.assertEquals(5.178e-5, file.getDataObject2().getRTNCovarianceBlock().getRTNCovarianceMatrix().getEntry(5, 5), COVARIANCE_PRECISION);
1824
1825
1826
1827
1828 Assertions.assertTrue(parser.inData());
1829
1830
1831 file.getDataObject1().getAdditionalCovMetadataBlock().validate(1.0);
1832 file.getDataObject1().getAdditionalCovMetadataBlock().setDcpSensitivityVectorPosition(null);
1833 file.getDataObject1().getAdditionalCovMetadataBlock().setDcpSensitivityVectorVelocity(null);
1834 Assertions.assertNull(file.getDataObject1().getAdditionalCovMetadataBlock().getDcpSensitivityVectorPosition());
1835 Assertions.assertNull(file.getDataObject1().getAdditionalCovMetadataBlock().getDcpSensitivityVectorVelocity());
1836 }
1837
1838 @Test
1839 public void test_issue_942_KVN() {
1840
1841
1842 final String ex = "/ccsds/cdm/CDMExample_issue942.txt";
1843
1844
1845 final CdmParser parser = new ParserBuilder().buildCdmParser();
1846
1847 final DataSource source = new DataSource(ex, () -> getClass().getResourceAsStream(ex));
1848
1849
1850 final Cdm file = parser.parseMessage(source);
1851
1852
1853 Assertions.assertEquals(Maneuvrable.N_A, file.getMetadataObject1().getManeuverable());
1854
1855 Assertions.assertEquals(Maneuvrable.NO, file.getMetadataObject2().getManeuverable());
1856 }
1857
1858 @Test
1859 public void test_issue_942_XML() {
1860
1861
1862 final String ex = "/ccsds/cdm/CDMExample_issue942.xml";
1863
1864
1865 final CdmParser parser = new ParserBuilder().buildCdmParser();
1866
1867 final DataSource source = new DataSource(ex, () -> getClass().getResourceAsStream(ex));
1868
1869
1870 final Cdm file = parser.parseMessage(source);
1871
1872
1873 Assertions.assertEquals(Maneuvrable.N_A, file.getMetadataObject1().getManeuverable());
1874
1875 Assertions.assertEquals(Maneuvrable.NO, file.getMetadataObject2().getManeuverable());
1876 }
1877
1878 @Test
1879 public void test_issue_944() {
1880
1881
1882 final String ex = "/ccsds/cdm/CDMExample_issue_944.xml";
1883
1884
1885 final CdmParser parser = new ParserBuilder().buildCdmParser();
1886
1887 final DataSource source = new DataSource(ex, () -> getClass().getResourceAsStream(ex));
1888
1889
1890 final Cdm file = parser.parseMessage(source);
1891
1892
1893 Assertions.assertEquals(3, file.getDataObject1().getAdditionalParametersBlock().getAreaDRG(), 0.0);
1894
1895
1896 Assertions.assertEquals(10, file.getDataObject1().getAdditionalParametersBlock().getAreaSRP(), 0.0);
1897 }
1898
1899 @Test
1900 public void test_issue_1319() {
1901
1902
1903 final String ex = "/ccsds/cdm/CDMExample_issue1319.xml";
1904
1905
1906 final CdmParser parser = new ParserBuilder().buildCdmParser();
1907
1908 final DataSource source = new DataSource(ex, () -> getClass().getResourceAsStream(ex));
1909
1910
1911 final Cdm file = parser.parseMessage(source);
1912
1913 Assertions.assertNull(file.getRelativeMetadata().getStartScreenPeriod());
1914 }
1915
1916 @Test
1917 public void test_issue_1319_throw_exception_when_mandatory_empty_values() {
1918
1919
1920 final String ex = "/ccsds/cdm/CDMExample_issue1319_mandatory_empty_value.xml";
1921
1922
1923 final CdmParser parser = new ParserBuilder().buildCdmParser();
1924
1925 final DataSource source = new DataSource(ex, () -> getClass().getResourceAsStream(ex));
1926
1927 OrekitException exception = Assertions.assertThrows(OrekitException.class, () -> parser.parseMessage(source));
1928 Assertions.assertEquals("value for key X has not been initialized", exception.getMessage());
1929 }
1930
1931 @Test
1932 public void test_issue_1458() {
1933
1934
1935 final String ex = "/ccsds/cdm/CDMExample_issue1458.xml";
1936
1937
1938 final CdmParser parser = new ParserBuilder().buildCdmParser();
1939
1940 final DataSource source = new DataSource(ex, () -> getClass().getResourceAsStream(ex));
1941
1942
1943 Cdm file = parser.parseMessage(source);
1944
1945
1946 Assertions.assertNull(file.getDataObject1().getODParametersBlock());
1947 }
1948 }