1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.time;
18
19
20
21 import org.junit.Assert;
22 import org.junit.Before;
23 import org.junit.Test;
24 import org.orekit.Utils;
25 import org.orekit.utils.Constants;
26
27 public class GPSScaleTest {
28
29 @Test
30 public void testT0() {
31 TimeScale scale = TimeScalesFactory.getGPS();
32 Assert.assertEquals("GPS", scale.toString());
33 AbsoluteDate t0 =
34 new AbsoluteDate(new DateComponents(1980, 1, 6), TimeComponents.H00, scale);
35 Assert.assertEquals(AbsoluteDate.GPS_EPOCH, t0);
36 }
37
38 @Test
39 public void testArbitrary() {
40 AbsoluteDate tGPS =
41 new AbsoluteDate(new DateComponents(1999, 3, 4), TimeComponents.H00, TimeScalesFactory.getGPS());
42 AbsoluteDate tUTC =
43 new AbsoluteDate(new DateComponents(1999, 3, 3), new TimeComponents(23, 59, 47),
44 TimeScalesFactory.getUTC());
45 Assert.assertEquals(tUTC, tGPS);
46 }
47
48 @Test
49 public void testConstant() {
50 TimeScale scale = TimeScalesFactory.getGPS();
51 double reference = scale.offsetFromTAI(AbsoluteDate.J2000_EPOCH);
52 for (double dt = -10000; dt < 10000; dt += 123.456789) {
53 AbsoluteDate date = AbsoluteDate.J2000_EPOCH.shiftedBy(dt * Constants.JULIAN_DAY);
54 Assert.assertEquals(reference, scale.offsetFromTAI(date), 1.0e-15);
55 }
56 }
57
58 @Test
59 public void testSymmetry() {
60 TimeScale scale = TimeScalesFactory.getGPS();
61 for (double dt = -10000; dt < 10000; dt += 123.456789) {
62 AbsoluteDate date = AbsoluteDate.J2000_EPOCH.shiftedBy(dt * Constants.JULIAN_DAY);
63 double dt1 = scale.offsetFromTAI(date);
64 DateTimeComponents components = date.getComponents(scale);
65 double dt2 = scale.offsetToTAI(components.getDate(), components.getTime());
66 Assert.assertEquals( 0.0, dt1 + dt2, 1.0e-10);
67 }
68 }
69
70 @Test
71 public void testDuringLeap() {
72 final TimeScale utc = TimeScalesFactory.getUTC();
73 final TimeScale scale = TimeScalesFactory.getGPS();
74 final AbsoluteDate before = new AbsoluteDate(new DateComponents(1983, 06, 30),
75 new TimeComponents(23, 59, 59),
76 utc);
77 final AbsoluteDate during = before.shiftedBy(1.25);
78 Assert.assertEquals(61, utc.minuteDuration(during));
79 Assert.assertEquals(1.0, utc.getLeap(during), 1.0e-10);
80 Assert.assertEquals(60, scale.minuteDuration(during));
81 Assert.assertEquals(0.0, scale.getLeap(during), 1.0e-10);
82 }
83
84 @Before
85 public void setUp() {
86 Utils.setDataRoot("regular-data");
87 }
88
89 }