6263957de50587f1cd5abe1f22d167f6b0b26a11
[debian/openrocket] / core / test / net / sf / openrocket / preset / ParachuterComponentTests.java
1 package net.sf.openrocket.preset;
2
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertNull;
5 import static org.junit.Assert.assertSame;
6 import net.sf.openrocket.material.Material;
7 import net.sf.openrocket.motor.Manufacturer;
8 import net.sf.openrocket.rocketcomponent.Parachute;
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 Parachute RocketComponents through
16  * the Parachute.loadFromPreset mechanism.
17  * 
18  * Test Parachute is well defined.
19  * 
20  * Test calling setters on Parachute will clear the ComponentPreset.
21  * 
22  */
23 public class ParachuterComponentTests 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.PARACHUTE);
31                 presetspec.put( ComponentPreset.MANUFACTURER, Manufacturer.getManufacturer("manufacturer"));
32                 presetspec.put( ComponentPreset.PARTNO, "partno");
33                 presetspec.put( ComponentPreset.DIAMETER, 20.0);
34                 presetspec.put( ComponentPreset.LINE_COUNT, 8);
35                 presetspec.put( ComponentPreset.LINE_LENGTH, 12.0);
36                 Material m = Material.newUserMaterial(Material.Type.SURFACE,"testMaterial", 2.0);
37                 presetspec.put( ComponentPreset.MATERIAL, m);
38                 m = Material.newUserMaterial(Material.Type.LINE,"testLineMaterial", 3);
39                 presetspec.put( ComponentPreset.LINE_MATERIAL, m);
40                 preset = ComponentPresetFactory.create(presetspec);
41         }
42
43         @Test
44         public void testComponentType() {
45                 Parachute cr = new Parachute();
46                 
47                 assertSame( ComponentPreset.Type.PARACHUTE, cr.getPresetType() );
48         }
49         
50         @Test
51         public void testLoadFromPresetIsSane() {
52                 Parachute cr = new Parachute();
53                 
54                 cr.loadPreset(preset);
55                 
56                 assertEquals( 20.0, cr.getDiameter(), 0.0 );
57                 assertEquals( 8, cr.getLineCount(), 0.0 );
58                 assertEquals( 12.0, cr.getLineLength(), 0.0 );
59                 
60                 assertSame( preset.get( ComponentPreset.MATERIAL), cr.getMaterial() );
61                 assertSame( preset.get( ComponentPreset.LINE_MATERIAL), cr.getLineMaterial() );
62         }
63         
64         @Test
65         public void changeDiameterClearsPreset() {
66                 Parachute cr = new Parachute();
67                 
68                 cr.loadPreset(preset);
69
70                 cr.setDiameter(1.0);
71                 
72                 assertNull( cr.getPresetComponent() );
73         }
74
75         @Test
76         public void changeAreaClearsPreset() {
77                 Parachute cr = new Parachute();
78                 
79                 cr.loadPreset(preset);
80
81                 cr.setArea(1.0);
82                 
83                 assertNull( cr.getPresetComponent() );
84         }
85
86         @Test
87         public void changeLineCountClearsPreset() {
88                 Parachute cr = new Parachute();
89                 
90                 cr.loadPreset(preset);
91
92                 cr.setLineCount(12);
93                 
94                 assertNull( cr.getPresetComponent() );
95         }
96
97         @Test
98         public void changeLineLengthLeavesPreset() {
99                 Parachute cr = new Parachute();
100                 
101                 cr.loadPreset(preset);
102
103                 cr.setLineLength(24);
104                 
105                 assertSame( preset, cr.getPresetComponent() );
106         }
107
108         @Test
109         public void changeMaterialClearsPreset() {
110                 Parachute cr = new Parachute();
111                 
112                 cr.loadPreset(preset);
113
114                 cr.setMaterial( Material.newUserMaterial(Material.Type.SURFACE,"new", 1.0));
115                 
116                 assertNull( cr.getPresetComponent() );
117         }
118
119         @Test
120         public void changeLineMaterialLeavesPreset() {
121                 Parachute cr = new Parachute();
122                 
123                 cr.loadPreset(preset);
124
125                 cr.setLineMaterial( Material.newUserMaterial(Material.Type.LINE,"new", 1.0));
126                 
127                 assertSame( preset, cr.getPresetComponent() );
128         }
129
130 }