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 FixedStepSelectorTest {
27
28 @Test
29 public void testNoAlign() {
30 final TimeScale utc = TimeScalesFactory.getUTC();
31 final DatesSelector selector = new FixedStepSelector(10.0, null);
32 final AbsoluteDate t0 = new AbsoluteDate("2003-02-25T00:00:27.0", utc);
33 final AbsoluteDate t1 = t0.shiftedBy(91);
34 final List<AbsoluteDate> list = selector.selectDates(t0, t1);
35 Assertions.assertEquals(10, 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( 57.0, list.get(3).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
40 Assertions.assertEquals( 67.0, list.get(4).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
41 Assertions.assertEquals( 77.0, list.get(5).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
42 Assertions.assertEquals( 87.0, list.get(6).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
43 Assertions.assertEquals( 97.0, list.get(7).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
44 Assertions.assertEquals(107.0, list.get(8).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
45 Assertions.assertEquals(117.0, list.get(9).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
46 }
47
48 @Test
49 public void testAlignUTCBeforeForward() {
50 final TimeScale utc = TimeScalesFactory.getUTC();
51 final DatesSelector selector = new FixedStepSelector(5.0, utc);
52 final AbsoluteDate t0 = new AbsoluteDate("2003-02-25T00:00:27.0", utc);
53 final AbsoluteDate t1 = t0.shiftedBy(17);
54 final List<AbsoluteDate> list = selector.selectDates(t0, t1);
55 Assertions.assertEquals(3, list.size());
56 Assertions.assertEquals( 30.0, list.get(0).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
57 Assertions.assertEquals( 35.0, list.get(1).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
58 Assertions.assertEquals( 40.0, list.get(2).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
59 }
60
61 @Test
62 public void testAlignUTCBeforeBackward() {
63 final TimeScale utc = TimeScalesFactory.getUTC();
64 final DatesSelector selector = new FixedStepSelector(5.0, utc);
65 final AbsoluteDate t0 = new AbsoluteDate("2003-02-25T00:00:27.0", utc);
66 final AbsoluteDate t1 = t0.shiftedBy(17);
67 final List<AbsoluteDate> list = selector.selectDates(t1, t0);
68 Assertions.assertEquals(3, list.size());
69 Assertions.assertEquals( 40.0, list.get(0).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
70 Assertions.assertEquals( 35.0, list.get(1).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
71 Assertions.assertEquals( 30.0, list.get(2).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
72 }
73
74 @Test
75 public void testAlignUTCAfterForward() {
76 final TimeScale utc = TimeScalesFactory.getUTC();
77 final DatesSelector selector = new FixedStepSelector(10.0, utc);
78 final AbsoluteDate t0 = new AbsoluteDate("2003-02-25T00:00:27.0", utc);
79 final AbsoluteDate t1 = t0.shiftedBy(2);
80 final AbsoluteDate t2 = t1.shiftedBy(89);
81 final List<AbsoluteDate> list1 = selector.selectDates(t0, t1);
82 Assertions.assertEquals(0, list1.size());
83 final List<AbsoluteDate> list2 = selector.selectDates(t1, t2);
84 Assertions.assertEquals(9, list2.size());
85 Assertions.assertEquals( 30.0, list2.get(0).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
86 Assertions.assertEquals( 40.0, list2.get(1).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
87 Assertions.assertEquals( 50.0, list2.get(2).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
88 Assertions.assertEquals( 60.0, list2.get(3).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
89 Assertions.assertEquals( 70.0, list2.get(4).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
90 Assertions.assertEquals( 80.0, list2.get(5).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
91 Assertions.assertEquals( 90.0, list2.get(6).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
92 Assertions.assertEquals(100.0, list2.get(7).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
93 Assertions.assertEquals(110.0, list2.get(8).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
94 }
95
96 @Test
97 public void testAlignUTCAfterBackward() {
98 final TimeScale utc = TimeScalesFactory.getUTC();
99 final DatesSelector selector = new FixedStepSelector(10.0, utc);
100 final AbsoluteDate t0 = new AbsoluteDate("2003-02-25T00:00:27.0", utc);
101 final AbsoluteDate t1 = t0.shiftedBy(2);
102 final AbsoluteDate t2 = t1.shiftedBy(89);
103 final List<AbsoluteDate> list1 = selector.selectDates(t2, t1);
104 Assertions.assertEquals(9, list1.size());
105 Assertions.assertEquals(110.0, list1.get(0).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
106 Assertions.assertEquals(100.0, list1.get(1).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
107 Assertions.assertEquals( 90.0, list1.get(2).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
108 Assertions.assertEquals( 80.0, list1.get(3).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
109 Assertions.assertEquals( 70.0, list1.get(4).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
110 Assertions.assertEquals( 60.0, list1.get(5).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
111 Assertions.assertEquals( 50.0, list1.get(6).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
112 Assertions.assertEquals( 40.0, list1.get(7).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
113 Assertions.assertEquals( 30.0, list1.get(8).getComponents(utc).getTime().getSecondsInLocalDay(), 1.0e-15);
114 final List<AbsoluteDate> list2 = selector.selectDates(t1, t0);
115 Assertions.assertEquals(0, list2.size());
116 }
117
118 @Test
119 public void testInterruptedStream() {
120 final TimeScale utc = TimeScalesFactory.getUTC();
121 final DatesSelector selector = new FixedStepSelector(10.0, null);
122 final AbsoluteDate t0 = new AbsoluteDate("2003-02-25T00:00:27.0", utc);
123 final AbsoluteDate t1 = t0.shiftedBy(91);
124 final AbsoluteDate t2 = t1.shiftedBy(30);
125 final List<AbsoluteDate> list1 = selector.selectDates(t0, t1);
126 Assertions.assertEquals(10, list1.size());
127 final List<AbsoluteDate> list2 = selector.selectDates(t1, t2);
128 Assertions.assertEquals(3, list2.size());
129 Assertions.assertEquals(10.0, list2.get(0).durationFrom(list1.get(list1.size() - 1)), 1.0e-15);
130 }
131
132 @Test
133 public void testResetStream() {
134 final TimeScale utc = TimeScalesFactory.getUTC();
135 final DatesSelector selector = new FixedStepSelector(10.0, null);
136 final AbsoluteDate t0 = new AbsoluteDate("2003-02-25T00:00:27.0", utc);
137 final AbsoluteDate t1 = t0.shiftedBy(91);
138 final AbsoluteDate t2 = t1.shiftedBy(30);
139 final AbsoluteDate t3 = t2.shiftedBy(15);
140 final List<AbsoluteDate> list1 = selector.selectDates(t0, t1);
141 Assertions.assertEquals(10, list1.size());
142 final List<AbsoluteDate> list2 = selector.selectDates(t2, t3);
143 Assertions.assertEquals(2, list2.size());
144 Assertions.assertEquals( 0.0, list2.get(0).durationFrom(t2), 1.0e-15);
145 Assertions.assertEquals(10.0, list2.get(1).durationFrom(t2), 1.0e-15);
146 }
147
148 @Test
149 public void testShortInterval() {
150 final TimeScale utc = TimeScalesFactory.getUTC();
151 final DatesSelector selector = new FixedStepSelector(10.0, null);
152 final AbsoluteDate t0 = new AbsoluteDate("2003-02-25T00:00:27.0", utc);
153 final AbsoluteDate t1 = t0.shiftedBy(91);
154 final AbsoluteDate t2 = t1.shiftedBy(8);
155 final List<AbsoluteDate> list1 = selector.selectDates(t0, t1);
156 Assertions.assertEquals(10, list1.size());
157 final List<AbsoluteDate> list2 = selector.selectDates(t1, t2);
158 Assertions.assertEquals(0, list2.size());
159 }
160
161 @BeforeEach
162 public void setUp() {
163 Utils.setDataRoot("regular-data");
164 }
165
166 }