e4a954e6da0c51e3085051d8bd6fc12b492f7faf
[debian/openrocket] / core / test / net / sf / openrocket / preset / NoseConeComponentTests.java
1 package net.sf.openrocket.preset;
2
3 import static org.junit.Assert.*;
4 import net.sf.openrocket.material.Material;
5 import net.sf.openrocket.motor.Manufacturer;
6 import net.sf.openrocket.rocketcomponent.NoseCone;
7 import net.sf.openrocket.rocketcomponent.Transition;
8 import net.sf.openrocket.rocketcomponent.ExternalComponent.Finish;
9 import net.sf.openrocket.util.BaseTestCase.BaseTestCase;
10
11 import org.junit.Before;
12 import org.junit.Test;
13
14 /**
15  * Test application of ComponentPresets to NoseCone RocketComponents through
16  * the NoseCone.loadFromPreset mechanism.
17  * 
18  * Test NoseCone is well defined.
19  * 
20  * Test calling setters on NoseCone will clear the ComponentPreset.
21  * 
22  */
23 public class NoseConeComponentTests extends BaseTestCase {
24
25         ComponentPreset preset;
26         
27         @Before
28         public void createPreset() throws Exception {
29                 TypedPropertyMap presetspec = new TypedPropertyMap();
30                 presetspec.put(ComponentPreset.TYPE, ComponentPreset.Type.NOSE_CONE);
31                 presetspec.put( ComponentPreset.MANUFACTURER, Manufacturer.getManufacturer("manufacturer"));
32                 presetspec.put( ComponentPreset.PARTNO, "partno");
33                 presetspec.put( ComponentPreset.LENGTH, 2.0);
34                 presetspec.put( ComponentPreset.SHAPE, Transition.Shape.CONICAL);
35                 presetspec.put( ComponentPreset.AFT_OUTER_DIAMETER, 2.0);
36                 presetspec.put( ComponentPreset.AFT_SHOULDER_LENGTH, 1.0);
37                 presetspec.put( ComponentPreset.AFT_SHOULDER_DIAMETER, 1.0);
38                 presetspec.put( ComponentPreset.FILLED, true);
39                 presetspec.put( ComponentPreset.MASS, 100.0);
40                 presetspec.put( ComponentPreset.MATERIAL, Material.newUserMaterial(Material.Type.BULK,"test", 2.0));
41                 preset = ComponentPresetFactory.create(presetspec);
42         }
43
44         @Test
45         public void testComponentType() {
46                 NoseCone nc = new NoseCone();
47                 
48                 assertSame( ComponentPreset.Type.NOSE_CONE, nc.getPresetType() );
49         }
50         
51         @Test
52         public void testLoadFromPresetIsSane() {
53                 NoseCone nc = new NoseCone();
54                 
55                 nc.loadPreset(preset);
56                 
57                 assertEquals( 2.0, nc.getLength(), 0.0 );
58                 assertSame( Transition.Shape.CONICAL, nc.getType() );
59                 assertEquals( 1.0, nc.getAftRadius(), 0.0 );
60                 assertEquals( 0.0, nc.getForeShoulderLength(), 0.0 );
61                 assertEquals( 0.0, nc.getForeShoulderRadius(), 0.0 );
62                 assertEquals( 1.0, nc.getAftShoulderLength(), 0.0 );
63                 assertEquals( 0.5, nc.getAftShoulderRadius(), 0.0 );
64                 assertEquals( 0.5, nc.getAftShoulderThickness(), 0.0 );
65
66                 assertFalse( nc.isForeRadiusAutomatic() );
67                 assertFalse( nc.isAftRadiusAutomatic() );
68                 assertTrue( nc.isFilled() );
69                 
70                 assertSame( preset.get( ComponentPreset.MATERIAL), nc.getMaterial() );
71                 assertEquals( 100.0, nc.getMass(), 0.05);
72         }
73         
74         @Test
75         public void changeLengthClearsPreset() {
76                 NoseCone nc = new NoseCone();
77                 
78                 nc.loadPreset(preset);
79
80                 nc.setLength(1.0);
81                 
82                 assertNull( nc.getPresetComponent() );
83         }
84
85         @Test
86         public void changeAftRadiusClearsPreset() {
87                 NoseCone nc = new NoseCone();
88                 
89                 nc.loadPreset(preset);
90
91                 nc.setAftRadius(2.0);
92                 
93                 assertNull( nc.getPresetComponent() );
94         }
95
96         @Test
97         public void changeAftRadiusAutomaticClearsPreset() {
98                 NoseCone nc = new NoseCone();
99                 
100                 nc.loadPreset(preset);
101
102                 nc.setAftRadiusAutomatic(true);
103                 
104                 assertNull( nc.getPresetComponent() );
105         }
106
107         @Test
108         public void changeAftShoulderRadiusClearsPreset() {
109                 NoseCone nc = new NoseCone();
110                 
111                 nc.loadPreset(preset);
112
113                 nc.setAftShoulderRadius(2.0);
114                 
115                 assertNull( nc.getPresetComponent() );
116         }
117
118         @Test
119         public void changeAftSholderLengthLeavesPreset() {
120                 NoseCone nc = new NoseCone();
121                 
122                 nc.loadPreset(preset);
123
124                 nc.setAftShoulderLength(2.0);
125                 
126                 assertSame( preset, nc.getPresetComponent() );
127         }
128
129         @Test
130         public void changeThicknessClearsPreset() {
131                 NoseCone nc = new NoseCone();
132                 
133                 nc.loadPreset(preset);
134
135                 nc.setThickness(0.1);
136                 
137                 assertNull( nc.getPresetComponent() );
138         }
139
140
141         @Test
142         public void changeFilledClearsPreset() {
143                 NoseCone nc = new NoseCone();
144                 
145                 nc.loadPreset(preset);
146
147                 nc.setFilled(false);
148                 
149                 assertNull( nc.getPresetComponent() );
150         }
151
152         @Test
153         public void changeMaterialClearsPreset() {
154                 NoseCone nc = new NoseCone();
155                 
156                 nc.loadPreset(preset);
157
158                 nc.setMaterial( Material.newUserMaterial(Material.Type.BULK,"new", 1.0));
159                 
160                 assertNull( nc.getPresetComponent() );
161         }
162
163         @Test
164         public void changeFinishLeavesPreset() {
165                 NoseCone nc = new NoseCone();
166                 
167                 nc.loadPreset(preset);
168
169                 nc.setFinish( Finish.POLISHED );
170                 
171                 assertSame( preset, nc.getPresetComponent() );
172         }
173
174 }