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.Test;
23 import org.orekit.Utils;
24 import org.orekit.errors.OrekitException;
25 import org.orekit.errors.OrekitMessages;
26
27 public class TAIUTCDatAFilesLoaderTest {
28
29 @Test
30 public void testRegularFile() {
31
32 Utils.setDataRoot("USNO");
33
34
35 checkOffset(1950, 1, 1, 0);
36
37
38 checkOffset(1961, 1, 2, -(1.422818 + 1 * 0.001296));
39 checkOffset(1961, 8, 2, -(1.372818 + 213 * 0.001296));
40 checkOffset(1962, 1, 2, -(1.845858 + 1 * 0.0011232));
41 checkOffset(1963, 11, 2, -(1.945858 + 670 * 0.0011232));
42 checkOffset(1964, 1, 2, -(3.240130 - 365 * 0.001296));
43 checkOffset(1964, 4, 2, -(3.340130 - 274 * 0.001296));
44 checkOffset(1964, 9, 2, -(3.440130 - 121 * 0.001296));
45 checkOffset(1965, 1, 2, -(3.540130 + 1 * 0.001296));
46 checkOffset(1965, 3, 2, -(3.640130 + 60 * 0.001296));
47 checkOffset(1965, 7, 2, -(3.740130 + 182 * 0.001296));
48 checkOffset(1965, 9, 2, -(3.840130 + 244 * 0.001296));
49 checkOffset(1966, 1, 2, -(4.313170 + 1 * 0.002592));
50 checkOffset(1968, 2, 2, -(4.213170 + 762 * 0.002592));
51
52
53 checkOffset(1972, 3, 5, -10);
54 checkOffset(1972, 7, 14, -11);
55 checkOffset(1979, 12, 31, -18);
56 checkOffset(1980, 1, 22, -19);
57 checkOffset(2006, 7, 7, -33);
58 checkOffset(2010, 7, 7, -34);
59 checkOffset(2012, 7, 7, -35);
60 checkOffset(2015, 7, 7, -36);
61
62 }
63
64 @Test
65 public void testOnlyPre1972Data() {
66
67 Utils.setDataRoot("USNO");
68 TimeScalesFactory.addUTCTAIOffsetsLoader(new TAIUTCDatFilesLoader("tai-utc-only-pre-1972-data.dat"));
69
70
71 checkOffset(1961, 1, 2, -(1.422818 + 1 * 0.001296));
72 checkOffset(1961, 8, 2, -(1.372818 + 213 * 0.001296));
73 checkOffset(1962, 1, 2, -(1.845858 + 1 * 0.0011232));
74 checkOffset(1963, 11, 2, -(1.945858 + 670 * 0.0011232));
75 checkOffset(1964, 1, 2, -(3.240130 - 365 * 0.001296));
76 checkOffset(1964, 4, 2, -(3.340130 - 274 * 0.001296));
77 checkOffset(1964, 9, 2, -(3.440130 - 121 * 0.001296));
78 checkOffset(1965, 1, 2, -(3.540130 + 1 * 0.001296));
79 checkOffset(1965, 3, 2, -(3.640130 + 60 * 0.001296));
80 checkOffset(1965, 7, 2, -(3.740130 + 182 * 0.001296));
81 checkOffset(1965, 9, 2, -(3.840130 + 244 * 0.001296));
82 checkOffset(1966, 1, 2, -(4.313170 + 1 * 0.002592));
83 checkOffset(1968, 2, 2, -(4.213170 + 762 * 0.002592));
84
85
86 checkOffset(1972, 3, 5, -(4.213170 + 2255 * 0.002592));
87 checkOffset(1972, 7, 14, -(4.213170 + 2386 * 0.002592));
88 checkOffset(1979, 12, 31, -(4.213170 + 5112 * 0.002592));
89 checkOffset(1980, 1, 22, -(4.213170 + 5134 * 0.002592));
90 checkOffset(2006, 7, 7, -(4.213170 + 14797 * 0.002592));
91 checkOffset(2010, 7, 7, -(4.213170 + 16258 * 0.002592));
92 checkOffset(2012, 7, 7, -(4.213170 + 16989 * 0.002592));
93 checkOffset(2015, 7, 7, -(4.213170 + 18084 * 0.002592));
94
95 }
96
97 @Test
98 public void testModifiedLinearData() {
99
100 Utils.setDataRoot("USNO");
101 TimeScalesFactory.addUTCTAIOffsetsLoader(new TAIUTCDatFilesLoader("tai-utc-modified-linear.dat"));
102
103
104 checkOffset(1961, 1, 2, -(1.4000000 + 1 * 0.001000));
105 checkOffset(1961, 8, 2, -(1.5000000 + 213 * 0.001100));
106 checkOffset(1962, 1, 2, -(1.6000000 + 1 * 0.001200));
107 checkOffset(1963, 11, 2, -(1.7000000 + 670 * 0.001300));
108 checkOffset(1964, 1, 2, -(1.8000000 - 365 * 0.001400));
109 checkOffset(1964, 4, 2, -(1.9000000 - 274 * 0.001500));
110 checkOffset(1964, 9, 2, -(2.0000000 - 121 * 0.001600));
111 checkOffset(1965, 1, 2, -(2.1000000 + 1 * 0.001700));
112 checkOffset(1965, 3, 2, -(2.2000000 + 60 * 0.001800));
113 checkOffset(1965, 7, 2, -(2.3000000 + 182 * 0.001900));
114 checkOffset(1965, 9, 2, -(2.4000000 + 244 * 0.002000));
115 checkOffset(1966, 1, 2, -(2.5000000 + 1 * 0.002100));
116 checkOffset(1968, 2, 2, -(2.6000000 + 762 * 0.002200));
117
118
119 checkOffset(1972, 3, 5, -(2.6000000 + 2255 * 0.002200));
120 checkOffset(1972, 7, 14, -(2.6000000 + 2386 * 0.002200));
121 checkOffset(1979, 12, 31, -(2.6000000 + 5112 * 0.002200));
122 checkOffset(1980, 1, 22, -(2.6000000 + 5134 * 0.002200));
123 checkOffset(2006, 7, 7, -(2.6000000 + 14797 * 0.002200));
124 checkOffset(2010, 7, 7, -(2.6000000 + 16258 * 0.002200));
125 checkOffset(2012, 7, 7, -(2.6000000 + 16989 * 0.002200));
126 checkOffset(2015, 7, 7, -(2.6000000 + 18084 * 0.002200));
127
128 }
129
130 @Test
131 public void testInconsistentDate() {
132 checkException("tai-utc-inconsistent-date.dat",
133 OrekitMessages.INCONSISTENT_DATES_IN_IERS_FILE);
134 }
135
136 @Test
137 public void testNonChronological() {
138 checkException("tai-utc-non-chronological.dat",
139 OrekitMessages.NON_CHRONOLOGICAL_DATES_IN_FILE);
140 }
141
142 @Test
143 public void testFormatError() {
144 checkException("tai-utc-format-error.dat",
145 OrekitMessages.UNABLE_TO_PARSE_LINE_IN_FILE);
146 }
147
148 private void checkOffset(int year, int month, int day, double offset) {
149 TimeScale utc = TimeScalesFactory.getUTC();
150 AbsoluteDate date = new AbsoluteDate(year, month, day, utc);
151 Assert.assertEquals(offset, utc.offsetFromTAI(date), 1.0e-10);
152 }
153
154 private void checkException(String name, OrekitMessages message) {
155 Utils.setDataRoot("USNO");
156 TimeScalesFactory.addUTCTAIOffsetsLoader(new TAIUTCDatFilesLoader(name));
157 try {
158 TimeScalesFactory.getUTC();
159 Assert.fail("an exception should have been thrown");
160 } catch (OrekitException oe) {
161 Assert.assertEquals(message, oe.getSpecifier());
162 }
163 }
164
165 }