2 * RocksimLoaderTest.java
5 package net.sf.openrocket.file.rocksim;
7 import java.io.BufferedInputStream;
8 import java.io.InputStream;
10 import junit.framework.Test;
11 import junit.framework.TestCase;
12 import junit.framework.TestSuite;
13 import net.sf.openrocket.document.OpenRocketDocument;
14 import net.sf.openrocket.rocketcomponent.Rocket;
15 import net.sf.openrocket.rocketcomponent.Stage;
18 * RocksimLoader Tester.
21 public class RocksimLoaderTest extends TestCase {
24 * The class under test.
26 public static final Class classUT = RocksimLoader.class;
29 * The test class (this class).
31 public static final Class testClass = RocksimLoaderTest.class;
34 * Create a test suite of all tests within this test class.
36 * @return a suite of tests
38 public static Test suite() {
39 return new TestSuite(RocksimLoaderTest.class);
45 * @param name the name of the test to run.
47 public RocksimLoaderTest(String name) {
54 public void setUp() throws Exception {
59 * Teardown the fixture.
61 public void tearDown() throws Exception {
67 * Method: loadFromStream(InputStream source)
69 * @throws Exception thrown if something goes awry
71 public void testLoadFromStream() throws Exception {
72 RocksimLoader loader = new RocksimLoader();
73 //Stupid single stage rocket
74 InputStream stream = this.getClass().getResourceAsStream("rocksimTestRocket1.rkt");
75 assertNotNull("Could not open rocksimTestRocket1.rkt", stream);
76 OpenRocketDocument doc = loader.loadFromStream(new BufferedInputStream(stream));
79 Rocket rocket = doc.getRocket();
80 assertNotNull(rocket);
81 assertEquals("FooBar Test", doc.getRocket().getName());
82 assertTrue(loader.getWarnings().isEmpty());
84 stream = this.getClass().getResourceAsStream("rocksimTestRocket2.rkt");
85 assertNotNull("Could not open rocksimTestRocket2.rkt", stream);
86 doc = loader.loadFromStream(new BufferedInputStream(stream));
89 rocket = doc.getRocket();
90 assertNotNull(rocket);
92 //Do some simple asserts; the important thing here is just validating that the mass and cg were
93 //not overridden for each stage.
94 assertEquals("Three Stage Everything Included Rocket", doc.getRocket().getName());
95 assertEquals(1, loader.getWarnings().size());
96 assertEquals(3, rocket.getStageCount());
97 Stage stage1 = (Stage)rocket.getChild(0);
98 assertFalse(stage1.isMassOverridden());
99 assertFalse(stage1.isCGOverridden());
100 Stage stage2 = (Stage)rocket.getChild(1);
101 assertFalse(stage2.isMassOverridden());
102 assertFalse(stage2.isCGOverridden());
103 Stage stage3 = (Stage)rocket.getChild(2);
104 assertFalse(stage3.isMassOverridden());
105 assertFalse(stage3.isCGOverridden());
107 stream = this.getClass().getResourceAsStream("rocksimTestRocket3.rkt");
108 assertNotNull("Could not open rocksimTestRocket3.rkt", stream);
109 doc = loader.loadFromStream(new BufferedInputStream(stream));
112 rocket = doc.getRocket();
113 assertNotNull(rocket);
114 assertEquals("Three Stage Everything Included Rocket - Override Total Mass/CG", doc.getRocket().getName());
115 assertEquals(3, rocket.getStageCount());
116 stage1 = (Stage)rocket.getChild(0);
117 stage2 = (Stage)rocket.getChild(1);
118 stage3 = (Stage)rocket.getChild(2);
120 //Do some 1st level and simple asserts; the idea here is to not do a deep validation as that
121 //should have been covered elsewhere. Assert that the stage overrides are correct.
122 assertEquals(2, stage1.getChildCount());
123 assertEquals("Nose cone", stage1.getChild(0).getName());
124 assertEquals("Body tube", stage1.getChild(1).getName());
125 assertTrue(stage1.isMassOverridden());
126 assertEquals(0.185d, stage1.getOverrideMass());
127 assertTrue(stage1.isCGOverridden());
128 assertEquals(0.3d, stage1.getOverrideCG().x);
129 assertEquals(4, loader.getWarnings().size());
131 assertEquals(1, stage2.getChildCount());
132 assertEquals("2nd Stage Tube", stage2.getChild(0).getName());
133 assertTrue(stage2.isMassOverridden());
134 assertEquals(0.21d, stage2.getOverrideMass());
135 assertTrue(stage2.isCGOverridden());
136 assertEquals(0.4d, stage2.getOverrideCG().x);
138 assertEquals(2, stage3.getChildCount());
139 assertEquals("Transition", stage3.getChild(0).getName());
140 assertEquals("Body tube", stage3.getChild(1).getName());
141 assertTrue(stage2.isMassOverridden());
142 assertEquals(0.33d, stage3.getOverrideMass());
143 assertTrue(stage2.isCGOverridden());
144 assertEquals(0.5d, stage3.getOverrideCG().x);