1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.estimation.measurements;
18
19 import org.hipparchus.geometry.euclidean.threed.Vector3D;
20 import org.junit.jupiter.api.Assertions;
21 import org.junit.jupiter.api.Test;
22 import org.mockito.Mockito;
23 import org.orekit.propagation.SpacecraftState;
24 import org.orekit.time.AbsoluteDate;
25 import org.orekit.utils.TimeStampedPVCoordinates;
26
27 import java.util.ArrayList;
28 import java.util.List;
29
30 class AbstractMeasurementTest {
31
32 @Test
33 void testTheoreticalEvaluationWithoutDerivatives() {
34
35 final ObservableSatellite satellite = new ObservableSatellite(0);
36 final List<ObservableSatellite> satellites = new ArrayList<>();
37 satellites.add(satellite);
38 final double mass = 1.;
39 final TestMeasurementModel measurement = new TestMeasurementModel(AbsoluteDate.ARBITRARY_EPOCH, mass,
40 satellites);
41 final int iteration = 2;
42 final int evaluation = 1;
43 final SpacecraftState mockedState = Mockito.mock(SpacecraftState.class);
44 Mockito.when(mockedState.getDate()).thenReturn(measurement.getDate());
45 Mockito.when(mockedState.getMass()).thenReturn(mass);
46 Mockito.when(mockedState.getPosition()).thenReturn(Vector3D.ZERO);
47
48 final EstimatedMeasurementBase<TestMeasurementModel> measurementBase = measurement.theoreticalEvaluationWithoutDerivatives(iteration, evaluation, new SpacecraftState[] {mockedState});
49
50 final EstimatedMeasurement<TestMeasurementModel> estimatedMeasurement = measurement.theoreticalEvaluation(iteration, evaluation, new SpacecraftState[] {mockedState});
51 Assertions.assertArrayEquals(estimatedMeasurement.getObservedValue(), measurementBase.getObservedValue());
52 Assertions.assertArrayEquals(estimatedMeasurement.getEstimatedValue(), measurementBase.getEstimatedValue());
53 Assertions.assertEquals(estimatedMeasurement.getStatus(), measurementBase.getStatus());
54 Assertions.assertEquals(estimatedMeasurement.getDate(), measurementBase.getDate());
55 Assertions.assertEquals(estimatedMeasurement.getIteration(), measurementBase.getIteration());
56 Assertions.assertEquals(estimatedMeasurement.getStates()[0].getPosition(),
57 measurementBase.getStates()[0].getPosition());
58 }
59
60 private static class TestMeasurementModel extends AbstractMeasurement<TestMeasurementModel> {
61
62 TestMeasurementModel(AbsoluteDate date, double observed, List<ObservableSatellite> satellites) {
63 super(date, observed, 1., 1., satellites);
64 }
65
66 @Override
67 protected EstimatedMeasurement<TestMeasurementModel> theoreticalEvaluation(int iteration, int evaluation, SpacecraftState[] states) {
68 final ObservableSatellite satellite = new ObservableSatellite(0);
69 final List<ObservableSatellite> satellites = new ArrayList<>();
70 satellites.add(satellite);
71 final TestMeasurementModel testMeasurement = new TestMeasurementModel(states[0].getDate(), states[0].getMass(),
72 satellites);
73 final EstimatedMeasurement<TestMeasurementModel> measurement = new EstimatedMeasurement<>(testMeasurement,
74 iteration, evaluation, states, new TimeStampedPVCoordinates[] {states[0].getPVCoordinates()});
75 measurement.setEstimatedValue(testMeasurement.getObservedValue());
76 return measurement;
77 }
78 }
79 }