1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.forces.gravity.potential;
18
19 import org.junit.jupiter.api.Assertions;
20 import org.junit.jupiter.api.BeforeEach;
21 import org.junit.jupiter.api.Test;
22 import org.orekit.Utils;
23 import org.orekit.data.DataContext;
24 import org.orekit.errors.OrekitException;
25 import org.orekit.errors.OrekitMessages;
26
27 import java.util.List;
28
29 public class FESCnmSnmReaderTest {
30
31 @Test
32 void testCorruptedNumberFile() {
33 try {
34 OceanTidesReader reader = new FESCnmSnmReader("fes2004-corrupted-line.dat", 1.0e-11);
35 reader.setMaxParseDegree(5);
36 reader.setMaxParseOrder(5);
37 DataContext.getDefault().getDataProvidersManager().feed(reader.getSupportedNames(), reader);
38 Assertions.fail("an exception should have been thrown");
39 } catch (OrekitException oe) {
40 Assertions.assertEquals(OrekitMessages.UNABLE_TO_PARSE_LINE_IN_FILE, oe.getSpecifier());
41 Assertions.assertEquals(9, ((Integer) oe.getParts()[0]).intValue());
42 Assertions.assertEquals(" 56.554 Sa 3 0 0.00### -0.00050 -0.00000 -0.00000", oe.getParts()[2]);
43 }
44 }
45
46 @Test
47 void testUnsupportedDegreeFile() {
48 try {
49 OceanTidesReader reader = new FESCnmSnmReader("fes2004_Cnm-Snm-8x8.dat", 1.0e-11);
50 reader.setMaxParseDegree(20);
51 reader.setMaxParseOrder(5);
52 DataContext.getDefault().getDataProvidersManager().feed(reader.getSupportedNames(), reader);
53 Assertions.fail("an exception should have been thrown");
54 } catch (OrekitException oe) {
55 Assertions.assertEquals(OrekitMessages.OCEAN_TIDE_DATA_DEGREE_ORDER_LIMITS, oe.getSpecifier());
56 Assertions.assertEquals(8, ((Integer) oe.getParts()[1]).intValue());
57 Assertions.assertEquals(8, ((Integer) oe.getParts()[2]).intValue());
58 }
59 }
60
61 @Test
62 void testUnsupportedOrderFile() {
63 try {
64 OceanTidesReader reader = new FESCnmSnmReader("fes2004_Cnm-Snm-8x8.dat", 1.0e-11);
65 reader.setMaxParseDegree(5);
66 reader.setMaxParseOrder(20);
67 DataContext.getDefault().getDataProvidersManager().feed(reader.getSupportedNames(), reader);
68 Assertions.fail("an exception should have been thrown");
69 } catch (OrekitException oe) {
70 Assertions.assertEquals(OrekitMessages.OCEAN_TIDE_DATA_DEGREE_ORDER_LIMITS, oe.getSpecifier());
71 Assertions.assertEquals(8, ((Integer) oe.getParts()[1]).intValue());
72 Assertions.assertEquals(8, ((Integer) oe.getParts()[2]).intValue());
73 }
74 }
75
76 @Test
77 void testTruncatedModelFile()
78 {
79 OceanTidesReader reader = new FESCnmSnmReader("fes2004_Cnm-Snm-8x8.dat", 1.0e-11);
80 reader.setMaxParseDegree(5);
81 reader.setMaxParseOrder(5);
82 DataContext.getDefault().getDataProvidersManager().feed(reader.getSupportedNames(), reader);
83 List<OceanTidesWave> waves = reader.getWaves();
84 Assertions.assertEquals(18, waves.size());
85 for (OceanTidesWave wave : waves) {
86 switch (wave.getDoodson()) {
87 case 55565:
88 case 55575:
89 Assertions.assertEquals(2, wave.getMaxDegree());
90 Assertions.assertEquals(0, wave.getMaxOrder());
91 break;
92 case 56554:
93 case 57555:
94 case 65455:
95 case 75555:
96 case 85455:
97 case 93555:
98 case 135655:
99 case 145555:
100 case 163555:
101 case 165555:
102 case 235755:
103 case 245655:
104 case 255555:
105 case 273555:
106 case 275555:
107 case 455555:
108 Assertions.assertEquals(5, wave.getMaxDegree());
109 Assertions.assertEquals(5, wave.getMaxOrder());
110 break;
111 default:
112 Assertions.fail("unexpected wave " + wave.getDoodson());
113 }
114 }
115 }
116
117 @BeforeEach
118 public void setUp() {
119 Utils.setDataRoot("regular-data:tides");
120 }
121
122 }