/* 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.frames; import java.util.Arrays; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.orekit.Utils; import org.orekit.errors.OrekitException; import org.orekit.errors.OrekitMessages; public class OrphanFrameTest { @Test public void testNotAttached() throws OrekitException { OrphanFrame level0 = new OrphanFrame("l0"); OrphanFrame level1A = new OrphanFrame("l1A"); OrphanFrame level1B = new OrphanFrame("l1B"); OrphanFrame level2 = new OrphanFrame("l2"); level0.addChild(level1A, Transform.IDENTITY, false); level0.addChild(level1B, Transform.IDENTITY, false); level1B.addChild(level2, Transform.IDENTITY, false); Assert.assertEquals(2, level0.getChildren().size()); Assert.assertEquals(0, level1A.getChildren().size()); Assert.assertEquals(1, level1B.getChildren().size()); Assert.assertEquals(0, level2.getChildren().size()); for (OrphanFrame of : Arrays.asList(level0, level1A, level1B, level2)) { try { of.getFrame(); Assert.fail("an exception should have been thrown"); } catch (OrekitException oe) { Assert.assertEquals(OrekitMessages.FRAME_NOT_ATTACHED, oe.getSpecifier()); } } } @Test public void testAlreadyAttachedSubTree() throws OrekitException { OrphanFrame level0 = new OrphanFrame("l0"); OrphanFrame level1 = new OrphanFrame("l1"); level0.addChild(level1, Transform.IDENTITY, false); try { level0.addChild(level1, Transform.IDENTITY, false); Assert.fail("an exception should have been thrown"); } catch (OrekitException oe) { Assert.assertEquals(OrekitMessages.FRAME_ALREADY_ATTACHED, oe.getSpecifier()); } } @Test public void testAlreadyAttachedMainTree() throws OrekitException { OrphanFrame level0 = new OrphanFrame("l0"); level0.attachTo(FramesFactory.getGCRF(), Transform.IDENTITY, false); try { level0.attachTo(FramesFactory.getEME2000(), Transform.IDENTITY, false); Assert.fail("an exception should have been thrown"); } catch (OrekitException oe) { Assert.assertEquals(OrekitMessages.FRAME_ALREADY_ATTACHED, oe.getSpecifier()); } } @Test public void testSimpleUse() throws OrekitException { OrphanFrame level0 = new OrphanFrame("l0"); OrphanFrame level1A = new OrphanFrame("l1A"); OrphanFrame level1B = new OrphanFrame("l1B"); OrphanFrame level2 = new OrphanFrame("l2"); level0.addChild(level1A, Transform.IDENTITY, false); level0.addChild(level1B, Transform.IDENTITY, false); level1B.addChild(level2, Transform.IDENTITY, false); level0.attachTo(FramesFactory.getGCRF(), Transform.IDENTITY, false); Assert.assertEquals(1, level0.getFrame().getDepth()); Assert.assertEquals(level0.toString(), level0.getFrame().getName()); Assert.assertEquals(2, level1A.getFrame().getDepth()); Assert.assertEquals(level1A.toString(), level1A.getFrame().getName()); Assert.assertEquals(2, level1B.getFrame().getDepth()); Assert.assertEquals(level1B.toString(), level1B.getFrame().getName()); Assert.assertEquals(3, level2.getFrame().getDepth()); Assert.assertEquals(level2.toString(), level2.getFrame().getName()); } @Test public void testLateAddition() throws OrekitException { OrphanFrame level0 = new OrphanFrame("l0"); OrphanFrame level1A = new OrphanFrame("l1A"); OrphanFrame level1B = new OrphanFrame("l1B"); OrphanFrame level2 = new OrphanFrame("l2"); level0.addChild(level1A, Transform.IDENTITY, false); level0.addChild(level1B, Transform.IDENTITY, false); level0.attachTo(FramesFactory.getGCRF(), Transform.IDENTITY, false); Assert.assertEquals(1, level0.getFrame().getDepth()); Assert.assertEquals(level0.toString(), level0.getFrame().getName()); Assert.assertEquals(2, level1A.getFrame().getDepth()); Assert.assertEquals(level1A.toString(), level1A.getFrame().getName()); Assert.assertEquals(2, level1B.getFrame().getDepth()); Assert.assertEquals(level1B.toString(), level1B.getFrame().getName()); // level2 is not attached to anything yet try { level2.getFrame(); Assert.fail("an exception should have been thrown"); } catch (OrekitException oe) { Assert.assertEquals(OrekitMessages.FRAME_NOT_ATTACHED, oe.getSpecifier()); } // adding a new child after the top level has been attached level1B.addChild(level2, Transform.IDENTITY, false); // now level2 is attached to the main tree Assert.assertEquals(3, level2.getFrame().getDepth()); Assert.assertEquals(level2.toString(), level2.getFrame().getName()); } @Before public void setUp() { Utils.setDataRoot("compressed-data"); } }