X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=test%2Fnet%2Fsf%2Fopenrocket%2Ffile%2Frocksim%2FRocksimLoaderTest.java;fp=test%2Fnet%2Fsf%2Fopenrocket%2Ffile%2Frocksim%2FRocksimLoaderTest.java;h=17b5f53ca115c8339d946c0b9d94c1be65a90271;hb=198227dc14b96901f3105fd816b6a9b84993adef;hp=0000000000000000000000000000000000000000;hpb=759de538156bbd2810075a5fd14ce9ddb3fbd274;p=debian%2Fopenrocket diff --git a/test/net/sf/openrocket/file/rocksim/RocksimLoaderTest.java b/test/net/sf/openrocket/file/rocksim/RocksimLoaderTest.java new file mode 100644 index 00000000..17b5f53c --- /dev/null +++ b/test/net/sf/openrocket/file/rocksim/RocksimLoaderTest.java @@ -0,0 +1,144 @@ +/* + * RocksimLoaderTest.java + * + */ +package net.sf.openrocket.file.rocksim; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; +import net.sf.openrocket.document.OpenRocketDocument; +import net.sf.openrocket.rocketcomponent.Rocket; +import net.sf.openrocket.rocketcomponent.Stage; + +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); + } + + /** + * Setup the fixture. + */ + public void setUp() throws Exception { + super.setUp(); + } + + /** + * Teardown the fixture. + */ + public void tearDown() throws Exception { + super.tearDown(); + } + + /** + * + * Method: loadFromStream(InputStream source) + * + * @throws Exception thrown if something goes awry + */ + public void testLoadFromStream() throws Exception { + RocksimLoader loader = new RocksimLoader(); + //Stupid single stage rocket + InputStream stream = this.getClass().getResourceAsStream("rocksimTestRocket1.rkt"); + OpenRocketDocument doc = loader.loadFromStream(new BufferedInputStream(stream)); + + assertNotNull(doc); + Rocket rocket = doc.getRocket(); + assertNotNull(rocket); + assertEquals("FooBar Test", doc.getRocket().getName()); + assertTrue(loader.getWarnings().isEmpty()); + + stream = this.getClass().getResourceAsStream("rocksimTestRocket2.rkt"); + doc = loader.loadFromStream(new BufferedInputStream(stream)); + + assertNotNull(doc); + rocket = doc.getRocket(); + 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()); + Stage stage1 = (Stage)rocket.getChild(0); + assertFalse(stage1.isMassOverridden()); + assertFalse(stage1.isCGOverridden()); + Stage stage2 = (Stage)rocket.getChild(1); + assertFalse(stage2.isMassOverridden()); + assertFalse(stage2.isCGOverridden()); + Stage stage3 = (Stage)rocket.getChild(2); + assertFalse(stage3.isMassOverridden()); + assertFalse(stage3.isCGOverridden()); + + stream = this.getClass().getResourceAsStream("rocksimTestRocket3.rkt"); + doc = loader.loadFromStream(new BufferedInputStream(stream)); + + assertNotNull(doc); + rocket = doc.getRocket(); + assertNotNull(rocket); + assertEquals("Three Stage Everything Included Rocket - Override Total Mass/CG", doc.getRocket().getName()); + 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()); + + 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); + + 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); + } + +}