1 package org.orekit.utils;
2
3 import org.hipparchus.geometry.euclidean.threed.Vector3D;
4 import org.junit.jupiter.api.BeforeEach;
5 import org.junit.jupiter.api.Test;
6 import org.junit.jupiter.params.ParameterizedTest;
7 import org.junit.jupiter.params.provider.EnumSource;
8 import org.orekit.Utils;
9 import org.orekit.frames.Frame;
10 import org.orekit.frames.FramesFactory;
11 import org.orekit.frames.Predefined;
12 import org.orekit.time.AbsoluteDate;
13
14 import static org.junit.jupiter.api.Assertions.*;
15
16 class ShiftablePVCoordinatesHolderTest {
17
18 private static final TimeStampedPVCoordinates PV = new TimeStampedPVCoordinates(AbsoluteDate.ARBITRARY_EPOCH,
19 Vector3D.MINUS_I, Vector3D.MINUS_K, Vector3D.MINUS_J);
20
21 @BeforeEach
22 void setUp() {
23 Utils.setDataRoot("regular-data:potential");
24 }
25
26 @ParameterizedTest
27 @EnumSource(Predefined.class)
28 void testGetPosition(final Predefined predefined) {
29
30 final TestShiftablePVCoordinatesHolder testShiftablePVCoordinatesHolder = new TestShiftablePVCoordinatesHolder(PV,
31 FramesFactory.getEME2000());
32 final AbsoluteDate shiftedDate = PV.getDate().shiftedBy(1);
33 final Frame frame = FramesFactory.getFrame(predefined);
34
35 final Vector3D position = testShiftablePVCoordinatesHolder.getPosition(shiftedDate, frame);
36
37 final PVCoordinates expected = testShiftablePVCoordinatesHolder.getPVCoordinates(shiftedDate, frame);
38 assertEquals(expected.getPosition(), position);
39 }
40
41 @ParameterizedTest
42 @EnumSource(Predefined.class)
43 void testGetVelocity(final Predefined predefined) {
44
45 final TestShiftablePVCoordinatesHolder testShiftablePVCoordinatesHolder = new TestShiftablePVCoordinatesHolder(PV,
46 FramesFactory.getEME2000());
47 final AbsoluteDate shiftedDate = PV.getDate().shiftedBy(1);
48 final Frame frame = FramesFactory.getFrame(predefined);
49
50 final Vector3D velocity = testShiftablePVCoordinatesHolder.getVelocity(shiftedDate, frame);
51
52 final PVCoordinates expected = testShiftablePVCoordinatesHolder.getPVCoordinates(shiftedDate, frame);
53 assertEquals(expected.getVelocity(), velocity);
54 }
55
56 @Test
57 void testGetterVelocity() {
58
59 final TestShiftablePVCoordinatesHolder testShiftablePVCoordinatesHolder = new TestShiftablePVCoordinatesHolder(PV,
60 FramesFactory.getEME2000());
61
62 final Vector3D velocity = testShiftablePVCoordinatesHolder.getVelocity();
63
64 assertEquals(PV.getVelocity(), velocity);
65 }
66
67 private static class TestShiftablePVCoordinatesHolder implements ShiftablePVCoordinatesHolder<TestShiftablePVCoordinatesHolder> {
68
69 private final TimeStampedPVCoordinates timeStampedPVCoordinates;
70 private final Frame frame;
71
72 TestShiftablePVCoordinatesHolder(final TimeStampedPVCoordinates timeStampedPVCoordinates,
73 final Frame frame) {
74 this.timeStampedPVCoordinates = timeStampedPVCoordinates;
75 this.frame = frame;
76 }
77
78 @Override
79 public TimeStampedPVCoordinates getPVCoordinates() {
80 return timeStampedPVCoordinates;
81 }
82
83 @Override
84 public Frame getFrame() {
85 return frame;
86 }
87
88 @Override
89 public TestShiftablePVCoordinatesHolder shiftedBy(double dt) {
90 return new TestShiftablePVCoordinatesHolder(new TimeStampedPVCoordinates(getDate().shiftedBy(dt),
91 timeStampedPVCoordinates.getPosition(), timeStampedPVCoordinates.getVelocity(),
92 timeStampedPVCoordinates.getAcceleration()), getFrame());
93 }
94
95 @Override
96 public AbsoluteDate getDate() {
97 return timeStampedPVCoordinates.getDate();
98 }
99 }
100 }