1   /* Copyright 2022-2025 Luc Maisonobe
2    * Licensed to CS GROUP (CS) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * CS licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *   http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.orekit.files.sp3;
18  
19  import org.hipparchus.geometry.euclidean.threed.Vector3D;
20  import org.junit.jupiter.api.Assertions;
21  
22  public class SP3TestUtils {
23  
24      public static void checkEquals(final SP3 original, final SP3 rebuilt) {
25          checkEquals(original.getHeader(), rebuilt.getHeader());
26          Assertions.assertEquals(original.getSatelliteCount(), rebuilt.getSatelliteCount());
27          for (int i = 0; i < original.getSatelliteCount(); ++i) {
28              checkEquals(original.getEphemeris(i), rebuilt.getEphemeris(i));
29          }
30      }
31  
32      public static void checkEquals(final SP3Header original, final SP3Header rebuilt) {
33          Assertions.assertEquals(original.getVersion(),         rebuilt.getVersion());
34          Assertions.assertEquals(original.getFilter(),          rebuilt.getFilter());
35          Assertions.assertEquals(original.getType(),            rebuilt.getType());
36          Assertions.assertEquals(original.getTimeSystem(),      rebuilt.getTimeSystem());
37          Assertions.assertEquals(original.getDataUsed().size(), rebuilt.getDataUsed().size());
38          for (int i = 0 ; i < original.getDataUsed().size(); ++i) {
39              Assertions.assertEquals(original.getDataUsed().get(i), rebuilt.getDataUsed().get(i));
40          }
41          Assertions.assertEquals(original.getEpoch(),             rebuilt.getEpoch());
42          Assertions.assertEquals(original.getGpsWeek(),           rebuilt.getGpsWeek());
43          Assertions.assertEquals(original.getSecondsOfWeek(),     rebuilt.getSecondsOfWeek(), 1.0e-15);
44          Assertions.assertEquals(original.getModifiedJulianDay(), rebuilt.getModifiedJulianDay());
45          Assertions.assertEquals(original.getDayFraction(),       rebuilt.getDayFraction(), 1.0e-15);
46          Assertions.assertEquals(original.getEpochInterval(),     rebuilt.getEpochInterval(), 1.0e-15);
47          Assertions.assertEquals(original.getNumberOfEpochs(),    rebuilt.getNumberOfEpochs());
48          Assertions.assertEquals(original.getCoordinateSystem(),  rebuilt.getCoordinateSystem());
49          Assertions.assertEquals(original.getOrbitType(),         rebuilt.getOrbitType());
50          Assertions.assertEquals(original.getOrbitTypeKey(),      rebuilt.getOrbitTypeKey());
51          Assertions.assertEquals(original.getAgency(),            rebuilt.getAgency());
52          Assertions.assertEquals(original.getPosVelBase(),        rebuilt.getPosVelBase(), 1.0e-15);
53          Assertions.assertEquals(original.getClockBase(),         rebuilt.getClockBase(),  1.0e-15);
54          Assertions.assertEquals(original.getSatIds().size(), rebuilt.getSatIds().size());
55          for (int i = 0; i < original.getSatIds().size(); ++i) {
56              Assertions.assertEquals(original.getSatIds().get(i), rebuilt.getSatIds().get(i));
57              Assertions.assertEquals(original.getAccuracy(original.getSatIds().get(i)), rebuilt.getAccuracy(rebuilt.getSatIds().get(i)), 1.0e-15);
58          }
59          Assertions.assertEquals(original.getComments().size(), rebuilt.getComments().size());
60          for (int i = 0; i < original.getComments().size(); ++i) {
61              Assertions.assertEquals(original.getComments().get(i), rebuilt.getComments().get(i));
62          }
63      }
64  
65      public static void checkEquals(final SP3Ephemeris original, final SP3Ephemeris rebuilt) {
66          Assertions.assertEquals(original.getId(), rebuilt.getId());
67          Assertions.assertEquals(original.getMu(), rebuilt.getMu(), 0.001);
68          Assertions.assertEquals(original.getSegments().size(), rebuilt.getSegments().size());
69          for (int i = 0; i < original.getSegments().size(); ++i) {
70              checkEquals(original.getSegments().get(i), rebuilt.getSegments().get(i));
71          }
72          Assertions.assertEquals(original.getStart(),                rebuilt.getStart());
73          Assertions.assertEquals(original.getStop(),                 rebuilt.getStop());
74          Assertions.assertEquals(original.getFrame().getName(),      rebuilt.getFrame().getName());
75          Assertions.assertEquals(original.getInterpolationSamples(), rebuilt.getInterpolationSamples());
76          Assertions.assertEquals(original.getAvailableDerivatives(), rebuilt.getAvailableDerivatives());
77      }
78  
79      public static void checkEquals(final SP3Segment original, final SP3Segment rebuilt) {
80          Assertions.assertEquals(original.getMu(),                   rebuilt.getMu(), 0.001);
81          Assertions.assertEquals(original.getStart(),                rebuilt.getStart());
82          Assertions.assertEquals(original.getStop(),                 rebuilt.getStop());
83          Assertions.assertEquals(original.getFrame().getName(),      rebuilt.getFrame().getName());
84          Assertions.assertEquals(original.getInterpolationSamples(), rebuilt.getInterpolationSamples());
85          Assertions.assertEquals(original.getAvailableDerivatives(), rebuilt.getAvailableDerivatives());
86          Assertions.assertEquals(original.getCoordinates().size(),   rebuilt.getCoordinates().size());
87          for (int i = 0; i < original.getCoordinates().size(); ++i) {
88              checkEquals(original.getCoordinates().get(i), rebuilt.getCoordinates().get(i));
89          }
90      }
91  
92      public static void checkEquals(final SP3Coordinate original, final SP3Coordinate rebuilt) {
93          Assertions.assertEquals(original.getDate(),                rebuilt.getDate());
94          Assertions.assertEquals(0.0, Vector3D.distance(original.getPosition(), rebuilt.getPosition()), 1.0e-10);
95          Assertions.assertEquals(0.0, Vector3D.distance(original.getVelocity(), rebuilt.getVelocity()), 1.0e-10);
96          Assertions.assertEquals(original.getClockCorrection(),     rebuilt.getClockCorrection(), 1.0e-15);
97          Assertions.assertEquals(original.getClockRateChange(),     rebuilt.getClockRateChange(), 1.0e-15);
98          if (original.getPositionAccuracy() == null) {
99              Assertions.assertNull(rebuilt.getPositionAccuracy());
100         } else {
101             Assertions.assertEquals(0.0, Vector3D.distance(original.getPositionAccuracy(), rebuilt.getPositionAccuracy()), 1.0e-10);
102         }
103         if (original.getVelocityAccuracy() == null) {
104             Assertions.assertNull(rebuilt.getVelocityAccuracy());
105         } else {
106             Assertions.assertEquals(0.0, Vector3D.distance(original.getVelocityAccuracy(), rebuilt.getVelocityAccuracy()), 1.0e-10);
107         }
108         if (Double.isNaN(original.getClockAccuracy())) {
109             Assertions.assertTrue(Double.isNaN(rebuilt.getClockAccuracy()));
110         } else {
111             Assertions.assertEquals(original.getClockAccuracy(), rebuilt.getClockAccuracy(), 1.0e-15);
112         }
113         if (Double.isNaN(original.getClockRateAccuracy())) {
114             Assertions.assertTrue(Double.isNaN(rebuilt.getClockRateAccuracy()));
115         } else {
116             Assertions.assertEquals(original.getClockRateAccuracy(), rebuilt.getClockRateAccuracy(), 1.0e-15);
117         }
118         Assertions.assertEquals(original.hasClockEvent(),         rebuilt.hasClockEvent());
119         Assertions.assertEquals(original.hasClockPrediction(),    rebuilt.hasClockPrediction());
120         Assertions.assertEquals(original.hasOrbitManeuverEvent(), rebuilt.hasOrbitManeuverEvent());
121         Assertions.assertEquals(original.hasOrbitPrediction(),    rebuilt.hasOrbitPrediction());
122     }
123 
124 }