1   package org.orekit.utils;
2   
3   import org.hipparchus.geometry.euclidean.threed.Vector3D;
4   import org.junit.jupiter.api.Test;
5   import org.orekit.frames.Frame;
6   import org.orekit.frames.FramesFactory;
7   import org.orekit.time.AbsoluteDate;
8   import org.orekit.time.TimeInterval;
9   
10  import static org.junit.jupiter.api.Assertions.assertEquals;
11  
12  class BoundedPVCoordinatesProviderTest {
13  
14      @Test
15      void testOf() {
16          // GIVEN
17          final TestProvider provider = new TestProvider();
18          final AbsoluteDate minDate = AbsoluteDate.J2000_EPOCH;
19          final AbsoluteDate maxDate = minDate.shiftedBy(1);
20          final TimeInterval interval = TimeInterval.of(minDate, maxDate);
21          // WHEN
22          final BoundedPVCoordinatesProvider boundedProvider = BoundedPVCoordinatesProvider.of(provider, interval);
23          // THEN
24          assertEquals(maxDate, boundedProvider.getMaxDate());
25          assertEquals(minDate, boundedProvider.getMinDate());
26          final Frame frame = FramesFactory.getGCRF();
27          assertEquals(provider.getPosition(minDate, frame), boundedProvider.getPosition(minDate, frame));
28          assertEquals(provider.getPVCoordinates(minDate, frame).getVelocity(),
29                  boundedProvider.getPVCoordinates(minDate, frame).getVelocity());
30      }
31  
32      private static class TestProvider implements PVCoordinatesProvider {
33          @Override
34          public TimeStampedPVCoordinates getPVCoordinates(AbsoluteDate date, Frame frame) {
35              return new TimeStampedPVCoordinates(date, new PVCoordinates(Vector3D.MINUS_I, Vector3D.MINUS_K));
36          }
37      }
38  }