DGP - added Radial Angle to launch lug on Rocksim import
[debian/openrocket] / test / net / sf / openrocket / file / rocksim / RocksimLoaderTest.java
index 17b5f53ca115c8339d946c0b9d94c1be65a90271..1ea1f98934eb8af5c7f2ddee7b2bcb9f8fed7edd 100644 (file)
@@ -8,6 +8,8 @@ import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
 import net.sf.openrocket.document.OpenRocketDocument;
+import net.sf.openrocket.rocketcomponent.BodyTube;
+import net.sf.openrocket.rocketcomponent.LaunchLug;
 import net.sf.openrocket.rocketcomponent.Rocket;
 import net.sf.openrocket.rocketcomponent.Stage;
 
@@ -62,6 +64,27 @@ public class RocksimLoaderTest extends TestCase {
         super.tearDown();
     }
 
+    /**
+     * Test a bug reported via automated bug report.  I have been unable to reproduce this bug
+     * (hanging finset off of an inner body tube) when creating a Rocksim file using Rocksim.  The bug
+     * is reproducible when manually modifying the Rocksim file, which is what is tested here.
+     */
+    public void testFinsOnInnerTube() throws Exception {
+        RocksimLoader loader = new RocksimLoader();
+        InputStream stream = this.getClass().getResourceAsStream("PodFins.rkt");
+        assertNotNull("Could not open PodFins.rkt", stream);
+        try {
+            OpenRocketDocument doc = loader.loadFromStream(new BufferedInputStream(stream));
+            assertNotNull(doc);
+            Rocket rocket = doc.getRocket();
+            assertNotNull(rocket);
+        }
+        catch (IllegalStateException ise) {
+            fail(ise.getMessage());            
+        }
+        assertTrue(loader.getWarnings().size() == 2);
+    }
+
     /**
      *
      * Method: loadFromStream(InputStream source)
@@ -72,6 +95,7 @@ public class RocksimLoaderTest extends TestCase {
         RocksimLoader loader = new RocksimLoader();
         //Stupid single stage rocket
         InputStream stream = this.getClass().getResourceAsStream("rocksimTestRocket1.rkt");
+        assertNotNull("Could not open rocksimTestRocket1.rkt", stream);
         OpenRocketDocument doc = loader.loadFromStream(new BufferedInputStream(stream));
         
         assertNotNull(doc);
@@ -81,6 +105,7 @@ public class RocksimLoaderTest extends TestCase {
         assertTrue(loader.getWarnings().isEmpty());
 
         stream = this.getClass().getResourceAsStream("rocksimTestRocket2.rkt");
+        assertNotNull("Could not open rocksimTestRocket2.rkt", stream);
         doc = loader.loadFromStream(new BufferedInputStream(stream));
         
         assertNotNull(doc);
@@ -103,6 +128,7 @@ public class RocksimLoaderTest extends TestCase {
         assertFalse(stage3.isCGOverridden());
 
         stream = this.getClass().getResourceAsStream("rocksimTestRocket3.rkt");
+        assertNotNull("Could not open rocksimTestRocket3.rkt", stream);
         doc = loader.loadFromStream(new BufferedInputStream(stream));
         
         assertNotNull(doc);
@@ -132,6 +158,10 @@ public class RocksimLoaderTest extends TestCase {
         assertTrue(stage2.isCGOverridden());
         assertEquals(0.4d, stage2.getOverrideCG().x);
         
+        BodyTube bt = (BodyTube)stage2.getChild(0);
+        LaunchLug ll = (LaunchLug)bt.getChild(6);
+        assertEquals(1.22d, ll.getRadialDirection());
+        
         assertEquals(2, stage3.getChildCount());
         assertEquals("Transition", stage3.getChild(0).getName());
         assertEquals("Body tube", stage3.getChild(1).getName());