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  
18  package org.orekit.errors;
19  
20  import java.util.ArrayList;
21  import java.util.List;
22  
23  import org.junit.jupiter.api.Assertions;
24  import org.junit.jupiter.api.Test;
25  import org.orekit.time.AbsoluteDate;
26  import org.orekit.utils.Constants;
27  import org.orekit.utils.ParameterDriver;
28  
29  /**
30   * Unit tests for {@link UnsupportedParameterException}.
31   *
32   * @since 12.0
33   * @author Maxime Journot
34   */
35  public class UnsupportedParameterExceptionTest {
36  
37      /** Check building message for empty parameter list. */
38      @Test
39      public void testNoParameter() {
40  
41          // Given empty parameter list
42          final List<ParameterDriver> drivers = new ArrayList<>();
43  
44          // When
45          final String paramName = "dummy-param";
46          final OrekitException exception = new UnsupportedParameterException(paramName, drivers);
47  
48          // Then
49          Assertions.assertEquals(paramName, exception.getParts()[0]);
50          Assertions.assertEquals(UnsupportedParameterException.NO_PARAMETER, exception.getParts()[1]);
51      }
52  
53      /** Check building message for one parameter list. */
54      @Test
55      public void testOneParameter() {
56  
57          // Given one parameter list
58          final List<ParameterDriver> drivers = new ArrayList<>();
59          final ParameterDriver param1 = new ParameterDriver("param-1", 0., 1., -1., 1.);
60          drivers.add(param1);
61  
62          // When
63          final String paramName = "dummy-param";
64          final OrekitException exception = new UnsupportedParameterException(paramName, drivers);
65  
66          // Then
67          Assertions.assertEquals(paramName, exception.getParts()[0]);
68          Assertions.assertEquals(param1.getName(), exception.getParts()[1]);
69      }
70  
71      /** Check building message for multiple parameters list. */
72      @Test
73      public void testMultipleParameters() {
74  
75          // Given multiple parameter list
76          final List<ParameterDriver> drivers = new ArrayList<>();
77          final ParameterDriver param1 = new ParameterDriver("param-1", 0., 1., -1., 1.);
78          final ParameterDriver param2 = new ParameterDriver("param-2", 0., 1., -1., 1.);
79          final ParameterDriver param3 = new ParameterDriver("param-3", 0., 1., -1., 1.);
80          // Add some time spans to param3 to check message
81          param3.addSpans(AbsoluteDate.ARBITRARY_EPOCH, AbsoluteDate.ARBITRARY_EPOCH.shiftedBy(Constants.JULIAN_DAY), 3600.);
82          drivers.add(param1);
83          drivers.add(param2);
84          drivers.add(param3);
85  
86  
87          // When
88          final String paramName = "dummy-param";
89          final OrekitException exception = new UnsupportedParameterException(paramName, drivers);
90  
91          // Then
92          final String supportedParameters = param1.getName() + UnsupportedParameterException.COMMA_SEP + 
93                          param2.getName() + UnsupportedParameterException.COMMA_SEP + param3.getName();
94          Assertions.assertEquals(paramName, exception.getParts()[0]);
95          Assertions.assertEquals(supportedParameters, exception.getParts()[1]);
96      }
97  }