1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.rugged.utils;
18
19
20 import org.hipparchus.exception.LocalizedCoreFormats;
21 import org.junit.jupiter.api.Assertions;
22 import org.junit.jupiter.api.Test;
23 import org.orekit.errors.OrekitException;
24 import org.orekit.time.AbsoluteDate;
25
26 public class AbsoluteDateForVectorisationTest {
27 @Test
28 public void testShiftedBySeveralTimeShiftOneDate() {
29
30 AbsoluteDate date1 = new AbsoluteDate();
31 AbsoluteDate[] dates = new AbsoluteDate[] {date1};
32 double[] dts = new double[] {10.0, 20.0, 30.0};
33 AbsoluteDateArrayHandling datesForVect = new AbsoluteDateArrayHandling(dates);
34 AbsoluteDate[][] datesShifted = datesForVect.multipleShiftedBy(dts);
35 Assertions.assertEquals(datesShifted[0][0].durationFrom(date1.shiftedBy(10)), 0.0, 1e-5);
36 Assertions.assertEquals(datesShifted[0][1].durationFrom(date1.shiftedBy(20)), 0.0, 1e-5);
37
38 }
39
40 @Test
41 public void testShiftedByCorrespondingTimeShift() {
42
43 AbsoluteDate date1 = new AbsoluteDate();
44 AbsoluteDate date2 = date1.shiftedBy(10000);
45 AbsoluteDate date3 = date1.shiftedBy(20000);
46 AbsoluteDate[] dates = new AbsoluteDate[] {date1, date2, date3};
47 double[] dts = new double[] {10.0, 20.0, 30.0};
48 AbsoluteDateArrayHandling datesForVect = new AbsoluteDateArrayHandling(dates);
49 AbsoluteDate[] datesShifted = datesForVect.shiftedBy(dts);
50 Assertions.assertEquals(datesShifted[0].durationFrom(date1.shiftedBy(10)), 0.0, 1e-5);
51 Assertions.assertEquals(datesShifted[1].durationFrom(date1.shiftedBy(10020)), 0.0, 1e-5);
52 Assertions.assertEquals(datesShifted[2].durationFrom(date1.shiftedBy(20030)), 0.0, 1e-5);
53
54 }
55
56 @Test
57 public void testShiftedBySeveralTimeShiftSeveralDates() {
58
59 AbsoluteDate date1 = new AbsoluteDate();
60 AbsoluteDate date2 = date1.shiftedBy(10000);
61 AbsoluteDate[] dates = new AbsoluteDate[] {date1, date2};
62 double[] dts = new double[] {10.0, 20.0, 30.0};
63 AbsoluteDateArrayHandling datesForVect = new AbsoluteDateArrayHandling(dates);
64 AbsoluteDate[][] datesShifted = datesForVect.multipleShiftedBy(dts);
65 Assertions.assertEquals(datesShifted[0][0].durationFrom(date1.shiftedBy(10)), 0.0, 1e-5);
66 Assertions.assertEquals(datesShifted[0][1].durationFrom(date1.shiftedBy(20)), 0.0, 1e-5);
67 Assertions.assertEquals(datesShifted[1][1].durationFrom(date2.shiftedBy(20)), 0.0, 1e-5);
68 Assertions.assertEquals(datesShifted[1][2].durationFrom(date2.shiftedBy(30)), 0.0, 1e-5);
69
70 }
71
72 @Test
73 public void testDurationFromSeveralDates() {
74
75 AbsoluteDate date1 = new AbsoluteDate();
76 AbsoluteDate date2 = date1.shiftedBy(10000);
77 AbsoluteDate date3 = date1.shiftedBy(20000);
78 AbsoluteDate date4 = date1.shiftedBy(100000);
79 AbsoluteDate[] dates = new AbsoluteDate[] {date1, date2, date3};
80 AbsoluteDate[] datesComputeDuration = new AbsoluteDate[] {date4, date1};
81 AbsoluteDateArrayHandling datesForVect = new AbsoluteDateArrayHandling(dates);
82 double[][] datesDurations = datesForVect.multipleDurationFrom(datesComputeDuration);
83 Assertions.assertEquals(datesDurations[0][0], date1.durationFrom(date4), 1e-5);
84 Assertions.assertEquals(datesDurations[0][1], date1.durationFrom(date1), 1e-5);
85 Assertions.assertEquals(datesDurations[1][0], date2.durationFrom(date4), 1e-5);
86 Assertions.assertEquals(datesDurations[1][1], date2.durationFrom(date1), 1e-5);
87 Assertions.assertEquals(datesDurations[2][0], date3.durationFrom(date4), 1e-5);
88 Assertions.assertEquals(datesDurations[2][1], date3.durationFrom(date1), 1e-5);
89
90 }
91
92 @Test
93 public void testDurationFromCorrespondingDates() {
94
95 AbsoluteDate date1 = new AbsoluteDate();
96 AbsoluteDate date2 = date1.shiftedBy(10000);
97 AbsoluteDate date3 = date1.shiftedBy(20000);
98 AbsoluteDate date4 = date1.shiftedBy(100000);
99 AbsoluteDate[] dates = new AbsoluteDate[] {date1, date2, date3};
100 AbsoluteDate[] datesComputeDuration = new AbsoluteDate[] {date4, date1, date2};
101 AbsoluteDateArrayHandling datesForVect = new AbsoluteDateArrayHandling(dates);
102 double[] datesDurations = datesForVect.durationFrom(datesComputeDuration);
103 Assertions.assertEquals(datesDurations[0], date1.durationFrom(date4), 1e-5);
104 Assertions.assertEquals(datesDurations[1], date2.durationFrom(date1), 1e-5);
105 Assertions.assertEquals(datesDurations[2], date3.durationFrom(date2), 1e-5);
106
107 }
108
109 @Test
110 public void testExceptionDimensions() {
111
112 AbsoluteDate date1 = new AbsoluteDate();
113 AbsoluteDate date2 = date1.shiftedBy(10000);
114 AbsoluteDate date3 = date1.shiftedBy(20000);
115 AbsoluteDate date4 = date1.shiftedBy(100000);
116 AbsoluteDate[] dates = new AbsoluteDate[] {date1, date2, date3};
117 AbsoluteDate[] datesComputeDuration = new AbsoluteDate[] {date4, date1};
118 AbsoluteDateArrayHandling datesForVect = new AbsoluteDateArrayHandling(dates);
119 try {
120 datesForVect.durationFrom(datesComputeDuration);
121 Assertions.fail("an exception should have been thrown");
122 } catch (OrekitException oe) {
123 Assertions.assertEquals(LocalizedCoreFormats.DIMENSIONS_MISMATCH, oe.getSpecifier());
124 }
125 }
126
127 }