17b5f53ca115c8339d946c0b9d94c1be65a90271
[debian/openrocket] / test / net / sf / openrocket / file / rocksim / RocksimLoaderTest.java
1 /*
2  * RocksimLoaderTest.java
3  *
4  */
5 package net.sf.openrocket.file.rocksim;
6
7 import junit.framework.Test;
8 import junit.framework.TestCase;
9 import junit.framework.TestSuite;
10 import net.sf.openrocket.document.OpenRocketDocument;
11 import net.sf.openrocket.rocketcomponent.Rocket;
12 import net.sf.openrocket.rocketcomponent.Stage;
13
14 import java.io.BufferedInputStream;
15 import java.io.InputStream;
16
17 /**
18  * RocksimLoader Tester.
19  *
20  */
21 public class RocksimLoaderTest extends TestCase {
22
23     /**
24      * The class under test.
25      */
26     public static final Class classUT = RocksimLoader.class;
27
28     /**
29      * The test class (this class).
30      */
31     public static final Class testClass = RocksimLoaderTest.class;
32
33     /**
34      * Create a test suite of all tests within this test class.
35      *
36      * @return a suite of tests
37      */
38     public static Test suite() {
39         return new TestSuite(RocksimLoaderTest.class);
40     }
41
42     /**
43      * Test constructor.
44      *
45      * @param name the name of the test to run.
46      */
47     public RocksimLoaderTest(String name) {
48         super(name);
49     }
50
51     /**
52      * Setup the fixture.
53      */
54     public void setUp() throws Exception {
55         super.setUp();
56     }
57
58     /**
59      * Teardown the fixture.
60      */
61     public void tearDown() throws Exception {
62         super.tearDown();
63     }
64
65     /**
66      *
67      * Method: loadFromStream(InputStream source)
68      *
69      * @throws Exception  thrown if something goes awry
70      */
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         OpenRocketDocument doc = loader.loadFromStream(new BufferedInputStream(stream));
76         
77         assertNotNull(doc);
78         Rocket rocket = doc.getRocket();
79         assertNotNull(rocket);
80         assertEquals("FooBar Test", doc.getRocket().getName());
81         assertTrue(loader.getWarnings().isEmpty());
82
83         stream = this.getClass().getResourceAsStream("rocksimTestRocket2.rkt");
84         doc = loader.loadFromStream(new BufferedInputStream(stream));
85         
86         assertNotNull(doc);
87         rocket = doc.getRocket();
88         assertNotNull(rocket);
89
90         //Do some simple asserts;  the important thing here is just validating that the mass and cg were
91         //not overridden for each stage.
92         assertEquals("Three Stage Everything Included Rocket", doc.getRocket().getName());
93         assertEquals(1, loader.getWarnings().size());
94         assertEquals(3, rocket.getStageCount());  
95         Stage stage1 = (Stage)rocket.getChild(0);
96         assertFalse(stage1.isMassOverridden());
97         assertFalse(stage1.isCGOverridden());
98         Stage stage2 = (Stage)rocket.getChild(1);
99         assertFalse(stage2.isMassOverridden());
100         assertFalse(stage2.isCGOverridden());
101         Stage stage3 = (Stage)rocket.getChild(2);
102         assertFalse(stage3.isMassOverridden());
103         assertFalse(stage3.isCGOverridden());
104
105         stream = this.getClass().getResourceAsStream("rocksimTestRocket3.rkt");
106         doc = loader.loadFromStream(new BufferedInputStream(stream));
107         
108         assertNotNull(doc);
109         rocket = doc.getRocket();
110         assertNotNull(rocket);
111         assertEquals("Three Stage Everything Included Rocket - Override Total Mass/CG", doc.getRocket().getName());
112         assertEquals(3, rocket.getStageCount());  
113         stage1 = (Stage)rocket.getChild(0);
114         stage2 = (Stage)rocket.getChild(1);
115         stage3 = (Stage)rocket.getChild(2);
116         
117         //Do some 1st level and simple asserts; the idea here is to not do a deep validation as that 
118         //should have been covered elsewhere.  Assert that the stage overrides are correct.
119         assertEquals(2, stage1.getChildCount());
120         assertEquals("Nose cone", stage1.getChild(0).getName());
121         assertEquals("Body tube", stage1.getChild(1).getName());
122         assertTrue(stage1.isMassOverridden());
123         assertEquals(0.185d, stage1.getOverrideMass());
124         assertTrue(stage1.isCGOverridden());
125         assertEquals(0.3d, stage1.getOverrideCG().x);
126         assertEquals(4, loader.getWarnings().size());
127         
128         assertEquals(1, stage2.getChildCount());
129         assertEquals("2nd Stage Tube", stage2.getChild(0).getName());
130         assertTrue(stage2.isMassOverridden());
131         assertEquals(0.21d, stage2.getOverrideMass());
132         assertTrue(stage2.isCGOverridden());
133         assertEquals(0.4d, stage2.getOverrideCG().x);
134         
135         assertEquals(2, stage3.getChildCount());
136         assertEquals("Transition", stage3.getChild(0).getName());
137         assertEquals("Body tube", stage3.getChild(1).getName());
138         assertTrue(stage2.isMassOverridden());
139         assertEquals(0.33d, stage3.getOverrideMass());
140         assertTrue(stage2.isCGOverridden());
141         assertEquals(0.5d, stage3.getOverrideCG().x);
142     }
143
144 }