1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.gnss.metric.messages.ssr;
18
19 import java.util.ArrayList;
20
21 import org.junit.Assert;
22 import org.junit.Test;
23 import org.orekit.errors.OrekitException;
24 import org.orekit.errors.OrekitMessages;
25 import org.orekit.gnss.SatelliteSystem;
26 import org.orekit.gnss.metric.messages.ssr.igm.SsrIgm07;
27 import org.orekit.gnss.metric.messages.ssr.igm.SsrIgm07Data;
28 import org.orekit.gnss.metric.parser.ByteArrayEncodedMessages;
29 import org.orekit.gnss.metric.parser.EncodedMessage;
30 import org.orekit.gnss.metric.parser.IgsSsrMessagesParser;
31
32 public class SsrIgm07Test {
33
34 private double eps = 1.0e-13;
35
36 @Test
37 public void testPerfectValueGPS() {
38
39 final String m = "010000100100" +
40 "001" +
41 "00011011" +
42 "01111110011000111111" +
43 "0110" +
44 "0" +
45 "0111" +
46 "0000111101101111" +
47 "0001" +
48 "000010" +
49 "000001" +
50 "010111" +
51 "001100" +
52 "11110000";
53
54 final EncodedMessage message = new ByteArrayEncodedMessages(byteArrayFromBinary(m));
55 message.start();
56
57 ArrayList<Integer> messages = new ArrayList<>();
58 messages.add(27);
59
60 final SsrIgm07 igm07 = (SsrIgm07) new IgsSsrMessagesParser(messages).parse(message, false);
61
62
63 Assert.assertEquals(2, igm07.getData().size());
64 Assert.assertEquals(SatelliteSystem.GPS, igm07.getSatelliteSystem());
65
66
67 Assert.assertEquals(27, igm07.getTypeCode());
68 Assert.assertEquals(517695.0, igm07.getHeader().getSsrEpoch1s(), eps);
69 Assert.assertEquals(60.0, igm07.getHeader().getSsrUpdateInterval(), eps);
70 Assert.assertEquals(0, igm07.getHeader().getSsrMultipleMessageIndicator());
71 Assert.assertEquals(7, igm07.getHeader().getIodSsr());
72 Assert.assertEquals(3951, igm07.getHeader().getSsrProviderId());
73 Assert.assertEquals(1, igm07.getHeader().getSsrSolutionId());
74 Assert.assertEquals(2, igm07.getHeader().getNumberOfSatellites());
75
76
77 final SsrIgm07Data g1 = igm07.getSsrIgm07Data().get("G01").get(0);
78 Assert.assertEquals(1, g1.getSatelliteID());
79 Assert.assertEquals(23.0, g1.getSsrUra(), eps);
80
81
82 final SsrIgm07Data g12 = igm07.getSsrIgm07Data().get("G12").get(0);
83 Assert.assertEquals(12, g12.getSatelliteID());
84 Assert.assertEquals(60.0, g12.getSsrUra(), eps);
85
86 }
87
88 @Test
89 public void testPerfectValueGalileo() {
90
91 final String m = "010000100100" +
92 "001" +
93 "01000011" +
94 "01111110011000111111" +
95 "1101" +
96 "0" +
97 "0111" +
98 "0000111101101111" +
99 "0001" +
100 "000010" +
101 "000001" +
102 "010111" +
103 "001100" +
104 "11110000";
105
106 final EncodedMessage message = new ByteArrayEncodedMessages(byteArrayFromBinary(m));
107 message.start();
108
109 ArrayList<Integer> messages = new ArrayList<>();
110 messages.add(67);
111
112 final SsrIgm07 igm07 = (SsrIgm07) new IgsSsrMessagesParser(messages).parse(message, false);
113
114
115 Assert.assertEquals(2, igm07.getData().size());
116 Assert.assertEquals(SatelliteSystem.GALILEO, igm07.getSatelliteSystem());
117
118
119 Assert.assertEquals(67, igm07.getTypeCode());
120 Assert.assertEquals(517695.0, igm07.getHeader().getSsrEpoch1s(), eps);
121 Assert.assertEquals(3600.0, igm07.getHeader().getSsrUpdateInterval(), eps);
122 Assert.assertEquals(0, igm07.getHeader().getSsrMultipleMessageIndicator());
123 Assert.assertEquals(7, igm07.getHeader().getIodSsr());
124 Assert.assertEquals(3951, igm07.getHeader().getSsrProviderId());
125 Assert.assertEquals(1, igm07.getHeader().getSsrSolutionId());
126 Assert.assertEquals(2, igm07.getHeader().getNumberOfSatellites());
127
128
129 final SsrIgm07Data e01 = igm07.getSsrIgm07Data().get("E01").get(0);
130 Assert.assertEquals(1, e01.getSatelliteID());
131 Assert.assertEquals(23.0, e01.getSsrUra(), eps);
132
133
134 final SsrIgm07Data e12 = igm07.getSsrIgm07Data().get("E12").get(0);
135 Assert.assertEquals(12, e12.getSatelliteID());
136 Assert.assertEquals(60.0, e12.getSsrUra(), eps);
137
138 }
139
140 @Test
141 public void testNullMessage() {
142
143 final String m = "010000100100" +
144 "001" +
145 "00011011" +
146 "01111110011000111111" +
147 "0101" +
148 "0" +
149 "0111" +
150 "0000111101101111" +
151 "0001" +
152 "000010" +
153 "000001" +
154 "01111111" +
155 "001100" +
156 "1111000000";
157
158 final EncodedMessage message = new ByteArrayEncodedMessages(byteArrayFromBinary(m));
159 message.start();
160
161 ArrayList<Integer> messages = new ArrayList<>();
162 messages.add(9999999);
163
164 final SsrIgm07 igm07 = (SsrIgm07) new IgsSsrMessagesParser(messages).parse(message, false);
165
166 Assert.assertNull(igm07);
167 }
168
169 @Test
170 public void testEmptyMessage() {
171 try {
172 final byte[] array = new byte[0];
173 final EncodedMessage emptyMessage = new ByteArrayEncodedMessages(array);
174 new IgsSsrMessagesParser(new ArrayList<Integer>()).parse(emptyMessage, false);
175 Assert.fail("an exception should have been thrown");
176 } catch (OrekitException oe) {
177 Assert.assertEquals(OrekitMessages.END_OF_ENCODED_MESSAGE, oe.getSpecifier());
178 }
179
180 }
181
182 private byte[] byteArrayFromBinary(String radix2Value) {
183 final byte[] array = new byte[radix2Value.length() / 8];
184 for (int i = 0; i < array.length; ++i) {
185 for (int j = 0; j < 8; ++j) {
186 if (radix2Value.charAt(8 * i + j) != '0') {
187 array[i] |= 0x1 << (7 - j);
188 }
189 }
190 }
191 return array;
192 }
193
194 }