1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.files.ccsds.ndm.adm.aem;
18
19 import org.hipparchus.geometry.euclidean.threed.RotationOrder;
20 import org.junit.jupiter.api.Test;
21 import org.orekit.Utils;
22 import org.orekit.data.DataContext;
23 import org.orekit.files.ccsds.definitions.Units;
24 import org.orekit.files.ccsds.ndm.AbstractWriterTest;
25 import org.orekit.files.ccsds.ndm.ParsedUnitsBehavior;
26 import org.orekit.files.ccsds.ndm.ParserBuilder;
27 import org.orekit.files.ccsds.ndm.WriterBuilder;
28 import org.orekit.files.ccsds.ndm.adm.AdmHeader;
29 import org.orekit.files.ccsds.utils.generation.XmlGenerator;
30 import org.orekit.time.AbsoluteDate;
31 import org.orekit.utils.IERSConventions;
32 import org.orekit.utils.units.Unit;
33
34 import java.io.IOException;
35
36 import static org.mockito.Mockito.mock;
37 import static org.mockito.Mockito.reset;
38 import static org.mockito.Mockito.verify;
39
40 public class AemWriterTest extends AbstractWriterTest<AdmHeader, AemSegment, Aem> {
41
42 protected AemParser getParser() {
43 return new ParserBuilder().
44 withParsedUnitsBehavior(ParsedUnitsBehavior.STRICT_COMPLIANCE).
45 buildAemParser();
46 }
47
48 protected AemWriter getWriter() {
49 return new WriterBuilder().buildAemWriter();
50 }
51
52 @Test
53 public void testWriteExample01() {
54 doTest("/ccsds/adm/aem/AEMExample01.txt");
55 }
56
57 @Test
58 public void testWriteExample02() {
59 doTest("/ccsds/adm/aem/AEMExample02.txt");
60 }
61
62 @Test
63 public void testWriteKvnExample03() {
64 doTest("/ccsds/adm/aem/AEMExample03.txt");
65 }
66
67 @Test
68 public void testWriteXmlExample03() {
69 doTest("/ccsds/adm/aem/AEMExample03.xml");
70 }
71
72 @Test
73 public void testWriteExample04() {
74 doTest("/ccsds/adm/aem/AEMExample04.txt");
75 }
76
77 @Test
78 public void testWriteExample05() {
79 doTest("/ccsds/adm/aem/AEMExample05.txt");
80 }
81
82 @Test
83 public void testWriteExample06a() {
84 doTest("/ccsds/adm/aem/AEMExample06a.txt");
85 }
86
87 @Test
88 public void testWriteExample06b() {
89 doTest("/ccsds/adm/aem/AEMExample06b.txt");
90 }
91
92 @Test
93 public void testWriteExample07() {
94 doTest("/ccsds/adm/aem/AEMExample07.txt");
95 }
96
97 @Test
98 public void testWriteExample08() {
99 doTest("/ccsds/adm/aem/AEMExample08.txt");
100 }
101
102 @Test
103 public void testWriteExample09() {
104 doTest("/ccsds/adm/aem/AEMExample09.txt");
105 }
106
107 @Test
108 public void testWriteExample10() {
109 doTest("/ccsds/adm/aem/AEMExample10.txt");
110 }
111
112 @Test
113 public void testWriteExample11() {
114 doTest("/ccsds/adm/aem/AEMExample11.xml");
115 }
116
117 @Test
118 public void testWriteExample12() {
119 doTest("/ccsds/adm/aem/AEMExample12.txt");
120 }
121
122 @Test
123 public void testWriteExample13() {
124 doTest("/ccsds/adm/aem/AEMExample13.xml");
125 }
126
127 @Test
128 public void testWriteExample14() {
129 doTest("/ccsds/adm/aem/AEMExample14.txt");
130 }
131
132 @Test
133 public void testWriteExample15() {
134 doTest("/ccsds/adm/aem/AEMExample15.txt");
135 }
136
137 @Test
138 public void testWriteExample16() {
139 doTest("/ccsds/adm/aem/AEMExample16.txt");
140 }
141
142 @Test
143 public void testWriteExample17() {
144 doTest("/ccsds/adm/aem/AEMExample17.txt");
145 }
146
147 @Test
148
149 public void testIssue1453() throws IOException {
150
151
152 Utils.setDataRoot("regular-data");
153
154
155 final AemWriter writer = new AemWriter(IERSConventions.IERS_2010, DataContext.getDefault(), null);
156
157
158 final XmlGenerator mockXmlGenerator = mock(XmlGenerator.class);
159
160
161 final AbsoluteDate mockAbsoluteDate = mock(AbsoluteDate.class);
162
163
164 final String[] data = new String[] { "1", "2", "3", "4", "5", "6", "7", "8"};
165
166
167
168 writer.writeQuaternion(mockXmlGenerator, 1, true, mockAbsoluteDate, data);
169 verify(mockXmlGenerator).writeEntry(AttitudeEntryKey.QC.name(), data[0], Unit.ONE, false);
170 reset(mockXmlGenerator);
171
172 writer.writeQuaternion(mockXmlGenerator, 1, false, mockAbsoluteDate, data);
173 verify(mockXmlGenerator).writeEntry(AttitudeEntryKey.QC.name(), data[3], Unit.ONE, false);
174 reset(mockXmlGenerator);
175
176
177 writer.writeQuaternionDerivative(mockXmlGenerator, 1, true, mockAbsoluteDate, data);
178 verify(mockXmlGenerator).writeEntry(AttitudeEntryKey.QC.name(), data[0], Unit.ONE, true);
179 verify(mockXmlGenerator).enterSection(AttitudeEntryKey.quaternionRate.name());
180 verify(mockXmlGenerator).writeEntry(AttitudeEntryKey.QC_DOT.name(), data[4], Units.ONE_PER_S, true);
181 reset(mockXmlGenerator);
182
183 writer.writeQuaternionDerivative(mockXmlGenerator, 1, false, mockAbsoluteDate, data);
184 verify(mockXmlGenerator).writeEntry(AttitudeEntryKey.QC.name(), data[3], Unit.ONE, true);
185 verify(mockXmlGenerator).enterSection(AttitudeEntryKey.quaternionRate.name());
186 verify(mockXmlGenerator).writeEntry(AttitudeEntryKey.QC_DOT.name(), data[7], Units.ONE_PER_S, true);
187 reset(mockXmlGenerator);
188
189
190 writer.writeQuaternionEulerRates(mockXmlGenerator, true, RotationOrder.XYZ, mockAbsoluteDate, data);
191 verify(mockXmlGenerator).writeEntry(AttitudeEntryKey.QC.name(), data[0], Unit.ONE, true);
192 reset(mockXmlGenerator);
193
194 writer.writeQuaternionEulerRates(mockXmlGenerator, false, RotationOrder.XYZ, mockAbsoluteDate, data);
195 verify(mockXmlGenerator).writeEntry(AttitudeEntryKey.QC.name(), data[3], Unit.ONE, true);
196 reset(mockXmlGenerator);
197
198
199 writer.writeEulerAngle(mockXmlGenerator, 2, RotationOrder.XYZ, mockAbsoluteDate, data);
200 verify(mockXmlGenerator).writeEntry(AttitudeEntryKey.ANGLE_1.name(), data[0], Unit.DEGREE, true);
201 verify(mockXmlGenerator).writeEntry(AttitudeEntryKey.ANGLE_2.name(), data[1], Unit.DEGREE, true);
202 verify(mockXmlGenerator).writeEntry(AttitudeEntryKey.ANGLE_3.name(), data[2], Unit.DEGREE, true);
203 }
204 }