1   /* Copyright 2002-2025 CS GROUP
2    * Licensed to CS Systèmes d'Information (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.files.ccsds.ndm.odm.ocm;
18  
19  import org.junit.jupiter.api.Assertions;
20  import org.junit.jupiter.api.Test;
21  
22  public class OrderingTest {
23  
24      @Test
25      public void testLTM() {
26          Assertions.assertEquals(10, Ordering.LTM.nbElements(4));
27          final CovarianceIndexer indexer = new CovarianceIndexer(4);
28          checkIndexer(indexer, 0, 0, false);
29          Ordering.LTM.update(indexer);
30          checkIndexer(indexer, 1, 0, false);
31          Ordering.LTM.update(indexer);
32          checkIndexer(indexer, 1, 1, false);
33          Ordering.LTM.update(indexer);
34          checkIndexer(indexer, 2, 0, false);
35          Ordering.LTM.update(indexer);
36          checkIndexer(indexer, 2, 1, false);
37          Ordering.LTM.update(indexer);
38          checkIndexer(indexer, 2, 2, false);
39          Ordering.LTM.update(indexer);
40          checkIndexer(indexer, 3, 0, false);
41          Ordering.LTM.update(indexer);
42          checkIndexer(indexer, 3, 1, false);
43          Ordering.LTM.update(indexer);
44          checkIndexer(indexer, 3, 2, false);
45          Ordering.LTM.update(indexer);
46          checkIndexer(indexer, 3, 3, false);
47      }
48  
49      @Test
50      public void testUTM() {
51          Assertions.assertEquals(10, Ordering.UTM.nbElements(4));
52          final CovarianceIndexer indexer = new CovarianceIndexer(4);
53          checkIndexer(indexer, 0, 0, false);
54          Ordering.UTM.update(indexer);
55          checkIndexer(indexer, 0, 1, false);
56          Ordering.UTM.update(indexer);
57          checkIndexer(indexer, 0, 2, false);
58          Ordering.UTM.update(indexer);
59          checkIndexer(indexer, 0, 3, false);
60          Ordering.UTM.update(indexer);
61          checkIndexer(indexer, 1, 1, false);
62          Ordering.UTM.update(indexer);
63          checkIndexer(indexer, 1, 2, false);
64          Ordering.UTM.update(indexer);
65          checkIndexer(indexer, 1, 3, false);
66          Ordering.UTM.update(indexer);
67          checkIndexer(indexer, 2, 2, false);
68          Ordering.UTM.update(indexer);
69          checkIndexer(indexer, 2, 3, false);
70          Ordering.UTM.update(indexer);
71          checkIndexer(indexer, 3, 3, false);
72      }
73  
74      @Test
75      public void testFULL() {
76          Assertions.assertEquals(9, Ordering.FULL.nbElements(3));
77          final CovarianceIndexer indexer = new CovarianceIndexer(3);
78          checkIndexer(indexer, 0, 0, false);
79          Ordering.FULL.update(indexer);
80          checkIndexer(indexer, 0, 1, false);
81          Ordering.FULL.update(indexer);
82          checkIndexer(indexer, 0, 2, false);
83          Ordering.FULL.update(indexer);
84          checkIndexer(indexer, 1, 0, false);
85          Ordering.FULL.update(indexer);
86          checkIndexer(indexer, 1, 1, false);
87          Ordering.FULL.update(indexer);
88          checkIndexer(indexer, 1, 2, false);
89          Ordering.FULL.update(indexer);
90          checkIndexer(indexer, 2, 0, false);
91          Ordering.FULL.update(indexer);
92          checkIndexer(indexer, 2, 1, false);
93          Ordering.FULL.update(indexer);
94          checkIndexer(indexer, 2, 2, false);
95      }
96  
97      @Test
98      public void testLTMWCC() {
99          Assertions.assertEquals(9, Ordering.LTMWCC.nbElements(3));
100         final CovarianceIndexer indexer = new CovarianceIndexer(3);
101         checkIndexer(indexer, 0, 0, false);
102         Ordering.LTMWCC.update(indexer);
103         checkIndexer(indexer, 0, 1, true);
104         Ordering.LTMWCC.update(indexer);
105         checkIndexer(indexer, 0, 2, true);
106         Ordering.LTMWCC.update(indexer);
107         checkIndexer(indexer, 1, 0, false);
108         Ordering.LTMWCC.update(indexer);
109         checkIndexer(indexer, 1, 1, false);
110         Ordering.LTMWCC.update(indexer);
111         checkIndexer(indexer, 1, 2, true);
112         Ordering.LTMWCC.update(indexer);
113         checkIndexer(indexer, 2, 0, false);
114         Ordering.LTMWCC.update(indexer);
115         checkIndexer(indexer, 2, 1, false);
116         Ordering.LTMWCC.update(indexer);
117         checkIndexer(indexer, 2, 2, false);
118     }
119 
120     @Test
121     public void testUTMWCC() {
122         Assertions.assertEquals(9, Ordering.UTMWCC.nbElements(3));
123         final CovarianceIndexer indexer = new CovarianceIndexer(3);
124         checkIndexer(indexer, 0, 0, false);
125         Ordering.UTMWCC.update(indexer);
126         checkIndexer(indexer, 0, 1, false);
127         Ordering.UTMWCC.update(indexer);
128         checkIndexer(indexer, 0, 2, false);
129         Ordering.UTMWCC.update(indexer);
130         checkIndexer(indexer, 1, 0, true);
131         Ordering.UTMWCC.update(indexer);
132         checkIndexer(indexer, 1, 1, false);
133         Ordering.UTMWCC.update(indexer);
134         checkIndexer(indexer, 1, 2, false);
135         Ordering.UTMWCC.update(indexer);
136         checkIndexer(indexer, 2, 0, true);
137         Ordering.UTMWCC.update(indexer);
138         checkIndexer(indexer, 2, 1, true);
139         Ordering.UTMWCC.update(indexer);
140         checkIndexer(indexer, 2, 2, false);
141     }
142 
143     private void checkIndexer(final CovarianceIndexer indexer,
144                               final int row, final int column, final boolean crossCorrelation) {
145         Assertions.assertEquals(row,              indexer.getRow());
146         Assertions.assertEquals(column,           indexer.getColumn());
147         Assertions.assertEquals(crossCorrelation, indexer.isCrossCorrelation());
148     }
149 
150 }