1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.time;
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.utils.Constants;
24
25 public class BDSScaleTest {
26
27 @Test
28 public void testT0() {
29 TimeScale scale = TimeScalesFactory.getBDT();
30 Assertions.assertEquals("BDT", scale.toString());
31 AbsoluteDate t0 =
32 new AbsoluteDate(new DateComponents(2006, 1, 1), new TimeComponents(0, 0, 13), scale);
33 Assertions.assertEquals(new AbsoluteDate(new DateComponents(2006, 1, 1), new TimeComponents(0, 0, 13),
34 TimeScalesFactory.getUTC()),
35 t0);
36 }
37
38 @Test
39 public void test2010() {
40 AbsoluteDate tBDT =
41 new AbsoluteDate(new DateComponents(2010, 1, 2), TimeComponents.H00, TimeScalesFactory.getBDT());
42 AbsoluteDate tUTC =
43 new AbsoluteDate(new DateComponents(2010, 1, 1), new TimeComponents(23, 59, 59.0),
44 TimeScalesFactory.getUTC());
45 Assertions.assertEquals(tUTC, tBDT);
46 }
47
48 @Test
49 public void testDuringLeap() {
50 final TimeScale utc = TimeScalesFactory.getUTC();
51 final TimeScale scale = TimeScalesFactory.getBDT();
52 final AbsoluteDate before = new AbsoluteDate(new DateComponents(1983, 6, 30),
53 new TimeComponents(23, 59, 59),
54 utc);
55 final AbsoluteDate during = before.shiftedBy(1.25);
56 Assertions.assertEquals(61, utc.minuteDuration(during));
57 Assertions.assertEquals(1.0, utc.getLeap(during).toDouble(), 1.0e-10);
58 Assertions.assertEquals(60, scale.minuteDuration(during));
59 Assertions.assertEquals(0.0, scale.getLeap(during).toDouble(), 1.0e-10);
60 }
61
62 @Test
63 public void testConstant() {
64 TimeScale scale = TimeScalesFactory.getBDT();
65 double reference = scale.offsetFromTAI(AbsoluteDate.J2000_EPOCH).toDouble();
66 for (double dt = -10000; dt < 10000; dt += 123.456789) {
67 AbsoluteDate date = AbsoluteDate.J2000_EPOCH.shiftedBy(dt * Constants.JULIAN_DAY);
68 Assertions.assertEquals(reference, scale.offsetFromTAI(date).toDouble(), 1.0e-15);
69 }
70 }
71
72 @Test
73 public void testAwayFromGPS() {
74 TimeScale bdt = TimeScalesFactory.getBDT();
75 TimeScale gps = TimeScalesFactory.getGPS();
76 for (double dt = -10000; dt < 10000; dt += 123.456789) {
77 AbsoluteDate date = AbsoluteDate.J2000_EPOCH.shiftedBy(7 * Constants.JULIAN_YEAR + dt * Constants.JULIAN_DAY);
78 Assertions.assertEquals(gps.offsetFromTAI(date).toDouble() - 14, bdt.offsetFromTAI(date).toDouble(), 1.0e-15);
79 }
80 }
81
82 @Test
83 public void testSymmetry() {
84 TimeScale scale = TimeScalesFactory.getBDT();
85 for (double dt = -10000; dt < 10000; dt += 123.456789) {
86 AbsoluteDate date = AbsoluteDate.J2000_EPOCH.shiftedBy(dt * Constants.JULIAN_DAY);
87 double dt1 = scale.offsetFromTAI(date).toDouble();
88 DateTimeComponents components = date.getComponents(scale);
89 double dt2 = scale.offsetToTAI(components.getDate(), components.getTime()).toDouble();
90 Assertions.assertEquals( 0.0, dt1 + dt2, 1.0e-10);
91 }
92 }
93
94 @BeforeEach
95 public void setUp() {
96 Utils.setDataRoot("regular-data");
97 }
98
99 }