logging and unit test updates
[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 java.io.BufferedInputStream;
8 import java.io.InputStream;
9
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;
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         assertNotNull("Could not open rocksimTestRocket1.rkt", stream);
76         OpenRocketDocument doc = loader.loadFromStream(new BufferedInputStream(stream));
77         
78         assertNotNull(doc);
79         Rocket rocket = doc.getRocket();
80         assertNotNull(rocket);
81         assertEquals("FooBar Test", doc.getRocket().getName());
82         assertTrue(loader.getWarnings().isEmpty());
83
84         stream = this.getClass().getResourceAsStream("rocksimTestRocket2.rkt");
85         assertNotNull("Could not open rocksimTestRocket2.rkt", stream);
86         doc = loader.loadFromStream(new BufferedInputStream(stream));
87         
88         assertNotNull(doc);
89         rocket = doc.getRocket();
90         assertNotNull(rocket);
91
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());
106
107         stream = this.getClass().getResourceAsStream("rocksimTestRocket3.rkt");
108         assertNotNull("Could not open rocksimTestRocket3.rkt", stream);
109         doc = loader.loadFromStream(new BufferedInputStream(stream));
110         
111         assertNotNull(doc);
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);
119         
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());
130         
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);
137         
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);
145     }
146
147 }