1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.gnss;
18
19 import org.hipparchus.util.FastMath;
20 import org.junit.jupiter.api.Assertions;
21 import org.junit.jupiter.api.BeforeEach;
22 import org.junit.jupiter.api.Test;
23 import org.orekit.Utils;
24 import org.orekit.errors.OrekitException;
25 import org.orekit.propagation.analytical.gnss.data.GPSAlmanac;
26 import org.orekit.time.GNSSDate;
27
28 import java.io.IOException;
29 import java.io.InputStream;
30 import java.text.ParseException;
31 import java.util.Locale;
32
33
34 public class YUMAParserTest {
35
36 @BeforeEach
37 public void setUp() {
38 Utils.setDataRoot("gnss");
39 }
40
41 @Test
42 public void testNoFile() {
43
44 YUMAParser reader = new YUMAParser(".*\\.yum$");
45
46 try {
47 reader.loadData();
48 } catch (OrekitException oe) {
49 Assertions.assertEquals("aucun fichier d'almanach Yuma n'a été trouvé", oe.getMessage(Locale.FRANCE));
50 }
51 }
52
53 @Test
54 public void testWrongFile() throws IOException, ParseException {
55
56 YUMAParser reader = new YUMAParser(".*\\.yum$");
57
58 final String fileName = "/gnss/wrong_yuma.txt";
59 final InputStream in = getClass().getResourceAsStream(fileName);
60
61 try {
62 reader.loadData(in, fileName);
63 } catch (OrekitException oe) {
64 Assertions.assertEquals("le fichier /gnss/wrong_yuma.txt n'est pas un fichier d'almanach Yuma supporté",
65 oe.getMessage(Locale.FRANCE));
66 }
67 }
68
69 @Test
70 public void testLoadData() throws IOException, ParseException, OrekitException {
71
72 YUMAParser reader = new YUMAParser(".*\\.yum$");
73
74 final String fileName = "/gnss/yuma.txt";
75 final InputStream in = getClass().getResourceAsStream(fileName);
76 reader.loadData(in, fileName);
77
78 Assertions.assertEquals(".*\\.yum$", reader.getSupportedNames());
79
80
81 Assertions.assertEquals(31, reader.getAlmanacs().size());
82 Assertions.assertEquals(31, reader.getPRNNumbers().size());
83
84
85 final GPSAlmanac alm = reader.getAlmanacs().get(reader.getAlmanacs().size() - 1);
86 Assertions.assertEquals(32, alm.getPRN());
87 Assertions.assertEquals(-1, alm.getSVN());
88 Assertions.assertEquals(862, alm.getWeek());
89 Assertions.assertEquals(319488.0, alm.getTime(), 0.);
90 Assertions.assertEquals(5165.591309, FastMath.sqrt(alm.getSma()), FastMath.ulp(5.E+03));
91 Assertions.assertEquals(0.7963180542E-004, alm.getE(), FastMath.ulp(8E-05));
92 Assertions.assertEquals(0.9598609143, alm.getI0(), 0.);
93 Assertions.assertEquals(0., alm.getIDot(), 0.);
94 Assertions.assertEquals(0.1426272192E+001, alm.getOmega0(), 0.);
95 Assertions.assertEquals(-0.7737465154E-008, alm.getOmegaDot(), FastMath.ulp(-8E-09));
96 Assertions.assertEquals(0.248929953, alm.getPa(), 0.);
97 Assertions.assertEquals(0.1209154364E+001, alm.getM0(), 0.);
98 Assertions.assertEquals(0.9536743164E-005, alm.getAf0(), 0.);
99 Assertions.assertEquals(0.3637978807E-011, alm.getAf1(), 0.);
100 Assertions.assertEquals(63, alm.getHealth());
101 Assertions.assertEquals(-1, alm.getURA());
102 Assertions.assertEquals(-1, alm.getSatConfiguration());
103 Assertions.assertEquals("YUMA", alm.getSource());
104 Assertions.assertEquals(0, alm.getDate().durationFrom(new GNSSDate(862, 319488.0, SatelliteSystem.GPS).getDate()), 1.0e-15);
105 Assertions.assertEquals(0., alm.getCic(), 0.);
106 Assertions.assertEquals(0., alm.getCis(), 0.);
107 Assertions.assertEquals(0., alm.getCrc(), 0.);
108 Assertions.assertEquals(0., alm.getCrs(), 0.);
109 Assertions.assertEquals(0., alm.getCuc(), 0.);
110 Assertions.assertEquals(0., alm.getCus(), 0.);
111 Assertions.assertEquals(1.4484676210186782E-4, alm.getMeanMotion0(), 0.);
112 }
113
114 @Test
115 public void testLoadDefault() throws OrekitException {
116
117 YUMAParser reader = new YUMAParser(null);
118 reader.loadData();
119
120 Assertions.assertEquals(".*\\.alm$", reader.getSupportedNames());
121
122 Assertions.assertEquals(31, reader.getAlmanacs().size());
123 Assertions.assertEquals(31, reader.getPRNNumbers().size());
124
125
126 final GPSAlmanac alm = reader.getAlmanacs().get(0);
127 Assertions.assertEquals(1, alm.getPRN());
128 Assertions.assertEquals(-1, alm.getSVN());
129 Assertions.assertEquals(866, alm.getWeek());
130 Assertions.assertEquals(589824.0, alm.getTime(), 0.);
131 Assertions.assertEquals(5153.602051, FastMath.sqrt(alm.getSma()), FastMath.ulp(5.E+03));
132 Assertions.assertEquals(0.5221366882E-02, alm.getE(), 0.);
133 Assertions.assertEquals(0.963785748, alm.getI0(), 0.);
134 Assertions.assertEquals(0., alm.getIDot(), 0.);
135 Assertions.assertEquals(-1.159458779E+000, alm.getOmega0(), 1.e-9);
136 Assertions.assertEquals(-0.7897471819E-008, alm.getOmegaDot(), FastMath.ulp(-8E-09));
137 Assertions.assertEquals(0.451712027, alm.getPa(), 1.e-9);
138 Assertions.assertEquals(-0.2105941778E+001, alm.getM0(), 1.e-9);
139 Assertions.assertEquals(0.1621246338E-004, alm.getAf0(), 1.e-14);
140 Assertions.assertEquals(0.0, alm.getAf1(), 0.);
141 Assertions.assertEquals(0, alm.getHealth());
142 Assertions.assertEquals(-1, alm.getURA());
143 Assertions.assertEquals(-1, alm.getSatConfiguration());
144 Assertions.assertEquals("YUMA", alm.getSource());
145 Assertions.assertEquals(0, alm.getDate().durationFrom(new GNSSDate(866, 589824.0, SatelliteSystem.GPS).getDate()), 1.0e-15);
146 Assertions.assertEquals(0., alm.getCic(), 0.);
147 Assertions.assertEquals(0., alm.getCis(), 0.);
148 Assertions.assertEquals(0., alm.getCrc(), 0.);
149 Assertions.assertEquals(0., alm.getCrs(), 0.);
150 Assertions.assertEquals(0., alm.getCuc(), 0.);
151 Assertions.assertEquals(0., alm.getCus(), 0.);
152 Assertions.assertEquals(1.45860023309E-4, alm.getMeanMotion0(), 1.e-15);
153 }
154
155 }