1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.orbits;
18
19 import org.junit.jupiter.api.Assertions;
20 import org.junit.jupiter.api.Test;
21 import org.junit.jupiter.params.ParameterizedTest;
22 import org.junit.jupiter.params.provider.EnumSource;
23 import org.junit.jupiter.params.provider.ValueSource;
24 import org.orekit.errors.OrekitException;
25 import org.orekit.errors.OrekitMessages;
26
27 class EquinoctialLongitudeArgumentUtilityTest {
28
29 private static final double EX = 0.1;
30 private static final double EY = 0.66;
31 private static final double TOLERANCE = 1e-10;
32
33 @Test
34 void testMeanToTrueAndBack() {
35
36 final double expectedLongitudeArgument = 3.;
37
38 final double intermediateLongitudeArgument = EquinoctialLongitudeArgumentUtility.meanToTrue(EX, EY,
39 expectedLongitudeArgument);
40 final double actualLongitudeArgument = EquinoctialLongitudeArgumentUtility.trueToMean(EX, EY,
41 intermediateLongitudeArgument);
42
43 Assertions.assertEquals(expectedLongitudeArgument, actualLongitudeArgument, TOLERANCE);
44 }
45
46 @Test
47 void testEccentricToTrueAndBack() {
48
49 final double expectedLongitudeArgument = 3.;
50
51 final double intermediateLongitudeArgument = EquinoctialLongitudeArgumentUtility.eccentricToTrue(EX, EY,
52 expectedLongitudeArgument);
53 final double actualLongitudeArgument = EquinoctialLongitudeArgumentUtility.trueToEccentric(EX, EY,
54 intermediateLongitudeArgument);
55
56 Assertions.assertEquals(expectedLongitudeArgument, actualLongitudeArgument, TOLERANCE);
57 }
58
59 @Test
60 void testEccentricToMeanAndBack() {
61
62 final double expectedLongitudeArgument = 3.;
63
64 final double intermediateLongitudeArgument = EquinoctialLongitudeArgumentUtility.eccentricToMean(EX, EY,
65 expectedLongitudeArgument);
66 final double actualLongitudeArgument = EquinoctialLongitudeArgumentUtility.meanToEccentric(EX, EY,
67 intermediateLongitudeArgument);
68
69 Assertions.assertEquals(expectedLongitudeArgument, actualLongitudeArgument, TOLERANCE);
70 }
71
72 @Test
73 void testMeanToEccentricException() {
74
75 final double nanLongitudeArgument = Double.NaN;
76
77 Assertions.assertThrows(OrekitException.class, () -> EquinoctialLongitudeArgumentUtility.meanToEccentric(EX, EY,
78 nanLongitudeArgument), OrekitMessages.UNABLE_TO_COMPUTE_ECCENTRIC_LONGITUDE_ARGUMENT.toString());
79 }
80
81 @ParameterizedTest
82 @EnumSource(PositionAngleType.class)
83 void testConvertL(final PositionAngleType inputType) {
84
85 final double expectedLongitudeArgument = 3.;
86 final PositionAngleType intermediateType = PositionAngleType.ECCENTRIC;
87
88 final double intermediateLongitudeArgument = EquinoctialLongitudeArgumentUtility.convertL(inputType,
89 expectedLongitudeArgument, EX, EY, intermediateType);
90 final double actualLongitudeArgument = EquinoctialLongitudeArgumentUtility.convertL(intermediateType,
91 intermediateLongitudeArgument, EX, EY, inputType);
92
93 Assertions.assertEquals(expectedLongitudeArgument, actualLongitudeArgument, TOLERANCE);
94 }
95
96 @ParameterizedTest
97 @ValueSource(doubles = {1e3, 5e3, 1e4, 1e5, 5e5})
98 void testIssue1525(final double lM) {
99 final double ex = 0.44940492906694396;
100 final double ey = 0.56419162961687;
101 Assertions.assertDoesNotThrow(() -> EquinoctialLongitudeArgumentUtility.meanToEccentric(ex, ey, lM));
102 }
103 }