1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.models.earth.atmosphere;
18
19 import org.hipparchus.CalculusFieldElement;
20 import org.hipparchus.complex.Complex;
21 import org.hipparchus.complex.ComplexField;
22 import org.hipparchus.geometry.euclidean.threed.FieldVector3D;
23 import org.hipparchus.geometry.euclidean.threed.Vector3D;
24 import org.junit.jupiter.api.Assertions;
25 import org.junit.jupiter.api.Test;
26 import org.mockito.Mockito;
27 import org.orekit.frames.Frame;
28 import org.orekit.time.AbsoluteDate;
29 import org.orekit.time.FieldAbsoluteDate;
30 import org.orekit.utils.ExtendedPositionProvider;
31
32 class AbstractSunInfluencedAtmosphereTest {
33
34 @Test
35 void testGetSunPosition() {
36
37 final ExtendedPositionProvider provider = new TestProvider();
38 final TestAtmosphere testAtmosphere = new TestAtmosphere(provider);
39 final Frame mockedFrame = Mockito.mock(Frame.class);
40 final AbsoluteDate date = AbsoluteDate.ARBITRARY_EPOCH;
41 final FieldAbsoluteDate<Complex> fieldDate = new FieldAbsoluteDate<>(ComplexField.getInstance(), date).shiftedBy(Complex.I);
42
43 final FieldVector3D<Complex> fieldSunPosition = testAtmosphere.getSunPosition(fieldDate, mockedFrame);
44
45 final Vector3D sunPosition = testAtmosphere.getSunPosition(date, mockedFrame);
46 Assertions.assertEquals(sunPosition, fieldSunPosition.toVector3D());
47 Assertions.assertNotEquals(0., fieldSunPosition.getX().getImaginary());
48 }
49
50 @Test
51 void testGetSun() {
52
53 final ExtendedPositionProvider mockedProvider = Mockito.mock(ExtendedPositionProvider.class);
54 final TestAtmosphere testAtmosphere = new TestAtmosphere(mockedProvider);
55
56 final ExtendedPositionProvider sun = testAtmosphere.getSun();
57
58 Assertions.assertEquals(mockedProvider, sun);
59 }
60
61 private static class TestProvider implements ExtendedPositionProvider {
62
63 @Override
64 public <T extends CalculusFieldElement<T>> FieldVector3D<T> getPosition(FieldAbsoluteDate<T> date, Frame frame) {
65 final T zero = date.getField().getZero();
66 return new FieldVector3D<>(date.durationFrom(AbsoluteDate.ARBITRARY_EPOCH), zero, zero);
67 }
68 }
69
70 private static class TestAtmosphere extends AbstractSunInfluencedAtmosphere {
71
72 public TestAtmosphere(final ExtendedPositionProvider provider) {
73 super(provider);
74 }
75
76 @Override
77 public Frame getFrame() {
78 return null;
79 }
80
81 @Override
82 public double getDensity(AbsoluteDate date, Vector3D position, Frame frame) {
83 return 0;
84 }
85
86 @Override
87 public <T extends CalculusFieldElement<T>> T getDensity(FieldAbsoluteDate<T> date, FieldVector3D<T> position, Frame frame) {
88 return null;
89 }
90 }
91 }