1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.forces.gravity;
18
19 import org.hipparchus.CalculusFieldElement;
20 import org.hipparchus.geometry.euclidean.threed.FieldVector3D;
21 import org.hipparchus.geometry.euclidean.threed.Vector3D;
22 import org.junit.jupiter.api.Assertions;
23 import org.junit.jupiter.api.Test;
24 import org.mockito.Mockito;
25 import org.orekit.bodies.CelestialBody;
26 import org.orekit.frames.Frame;
27 import org.orekit.propagation.FieldSpacecraftState;
28 import org.orekit.propagation.SpacecraftState;
29 import org.orekit.time.AbsoluteDate;
30 import org.orekit.time.FieldAbsoluteDate;
31 import org.orekit.utils.PVCoordinates;
32 import org.orekit.utils.TimeStampedPVCoordinates;
33
34 class AbstractBodyAttractionTest {
35
36 @Test
37 void testDependsOnPositionOnly() {
38
39 final AbstractBodyAttraction mockedAttraction = Mockito.mock(AbstractBodyAttraction.class);
40 Mockito.when(mockedAttraction.dependsOnPositionOnly()).thenCallRealMethod();
41
42 final boolean actualDependsOnPositionOnly = mockedAttraction.dependsOnPositionOnly();
43
44 Assertions.assertTrue(actualDependsOnPositionOnly);
45 }
46
47 @Test
48 void TestGetBodyName() {
49
50 final String expectedName = "Moon";
51 final CelestialBody mockedBody = Mockito.mock(CelestialBody.class);
52 Mockito.when(mockedBody.getName()).thenReturn(expectedName);
53 final TestBodyAttraction testBodyAttraction = new TestBodyAttraction(mockedBody);
54
55 final String actualName = testBodyAttraction.getBodyName();
56
57 Assertions.assertEquals(expectedName, actualName);
58 }
59
60 @Test
61 void testGetPV() {
62
63 final CelestialBody mockedBody = Mockito.mock(CelestialBody.class);
64 final AbsoluteDate date = AbsoluteDate.ARBITRARY_EPOCH;
65 final Frame mockedFrame = Mockito.mock(Frame.class);
66 final TimeStampedPVCoordinates expectedPV = Mockito.mock(TimeStampedPVCoordinates.class);
67 Mockito.when(mockedBody.getPVCoordinates(date, mockedFrame)).thenReturn(expectedPV);
68 final TestBodyAttraction testBodyAttraction = new TestBodyAttraction(mockedBody);
69
70 final PVCoordinates actualPV = testBodyAttraction.getBodyPVCoordinates(date, mockedFrame);
71
72 Assertions.assertEquals(expectedPV, actualPV);
73 }
74
75 @Test
76 void testGetPosition() {
77
78 final CelestialBody mockedBody = Mockito.mock(CelestialBody.class);
79 final AbsoluteDate date = AbsoluteDate.ARBITRARY_EPOCH;
80 final Frame mockedFrame = Mockito.mock(Frame.class);
81 final Vector3D expectedPosition = new Vector3D(1, 2, 3);
82 Mockito.when(mockedBody.getPosition(date, mockedFrame)).thenReturn(expectedPosition);
83 final TestBodyAttraction testBodyAttraction = new TestBodyAttraction(mockedBody);
84
85 final Vector3D actualPosition = testBodyAttraction.getBodyPosition(date, mockedFrame);
86
87 Assertions.assertEquals(expectedPosition, actualPosition);
88 }
89
90 @Test
91 void testGetFieldPosition() {
92
93 final CelestialBody mockedBody = Mockito.mock(CelestialBody.class);
94 final FieldAbsoluteDate<?> mockedDate = Mockito.mock(FieldAbsoluteDate.class);
95 final Frame mockedFrame = Mockito.mock(Frame.class);
96 final FieldVector3D expectedPosition = Mockito.mock(FieldVector3D.class);
97 Mockito.when(mockedBody.getPosition(mockedDate, mockedFrame)).thenReturn(expectedPosition);
98 final TestBodyAttraction testBodyAttraction = new TestBodyAttraction(mockedBody);
99
100 final FieldVector3D<?> actualPosition = testBodyAttraction.getBodyPosition(mockedDate, mockedFrame);
101
102 Assertions.assertEquals(expectedPosition, actualPosition);
103 }
104
105 private static class TestBodyAttraction extends AbstractBodyAttraction {
106
107 protected TestBodyAttraction(CelestialBody body) {
108 super(body, body.getName(), body.getGM());
109 }
110
111 @Override
112 public Vector3D acceleration(SpacecraftState s, double[] parameters) {
113 return null;
114 }
115
116 @Override
117 public <T extends CalculusFieldElement<T>> FieldVector3D<T> acceleration(FieldSpacecraftState<T> s, T[] parameters) {
118 return null;
119 }
120 }
121
122 }