07f45a5171c8f5f9a47028bcc6ecfbcd5c8d5b6c
[debian/openrocket] / core / test / net / sf / openrocket / preset / EngineBlockComponentTests.java
1 package net.sf.openrocket.preset;
2
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertFalse;
5 import static org.junit.Assert.assertNull;
6 import static org.junit.Assert.assertSame;
7 import net.sf.openrocket.material.Material;
8 import net.sf.openrocket.motor.Manufacturer;
9 import net.sf.openrocket.rocketcomponent.EngineBlock;
10 import net.sf.openrocket.util.BaseTestCase.BaseTestCase;
11
12 import org.junit.Before;
13 import org.junit.Test;
14
15 /**
16  * Test application of ComponentPresets to EngineBlock RocketComponents through
17  * the EngineBlock.loadFromPreset mechanism.
18  * 
19  * Test EngineBlock is well defined.
20  * 
21  * Test calling setters on EngineBlock will clear the ComponentPreset.
22  * 
23  */
24 public class EngineBlockComponentTests extends BaseTestCase {
25
26         ComponentPreset preset;
27         
28         @Before
29         public void createPreset() throws Exception {
30                 TypedPropertyMap presetspec = new TypedPropertyMap();
31                 presetspec.put(ComponentPreset.TYPE, ComponentPreset.Type.ENGINE_BLOCK);
32                 presetspec.put( ComponentPreset.MANUFACTURER, Manufacturer.getManufacturer("manufacturer"));
33                 presetspec.put( ComponentPreset.PARTNO, "partno");
34                 presetspec.put( ComponentPreset.LENGTH, 2.0);
35                 presetspec.put( ComponentPreset.OUTER_DIAMETER, 2.0);
36                 presetspec.put( ComponentPreset.INNER_DIAMETER, 1.0);
37                 presetspec.put( ComponentPreset.MASS, 100.0);
38                 preset = ComponentPresetFactory.create(presetspec);
39         }
40
41         @Test
42         public void testComponentType() {
43                 EngineBlock eb = new EngineBlock();
44                 
45                 assertSame( ComponentPreset.Type.ENGINE_BLOCK, eb.getPresetType() );
46         }
47         
48         @Test
49         public void testLoadFromPresetIsSane() {
50                 EngineBlock eb = new EngineBlock();
51                 
52                 eb.loadPreset(preset);
53                 
54                 assertEquals( 2.0, eb.getLength(), 0.0 );
55                 assertEquals( 1.0, eb.getOuterRadius(), 0.0 );
56                 assertEquals( 0.5, eb.getInnerRadius(), 0.0 );
57                 
58                 assertFalse( eb.isOuterRadiusAutomatic() );
59                 
60                 assertSame( preset.get( ComponentPreset.MATERIAL), eb.getMaterial() );
61                 assertEquals( 100.0, eb.getMass(), 0.05);
62         }
63         
64         @Test
65         public void changeLengthLeavesPreset() {
66                 EngineBlock eb = new EngineBlock();
67                 
68                 eb.loadPreset(preset);
69
70                 eb.setLength(1.0);
71                 
72                 assertSame( preset, eb.getPresetComponent() );
73         }
74
75         @Test
76         public void changeODClearsPreset() {
77                 EngineBlock eb = new EngineBlock();
78                 
79                 eb.loadPreset(preset);
80
81                 eb.setOuterRadius(2.0);
82                 
83                 assertNull( eb.getPresetComponent() );
84         }
85
86         @Test
87         public void changeIDClearsPreset() {
88                 EngineBlock eb = new EngineBlock();
89                 
90                 eb.loadPreset(preset);
91
92                 eb.setInnerRadius(0.75);
93                 
94                 assertNull( eb.getPresetComponent() );
95         }
96
97         @Test
98         public void changeThicknessClearsPreset() {
99                 EngineBlock eb = new EngineBlock();
100                 
101                 eb.loadPreset(preset);
102
103                 eb.setThickness(0.1);
104                 
105                 assertNull( eb.getPresetComponent() );
106         }
107
108         @Test
109         public void changeMaterialClearsPreset() {
110                 EngineBlock eb = new EngineBlock();
111                 
112                 eb.loadPreset(preset);
113
114                 eb.setMaterial( Material.newUserMaterial(Material.Type.BULK,"new", 1.0));
115                 
116                 assertNull( eb.getPresetComponent() );
117         }
118
119 }