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
24 import java.util.List;
25
26 public class BurstSelectorStepTest {
27
28 @Test
29 public void testNoAlign() {
30 final TimeScale utc = TimeScalesFactory.getUTC();
31 final DatesSelector selector = new BurstSelector(3, 10.0, 60.0, null);
32 final AbsoluteDate t0 = new AbsoluteDate("2003-02-25T00:00:27.0", utc);
33 final AbsoluteDate t1 = t0.shiftedBy(71);
34 final List<AbsoluteDate> list = selector.selectDates(t0, t1);
35 Assertions.assertEquals(5, list.size());
36 Assertions.assertEquals( 27.0, list.get(0).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
37 Assertions.assertEquals( 37.0, list.get(1).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
38 Assertions.assertEquals( 47.0, list.get(2).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
39 Assertions.assertEquals( 87.0, list.get(3).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
40 Assertions.assertEquals( 97.0, list.get(4).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
41 }
42
43 @Test
44 public void testAlignUTCBeforeForward() {
45 final TimeScale utc = TimeScalesFactory.getUTC();
46 final DatesSelector selector = new BurstSelector(2, 10.0, 30.0, utc);
47 final AbsoluteDate t0 = new AbsoluteDate("2003-02-25T00:00:27.0", utc);
48 final AbsoluteDate t1 = t0.shiftedBy(62);
49 final List<AbsoluteDate> list = selector.selectDates(t0, t1);
50 Assertions.assertEquals(4, list.size());
51 Assertions.assertEquals( 30.0, list.get(0).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
52 Assertions.assertEquals( 40.0, list.get(1).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
53 Assertions.assertEquals( 60.0, list.get(2).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
54 Assertions.assertEquals( 70.0, list.get(3).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
55 }
56
57 @Test
58 public void testAlignUTCBeforeBackward() {
59 final TimeScale utc = TimeScalesFactory.getUTC();
60 final DatesSelector selector = new BurstSelector(2, 10.0, 30.0, utc);
61 final AbsoluteDate t0 = new AbsoluteDate("2003-02-25T00:00:27.0", utc);
62 final AbsoluteDate t1 = t0.shiftedBy(62);
63 final List<AbsoluteDate> list = selector.selectDates(t1, t0);
64 Assertions.assertEquals(4, list.size());
65 Assertions.assertEquals( 70.0, list.get(0).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
66 Assertions.assertEquals( 60.0, list.get(1).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
67 Assertions.assertEquals( 40.0, list.get(2).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
68 Assertions.assertEquals( 30.0, list.get(3).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
69 }
70
71 @Test
72 public void testAlignUTCAfterForward() {
73 final TimeScale utc = TimeScalesFactory.getUTC();
74 final DatesSelector selector = new BurstSelector(3, 10.0, 60.0, utc);
75 final AbsoluteDate t0 = new AbsoluteDate("2003-02-25T00:00:27.0", utc);
76 final AbsoluteDate t1 = t0.shiftedBy(2);
77 final AbsoluteDate t2 = t1.shiftedBy(98);
78 final List<AbsoluteDate> list1 = selector.selectDates(t0, t1);
79 Assertions.assertEquals(0, list1.size());
80 final List<AbsoluteDate> list2 = selector.selectDates(t1, t2);
81 Assertions.assertEquals(4, list2.size());
82 Assertions.assertEquals( 60.0, list2.get(0).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
83 Assertions.assertEquals( 70.0, list2.get(1).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
84 Assertions.assertEquals( 80.0, list2.get(2).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
85 Assertions.assertEquals(120.0, list2.get(3).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
86 }
87
88 @Test
89 public void testAlignUTCAfterBackward() {
90 final TimeScale utc = TimeScalesFactory.getUTC();
91 final DatesSelector selector = new BurstSelector(3, 10.0, 60.0, utc);
92 final AbsoluteDate t0 = new AbsoluteDate("2003-02-25T00:00:27.0", utc);
93 final AbsoluteDate t1 = t0.shiftedBy(2);
94 final AbsoluteDate t2 = t1.shiftedBy(98);
95 final List<AbsoluteDate> list1 = selector.selectDates(t2, t1);
96 Assertions.assertEquals(4, list1.size());
97 Assertions.assertEquals(120.0, list1.get(0).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
98 Assertions.assertEquals( 80.0, list1.get(1).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
99 Assertions.assertEquals( 70.0, list1.get(2).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
100 Assertions.assertEquals( 60.0, list1.get(3).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
101 final List<AbsoluteDate> list2 = selector.selectDates(t1, t0);
102 Assertions.assertEquals(0, list2.size());
103 }
104
105 @Test
106 public void testInterruptedStream() {
107 final TimeScale utc = TimeScalesFactory.getUTC();
108 final DatesSelector selector = new BurstSelector(3, 10.0, 60.0, null);
109 final AbsoluteDate t0 = new AbsoluteDate("2003-02-25T00:00:27.0", utc);
110 final AbsoluteDate t1 = t0.shiftedBy(71);
111 final AbsoluteDate t2 = t1.shiftedBy(30);
112 final List<AbsoluteDate> list1 = selector.selectDates(t0, t1);
113 Assertions.assertEquals(5, list1.size());
114 final List<AbsoluteDate> list2 = selector.selectDates(t1, t2);
115 Assertions.assertEquals(1, list2.size());
116 Assertions.assertEquals(10.0, list2.get(0).durationFrom(list1.get(list1.size() - 1)), 1.0e-15);
117 }
118
119 @Test
120 public void testMissedHighRateNoReset() {
121 final TimeScale utc = TimeScalesFactory.getUTC();
122 final DatesSelector selector = new BurstSelector(3, 10.0, 60.0, null);
123 final AbsoluteDate t0 = new AbsoluteDate("2003-02-25T00:00:27.0", utc);
124 final AbsoluteDate t1 = t0.shiftedBy(71);
125 final AbsoluteDate t2 = t1.shiftedBy(30);
126 final AbsoluteDate t3 = t2.shiftedBy(19);
127 final List<AbsoluteDate> list1 = selector.selectDates(t0, t1);
128 Assertions.assertEquals(5, list1.size());
129 final List<AbsoluteDate> list2 = selector.selectDates(t2, t3);
130 Assertions.assertEquals(1, list2.size());
131 Assertions.assertEquals(50.0, list2.get(0).durationFrom(list1.get(list1.size() - 1)), 1.0e-15);
132 }
133
134 @Test
135 public void testResetStream() {
136 final TimeScale utc = TimeScalesFactory.getUTC();
137 final DatesSelector selector = new BurstSelector(3, 10.0, 60.0, null);
138 final AbsoluteDate t0 = new AbsoluteDate("2003-02-25T00:00:27.0", utc);
139 final AbsoluteDate t1 = t0.shiftedBy(71);
140 final AbsoluteDate t2 = t1.shiftedBy(50);
141 final AbsoluteDate t3 = t2.shiftedBy(15);
142 final List<AbsoluteDate> list1 = selector.selectDates(t0, t1);
143 Assertions.assertEquals(5, list1.size());
144 final List<AbsoluteDate> list2 = selector.selectDates(t2, t3);
145 Assertions.assertEquals(2, list2.size());
146 Assertions.assertEquals( 0.0, list2.get(0).durationFrom(t2), 1.0e-15);
147 Assertions.assertEquals(10.0, list2.get(1).durationFrom(t2), 1.0e-15);
148 }
149
150 @Test
151 public void testShortInterval() {
152 final TimeScale utc = TimeScalesFactory.getUTC();
153 final DatesSelector selector = new BurstSelector(3, 10.0, 60.0, null);
154 final AbsoluteDate t0 = new AbsoluteDate("2003-02-25T00:00:27.0", utc);
155 final AbsoluteDate t1 = t0.shiftedBy(71);
156 final AbsoluteDate t2 = t1.shiftedBy(8);
157 final List<AbsoluteDate> list1 = selector.selectDates(t0, t1);
158 Assertions.assertEquals(5, list1.size());
159 final List<AbsoluteDate> list2 = selector.selectDates(t1, t2);
160 Assertions.assertEquals(0, list2.size());
161 }
162
163 @Test
164 public void testStartMidBurstForward() {
165 final TimeScale utc = TimeScalesFactory.getUTC();
166 final DatesSelector selector = new BurstSelector(3, 10.0, 60.0, utc);
167 final AbsoluteDate t0 = new AbsoluteDate("2003-02-25T00:00:17.0", utc);
168 final AbsoluteDate t1 = t0.shiftedBy(118);
169 final List<AbsoluteDate> list1 = selector.selectDates(t0, t1);
170 Assertions.assertEquals(6, list1.size());
171 Assertions.assertEquals( 20.0, list1.get(0).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
172 Assertions.assertEquals( 60.0, list1.get(1).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
173 Assertions.assertEquals( 70.0, list1.get(2).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
174 Assertions.assertEquals( 80.0, list1.get(3).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
175 Assertions.assertEquals(120.0, list1.get(4).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
176 Assertions.assertEquals(130.0, list1.get(5).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
177 }
178
179 @Test
180 public void testStartMidBurstBackward() {
181 final TimeScale utc = TimeScalesFactory.getUTC();
182 final DatesSelector selector = new BurstSelector(3, 10.0, 60.0, utc);
183 final AbsoluteDate t0 = new AbsoluteDate("2003-02-25T00:00:17.0", utc);
184 final AbsoluteDate t1 = t0.shiftedBy(118);
185 final List<AbsoluteDate> list1 = selector.selectDates(t1, t0);
186 Assertions.assertEquals(6, list1.size());
187 Assertions.assertEquals(130.0, list1.get(0).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
188 Assertions.assertEquals(120.0, list1.get(1).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
189 Assertions.assertEquals( 80.0, list1.get(2).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
190 Assertions.assertEquals( 70.0, list1.get(3).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
191 Assertions.assertEquals( 60.0, list1.get(4).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
192 Assertions.assertEquals( 20.0, list1.get(5).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
193 }
194
195 @BeforeEach
196 public void setUp() {
197 Utils.setDataRoot("regular-data");
198 }
199
200 }