DGP - Modified Rocksim import to discriminate between centering ring, tube coupler...
[debian/openrocket] / test / net / sf / openrocket / file / rocksim / RocksimLoaderTest.java
index 45551aea5c793a6483ce991728a71ea0fc2bb38b..83b1fab59240bc149e34858bc3a51cd9db2ed31f 100644 (file)
@@ -4,62 +4,42 @@
  */
 package net.sf.openrocket.file.rocksim;
 
-import java.io.BufferedInputStream;
-import java.io.InputStream;
-
-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;
+import org.junit.Assert;
+
+import java.io.BufferedInputStream;
+import java.io.InputStream;
 
 /**
  * RocksimLoader Tester.
  *
  */
-public class RocksimLoaderTest extends TestCase {
-
-    /**
-     * The class under test.
-     */
-    public static final Class classUT = RocksimLoader.class;
-
-    /**
-     * The test class (this class).
-     */
-    public static final Class testClass = RocksimLoaderTest.class;
-
-    /**
-     * Create a test suite of all tests within this test class.
-     *
-     * @return a suite of tests
-     */
-    public static Test suite() {
-        return new TestSuite(RocksimLoaderTest.class);
-    }
-
-    /**
-     * Test constructor.
-     *
-     * @param name the name of the test to run.
-     */
-    public RocksimLoaderTest(String name) {
-        super(name);
-    }
+public class RocksimLoaderTest {
 
     /**
-     * Setup the fixture.
+     * 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 setUp() throws Exception {
-        super.setUp();
-    }
-
-    /**
-     * Teardown the fixture.
-     */
-    public void tearDown() throws Exception {
-        super.tearDown();
+    @org.junit.Test
+    public void testFinsOnInnerTube() throws Exception {
+        RocksimLoader loader = new RocksimLoader();
+        InputStream stream = this.getClass().getResourceAsStream("PodFins.rkt");
+        Assert.assertNotNull("Could not open PodFins.rkt", stream);
+        try {
+            OpenRocketDocument doc = loader.loadFromStream(new BufferedInputStream(stream));
+            Assert.assertNotNull(doc);
+            Rocket rocket = doc.getRocket();
+            Assert.assertNotNull(rocket);
+        }
+        catch (IllegalStateException ise) {
+            Assert.fail(ise.getMessage());
+        }
+        Assert.assertTrue(loader.getWarnings().size() == 2);
     }
 
     /**
@@ -68,80 +48,85 @@ public class RocksimLoaderTest extends TestCase {
      *
      * @throws Exception  thrown if something goes awry
      */
+    @org.junit.Test
     public void testLoadFromStream() throws Exception {
         RocksimLoader loader = new RocksimLoader();
         //Stupid single stage rocket
         InputStream stream = this.getClass().getResourceAsStream("rocksimTestRocket1.rkt");
-        assertNotNull("Could not open rocksimTestRocket1.rkt", stream);
+        Assert.assertNotNull("Could not open rocksimTestRocket1.rkt", stream);
         OpenRocketDocument doc = loader.loadFromStream(new BufferedInputStream(stream));
         
-        assertNotNull(doc);
+        Assert.assertNotNull(doc);
         Rocket rocket = doc.getRocket();
-        assertNotNull(rocket);
-        assertEquals("FooBar Test", doc.getRocket().getName());
-        assertTrue(loader.getWarnings().isEmpty());
+        Assert.assertNotNull(rocket);
+        Assert.assertEquals("FooBar Test", doc.getRocket().getName());
+        Assert.assertTrue(loader.getWarnings().isEmpty());
 
         stream = this.getClass().getResourceAsStream("rocksimTestRocket2.rkt");
-        assertNotNull("Could not open rocksimTestRocket2.rkt", stream);
+        Assert.assertNotNull("Could not open rocksimTestRocket2.rkt", stream);
         doc = loader.loadFromStream(new BufferedInputStream(stream));
         
-        assertNotNull(doc);
+        Assert.assertNotNull(doc);
         rocket = doc.getRocket();
-        assertNotNull(rocket);
+        Assert.assertNotNull(rocket);
 
         //Do some simple asserts;  the important thing here is just validating that the mass and cg were
         //not overridden for each stage.
-        assertEquals("Three Stage Everything Included Rocket", doc.getRocket().getName());
-        assertEquals(1, loader.getWarnings().size());
-        assertEquals(3, rocket.getStageCount());  
+        Assert.assertEquals("Three Stage Everything Included Rocket", doc.getRocket().getName());
+        Assert.assertEquals(1, loader.getWarnings().size());
+        Assert.assertEquals(3, rocket.getStageCount());
         Stage stage1 = (Stage)rocket.getChild(0);
-        assertFalse(stage1.isMassOverridden());
-        assertFalse(stage1.isCGOverridden());
+        Assert.assertFalse(stage1.isMassOverridden());
+        Assert.assertFalse(stage1.isCGOverridden());
         Stage stage2 = (Stage)rocket.getChild(1);
-        assertFalse(stage2.isMassOverridden());
-        assertFalse(stage2.isCGOverridden());
+        Assert.assertFalse(stage2.isMassOverridden());
+        Assert.assertFalse(stage2.isCGOverridden());
         Stage stage3 = (Stage)rocket.getChild(2);
-        assertFalse(stage3.isMassOverridden());
-        assertFalse(stage3.isCGOverridden());
+        Assert.assertFalse(stage3.isMassOverridden());
+        Assert.assertFalse(stage3.isCGOverridden());
 
         stream = this.getClass().getResourceAsStream("rocksimTestRocket3.rkt");
-        assertNotNull("Could not open rocksimTestRocket3.rkt", stream);
+        Assert.assertNotNull("Could not open rocksimTestRocket3.rkt", stream);
         doc = loader.loadFromStream(new BufferedInputStream(stream));
         
-        assertNotNull(doc);
+        Assert.assertNotNull(doc);
         rocket = doc.getRocket();
-        assertNotNull(rocket);
-        assertEquals("Three Stage Everything Included Rocket - Override Total Mass/CG", doc.getRocket().getName());
-        assertEquals(3, rocket.getStageCount());  
+        Assert.assertNotNull(rocket);
+        Assert.assertEquals("Three Stage Everything Included Rocket - Override Total Mass/CG", doc.getRocket().getName());
+        Assert.assertEquals(3, rocket.getStageCount());
         stage1 = (Stage)rocket.getChild(0);
         stage2 = (Stage)rocket.getChild(1);
         stage3 = (Stage)rocket.getChild(2);
         
         //Do some 1st level and simple asserts; the idea here is to not do a deep validation as that 
         //should have been covered elsewhere.  Assert that the stage overrides are correct.
-        assertEquals(2, stage1.getChildCount());
-        assertEquals("Nose cone", stage1.getChild(0).getName());
-        assertEquals("Body tube", stage1.getChild(1).getName());
-        assertTrue(stage1.isMassOverridden());
-        assertEquals(0.185d, stage1.getOverrideMass());
-        assertTrue(stage1.isCGOverridden());
-        assertEquals(0.3d, stage1.getOverrideCG().x);
-        assertEquals(4, loader.getWarnings().size());
+        Assert.assertEquals(2, stage1.getChildCount());
+        Assert.assertEquals("Nose cone", stage1.getChild(0).getName());
+        Assert.assertEquals("Body tube", stage1.getChild(1).getName());
+        Assert.assertTrue(stage1.isMassOverridden());
+        Assert.assertEquals(0.185d, stage1.getOverrideMass(), 0.001);
+        Assert.assertTrue(stage1.isCGOverridden());
+        Assert.assertEquals(0.3d, stage1.getOverrideCG().x, 0.001);
+        Assert.assertEquals(4, loader.getWarnings().size());
+        
+        Assert.assertEquals(1, stage2.getChildCount());
+        Assert.assertEquals("2nd Stage Tube", stage2.getChild(0).getName());
+        Assert.assertTrue(stage2.isMassOverridden());
+        Assert.assertEquals(0.21d, stage2.getOverrideMass(), 0.001);
+        Assert.assertTrue(stage2.isCGOverridden());
+        Assert.assertEquals(0.4d, stage2.getOverrideCG().x, 0.001);
         
-        assertEquals(1, stage2.getChildCount());
-        assertEquals("2nd Stage Tube", stage2.getChild(0).getName());
-        assertTrue(stage2.isMassOverridden());
-        assertEquals(0.21d, stage2.getOverrideMass());
-        assertTrue(stage2.isCGOverridden());
-        assertEquals(0.4d, stage2.getOverrideCG().x);
+        BodyTube bt = (BodyTube)stage2.getChild(0);
+        LaunchLug ll = (LaunchLug)bt.getChild(6);
+        Assert.assertEquals(1.22d, ll.getRadialDirection(), 0.001);
         
-        assertEquals(2, stage3.getChildCount());
-        assertEquals("Transition", stage3.getChild(0).getName());
-        assertEquals("Body tube", stage3.getChild(1).getName());
-        assertTrue(stage2.isMassOverridden());
-        assertEquals(0.33d, stage3.getOverrideMass());
-        assertTrue(stage2.isCGOverridden());
-        assertEquals(0.5d, stage3.getOverrideCG().x);
+        Assert.assertEquals(2, stage3.getChildCount());
+        Assert.assertEquals("Transition", stage3.getChild(0).getName());
+        Assert.assertEquals("Body tube", stage3.getChild(1).getName());
+        Assert.assertTrue(stage2.isMassOverridden());
+        Assert.assertEquals(0.33d, stage3.getOverrideMass(), 0.001);
+        Assert.assertTrue(stage2.isCGOverridden());
+        Assert.assertEquals(0.5d, stage3.getOverrideCG().x, 0.001);
     }
 
 }