1   /* Copyright 2002-2025 CS GROUP
2    * Licensed to CS GROUP (CS) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * CS licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *   http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.orekit.estimation.measurements.generation;
18  
19  import org.hipparchus.linear.MatrixUtils;
20  import org.hipparchus.linear.RealMatrix;
21  import org.hipparchus.random.CorrelatedRandomVectorGenerator;
22  import org.hipparchus.random.GaussianRandomGenerator;
23  import org.hipparchus.random.RandomGenerator;
24  import org.junit.jupiter.api.Test;
25  import org.orekit.estimation.measurements.GroundStation;
26  import org.orekit.estimation.measurements.ObservableSatellite;
27  import org.orekit.estimation.measurements.Range;
28  import org.orekit.estimation.measurements.modifiers.Bias;
29  
30  public class RangeBuilderTest extends AbstractGroundMeasurementBuilderTest<Range> {
31  
32      private static final double SIGMA = 10.0;
33      private static final double BIAS  =  3.0;
34  
35      protected MeasurementBuilder<Range> getBuilder(final RandomGenerator random,
36                                                     final GroundStation groundStation,
37                                                     final ObservableSatellite satellite) {
38          final RealMatrix covariance = MatrixUtils.createRealDiagonalMatrix(new double[] { SIGMA * SIGMA });
39          MeasurementBuilder<Range> rb =
40                          new RangeBuilder(random == null ? null : new CorrelatedRandomVectorGenerator(covariance,
41                                                                                                       1.0e-10,
42                                                                                                       new GaussianRandomGenerator(random)),
43                                           groundStation, true, SIGMA, 1.0, satellite);
44          rb.addModifier(new Bias<>(new String[] { "bias" },
45                          new double[] { BIAS },
46                          new double[] { 1.0 },
47                          new double[] { Double.NEGATIVE_INFINITY },
48                          new double[] { Double.POSITIVE_INFINITY }));
49          return rb;
50      }
51  
52      @Test
53      public void testForward() {
54          doTest(0x01e226dd859c2c9dl, 0.4, 0.9, 128, 2.7 * SIGMA);
55      }
56  
57      @Test
58      public void testBackward() {
59          doTest(0xd4e49e3716605903l, -0.2, -0.6, 100, 3.2 * SIGMA);
60      }
61  
62  }