/* Copyright 2002-2017 CS Systèmes d'Information * Licensed to CS Systèmes d'Information (CS) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * CS licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.orekit.forces.gravity.potential; import java.util.List; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.orekit.Utils; import org.orekit.data.DataProvidersManager; import org.orekit.errors.OrekitException; import org.orekit.errors.OrekitMessages; public class FESCnmSnmReaderTest { @Test public void testCorruptedNumberFile() throws OrekitException { try { OceanTidesReader reader = new FESCnmSnmReader("fes2004-corrupted-line.dat", 1.0e-11); reader.setMaxParseDegree(5); reader.setMaxParseOrder(5); DataProvidersManager.getInstance().feed(reader.getSupportedNames(), reader); Assert.fail("an exception should have been thrown"); } catch (OrekitException oe) { Assert.assertEquals(OrekitMessages.UNABLE_TO_PARSE_LINE_IN_FILE, oe.getSpecifier()); Assert.assertEquals(9, ((Integer) oe.getParts()[0]).intValue()); Assert.assertEquals(" 56.554 Sa 3 0 0.00### -0.00050 -0.00000 -0.00000", oe.getParts()[2]); } } @Test public void testUnsupportedDegreeFile() throws OrekitException { try { OceanTidesReader reader = new FESCnmSnmReader("fes2004_Cnm-Snm-8x8.dat", 1.0e-11); reader.setMaxParseDegree(20); reader.setMaxParseOrder(5); DataProvidersManager.getInstance().feed(reader.getSupportedNames(), reader); Assert.fail("an exception should have been thrown"); } catch (OrekitException oe) { Assert.assertEquals(OrekitMessages.OCEAN_TIDE_DATA_DEGREE_ORDER_LIMITS, oe.getSpecifier()); Assert.assertEquals(8, ((Integer) oe.getParts()[1]).intValue()); Assert.assertEquals(8, ((Integer) oe.getParts()[2]).intValue()); } } @Test public void testUnsupportedOrderFile() throws OrekitException { try { OceanTidesReader reader = new FESCnmSnmReader("fes2004_Cnm-Snm-8x8.dat", 1.0e-11); reader.setMaxParseDegree(5); reader.setMaxParseOrder(20); DataProvidersManager.getInstance().feed(reader.getSupportedNames(), reader); Assert.fail("an exception should have been thrown"); } catch (OrekitException oe) { Assert.assertEquals(OrekitMessages.OCEAN_TIDE_DATA_DEGREE_ORDER_LIMITS, oe.getSpecifier()); Assert.assertEquals(8, ((Integer) oe.getParts()[1]).intValue()); Assert.assertEquals(8, ((Integer) oe.getParts()[2]).intValue()); } } @Test public void testTruncatedModelFile() throws OrekitException { OceanTidesReader reader = new FESCnmSnmReader("fes2004_Cnm-Snm-8x8.dat", 1.0e-11); reader.setMaxParseDegree(5); reader.setMaxParseOrder(5); DataProvidersManager.getInstance().feed(reader.getSupportedNames(), reader); List<OceanTidesWave> waves = reader.getWaves(); Assert.assertEquals(18, waves.size()); for (OceanTidesWave wave : waves) { switch (wave.getDoodson()) { case 55565: case 55575: Assert.assertEquals(2, wave.getMaxDegree()); Assert.assertEquals(0, wave.getMaxOrder()); break; case 56554: case 57555: case 65455: case 75555: case 85455: case 93555: case 135655: case 145555: case 163555: case 165555: case 235755: case 245655: case 255555: case 273555: case 275555: case 455555: Assert.assertEquals(5, wave.getMaxDegree()); Assert.assertEquals(5, wave.getMaxOrder()); break; default: Assert.fail("unexpected wave " + wave.getDoodson()); } } } @Before public void setUp() { Utils.setDataRoot("regular-data:tides"); } }