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 org.junit.jupiter.api.Assertions;
20 import org.junit.jupiter.api.BeforeEach;
21 import org.junit.jupiter.api.Test;
22 import org.orekit.Utils;
23 import org.orekit.annotation.DefaultDataContext;
24 import org.orekit.bodies.CelestialBodyFactory;
25 import org.orekit.data.DataContext;
26 import org.orekit.errors.OrekitException;
27 import org.orekit.errors.OrekitMessages;
28 import org.orekit.files.ccsds.definitions.BodyFacade;
29 import org.orekit.files.ccsds.definitions.CcsdsFrameMapper;
30 import org.orekit.files.ccsds.definitions.CenterName;
31 import org.orekit.files.ccsds.definitions.FrameFacade;
32 import org.orekit.frames.Frame;
33 import org.orekit.frames.FramesFactory;
34 import org.orekit.frames.Transform;
35 import org.orekit.time.AbsoluteDate;
36 import org.orekit.utils.IERSConventions;
37
38
39
40
41 public class CdmMetaDataTest {
42
43 @BeforeEach
44 public void setUp() {
45 Utils.setDataRoot("regular-data");
46 }
47
48
49 @Test
50 @DefaultDataContext
51 public void testGetFrame() {
52
53 CdmMetadata meta = new CdmMetadata();
54
55
56 try {
57 meta.getFrame();
58 Assertions.fail("an exception should have been thrown");
59 } catch (OrekitException oe) {
60 Assertions.assertEquals(OrekitMessages.CCSDS_INVALID_FRAME, oe.getSpecifier());
61 Assertions.assertEquals("No reference frame", oe.getParts()[0]);
62 }
63
64
65 try {
66 meta.setOrbitCenter(new BodyFacade("dummy center", null));
67 meta.getFrame();
68 Assertions.fail("an exception should have been thrown");
69 } catch (OrekitException oe) {
70 Assertions.assertEquals(OrekitMessages.NO_DATA_LOADED_FOR_CELESTIAL_BODY, oe.getSpecifier());
71 Assertions.assertEquals("dummy center", oe.getParts()[0]);
72 }
73
74
75 meta.setOrbitCenter(BodyFacade.create(CenterName.MARS));
76 try {
77 meta.setRefFrame(new FrameFacade(null, null, null, null, "dummy frame"));
78 meta.getFrame();
79 Assertions.fail("an exception should have been thrown");
80 } catch (OrekitException oe) {
81 Assertions.assertEquals(OrekitMessages.CCSDS_INVALID_FRAME, oe.getSpecifier());
82 Assertions.assertEquals("dummy frame", oe.getParts()[0]);
83 }
84
85
86
87
88 meta.setRefFrame(FrameFacade.map(CelestialBodyFactory.getMars().getInertiallyOrientedFrame()));
89 Assertions.assertEquals(CelestialBodyFactory.getMars().getInertiallyOrientedFrame(), meta.getFrame());
90
91
92
93
94 final Frame icrf = FramesFactory.getICRF();
95 meta.setOrbitCenter(BodyFacade.create(CenterName.SOLAR_SYSTEM_BARYCENTER));
96 meta.setRefFrame(FrameFacade.map(icrf));
97 Assertions.assertEquals(icrf, meta.getFrame());
98
99
100 BodyFacade bodyFacade = new BodyFacade("TEST_BODY", null);
101 FrameFacade frameFacade = new FrameFacade(null, null, null, null, "TEST_FRAME");
102 Frame frame = new Frame(Frame.getRoot(), (Transform) null, "TEST");
103 final CcsdsFrameMapper frameMapper = new CcsdsFrameMapper() {
104 @Override
105 public Frame buildCcsdsFrame(FrameFacade orientation, AbsoluteDate epoch) {
106 throw new UnsupportedOperationException();
107 }
108
109 @Override
110 public Frame buildCcsdsFrame(BodyFacade center,
111 FrameFacade orientation,
112 AbsoluteDate epoch) {
113 Assertions.assertSame(center, bodyFacade);
114 Assertions.assertSame(orientation, frameFacade);
115 return frame;
116 }
117 };
118 meta = new CdmMetadata(DataContext.getDefault(), frameMapper);
119 meta.setOrbitCenter(bodyFacade);
120 meta.setRefFrame(frameFacade);
121 Assertions.assertSame(meta.getFrame(), frame);
122 Assertions.assertSame(meta.getFrameMapper(), frameMapper);
123 }
124
125
126 @Test
127 @DefaultDataContext
128 public void testSetAltCovRefFrame() {
129
130 final CdmMetadata meta = new CdmMetadata();
131 final FrameFacade altCovRefFrame = new FrameFacade(null, null, null, null, null);
132
133
134 try {
135 meta.setAltCovRefFrame(altCovRefFrame);
136 Assertions.fail("an exception should have been thrown");
137 } catch (OrekitException oe) {
138 Assertions.assertEquals(OrekitMessages.CCSDS_MISSING_KEYWORD, oe.getSpecifier());
139 Assertions.assertEquals(CdmMetadataKey.ALT_COV_TYPE, oe.getParts()[0]);
140 }
141
142
143 meta.setAltCovType(AltCovarianceType.CSIG3EIGVEC3);
144 try {
145 meta.setAltCovRefFrame(altCovRefFrame);
146 Assertions.fail("an exception should have been thrown");
147 } catch (OrekitException oe) {
148 Assertions.assertEquals(OrekitMessages.CCSDS_INVALID_FRAME, oe.getSpecifier());
149 Assertions.assertNull(oe.getParts()[0]);
150 }
151
152
153 FrameFacade frameFacade = FrameFacade.map(FramesFactory.getICRF());
154 try {
155 meta.setAltCovRefFrame(frameFacade);
156 Assertions.fail("an exception should have been thrown");
157 } catch (OrekitException oe) {
158 Assertions.assertEquals(OrekitMessages.CCSDS_INVALID_FRAME, oe.getSpecifier());
159 Assertions.assertEquals(frameFacade.getName(), oe.getParts()[0]);
160 }
161
162
163 frameFacade = FrameFacade.map(FramesFactory.getGCRF());
164 meta.setAltCovRefFrame(frameFacade);
165 Assertions.assertEquals(frameFacade, meta.getAltCovRefFrame());
166
167 frameFacade = FrameFacade.map(FramesFactory.getEME2000());
168 meta.setAltCovRefFrame(frameFacade);
169 Assertions.assertEquals(frameFacade, meta.getAltCovRefFrame());
170
171 frameFacade = FrameFacade.map(FramesFactory.getITRF(IERSConventions.IERS_2010, true));
172 meta.setAltCovRefFrame(frameFacade);
173 Assertions.assertEquals(frameFacade, meta.getAltCovRefFrame());
174 }
175 }