1   /* Copyright 2022-2025 Romain Serra
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.frames;
18  
19  
20  import org.hipparchus.complex.Complex;
21  import org.hipparchus.complex.ComplexField;
22  import org.junit.jupiter.api.Assertions;
23  import org.junit.jupiter.api.Test;
24  import org.mockito.Mockito;
25  import org.orekit.time.AbsoluteDate;
26  import org.orekit.time.FieldAbsoluteDate;
27  
28  class VersionedITRFProviderTest {
29  
30      @Test
31      void testGetKinematicTransformNullConverter() {
32          // GIVEN
33          final ITRFVersion itrfVersion = ITRFVersion.ITRF_2020;
34          final ITRFProvider mockedRawProvider = Mockito.mock(ITRFProvider.class);
35          final AbsoluteDate date = AbsoluteDate.ARBITRARY_EPOCH;
36          final KinematicTransform expectedTransform = Mockito.mock(KinematicTransform.class);
37          Mockito.when(mockedRawProvider.getKinematicTransform(date)).thenReturn(expectedTransform);
38          final EOPHistory mockedHistory = Mockito.mock(EOPHistory.class);
39          Mockito.when(mockedHistory.getITRFVersion(date)).thenReturn(itrfVersion);
40          Mockito.when(mockedRawProvider.getEOPHistory()).thenReturn(mockedHistory);
41          final VersionedITRFProvider versionedITRFProvider = new VersionedITRFProvider(itrfVersion, mockedRawProvider,
42                  null);
43          // WHEN
44          final KinematicTransform actualTransform = versionedITRFProvider.getKinematicTransform(date);
45          // THEN
46          Assertions.assertEquals(expectedTransform, actualTransform);
47      }
48  
49      @Test
50      @SuppressWarnings("unchecked")
51      void testFieldGetKinematicTransformNullConverter() {
52          // GIVEN
53          final ITRFVersion itrfVersion = ITRFVersion.ITRF_2020;
54          final ITRFProvider mockedRawProvider = Mockito.mock(ITRFProvider.class);
55          final ComplexField field = ComplexField.getInstance();
56          final FieldAbsoluteDate<Complex> date = new FieldAbsoluteDate<>(field, AbsoluteDate.ARBITRARY_EPOCH);
57          final FieldKinematicTransform<Complex> expectedTransform = Mockito.mock(FieldKinematicTransform.class);
58          Mockito.when(mockedRawProvider.getKinematicTransform(date)).thenReturn(expectedTransform);
59          final EOPHistory mockedHistory = Mockito.mock(EOPHistory.class);
60          Mockito.when(mockedHistory.getITRFVersion(date.toAbsoluteDate())).thenReturn(itrfVersion);
61          Mockito.when(mockedRawProvider.getEOPHistory()).thenReturn(mockedHistory);
62          final VersionedITRFProvider versionedITRFProvider = new VersionedITRFProvider(itrfVersion, mockedRawProvider,
63                  null);
64          // WHEN
65          final FieldKinematicTransform<Complex> actualTransform = versionedITRFProvider.getKinematicTransform(date);
66          // THEN
67          Assertions.assertEquals(expectedTransform, actualTransform);
68      }
69  
70      @Test
71      void testGetStaticTransformNullConverter() {
72          // GIVEN
73          final ITRFVersion itrfVersion = ITRFVersion.ITRF_2020;
74          final ITRFProvider mockedRawProvider = Mockito.mock(ITRFProvider.class);
75          final AbsoluteDate date = AbsoluteDate.ARBITRARY_EPOCH;
76          final StaticTransform expectedTransform = Mockito.mock(StaticTransform.class);
77          Mockito.when(mockedRawProvider.getStaticTransform(date)).thenReturn(expectedTransform);
78          final EOPHistory mockedHistory = Mockito.mock(EOPHistory.class);
79          Mockito.when(mockedHistory.getITRFVersion(date)).thenReturn(itrfVersion);
80          Mockito.when(mockedRawProvider.getEOPHistory()).thenReturn(mockedHistory);
81          final VersionedITRFProvider versionedITRFProvider = new VersionedITRFProvider(itrfVersion, mockedRawProvider,
82                  null);
83          // WHEN
84          final StaticTransform actualTransform = versionedITRFProvider.getStaticTransform(date);
85          // THEN
86          Assertions.assertEquals(expectedTransform, actualTransform);
87      }
88  
89      @Test
90      @SuppressWarnings("unchecked")
91      void testFieldGetStaticTransformNullConverter() {
92          // GIVEN
93          final ITRFVersion itrfVersion = ITRFVersion.ITRF_2020;
94          final ITRFProvider mockedRawProvider = Mockito.mock(ITRFProvider.class);
95          final ComplexField field = ComplexField.getInstance();
96          final FieldAbsoluteDate<Complex> date = new FieldAbsoluteDate<>(field, AbsoluteDate.ARBITRARY_EPOCH);
97          final FieldStaticTransform<Complex> expectedTransform = Mockito.mock(FieldStaticTransform.class);
98          Mockito.when(mockedRawProvider.getStaticTransform(date)).thenReturn(expectedTransform);
99          final EOPHistory mockedHistory = Mockito.mock(EOPHistory.class);
100         Mockito.when(mockedHistory.getITRFVersion(date.toAbsoluteDate())).thenReturn(itrfVersion);
101         Mockito.when(mockedRawProvider.getEOPHistory()).thenReturn(mockedHistory);
102         final VersionedITRFProvider versionedITRFProvider = new VersionedITRFProvider(itrfVersion, mockedRawProvider,
103                 null);
104         // WHEN
105         final FieldStaticTransform<Complex> actualTransform = versionedITRFProvider.getStaticTransform(date);
106         // THEN
107         Assertions.assertEquals(expectedTransform, actualTransform);
108     }
109 
110 }