Material localization support
[debian/openrocket] / core / test / net / sf / openrocket / preset / BodyTubeComponentTests.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.BodyTube;
7 import net.sf.openrocket.rocketcomponent.ExternalComponent.Finish;
8 import net.sf.openrocket.util.BaseTestCase.BaseTestCase;
9
10 import org.junit.Before;
11 import org.junit.Test;
12
13 /**
14  * Test application of ComponentPresets to BodyTube RocketComponents through
15  * the BodyTube.loadFromPreset mechanism.
16  * 
17  * Test BodyTube is well defined.
18  * 
19  * Test calling setters on BodyTube will clear the ComponentPreset.
20  * 
21  */
22 public class BodyTubeComponentTests extends BaseTestCase {
23         
24         ComponentPreset preset;
25         
26         @Before
27         public void createPreset() throws Exception {
28                 TypedPropertyMap presetspec = new TypedPropertyMap();
29                 presetspec.put(ComponentPreset.TYPE, ComponentPreset.Type.BODY_TUBE);
30                 presetspec.put(ComponentPreset.MANUFACTURER, Manufacturer.getManufacturer("manufacturer"));
31                 presetspec.put(ComponentPreset.PARTNO, "partno");
32                 presetspec.put(ComponentPreset.LENGTH, 2.0);
33                 presetspec.put(ComponentPreset.OUTER_DIAMETER, 2.0);
34                 presetspec.put(ComponentPreset.INNER_DIAMETER, 1.0);
35                 presetspec.put(ComponentPreset.MASS, 100.0);
36                 preset = ComponentPresetFactory.create(presetspec);
37         }
38         
39         @Test
40         public void testComponentType() {
41                 BodyTube bt = new BodyTube();
42                 
43                 assertSame(ComponentPreset.Type.BODY_TUBE, bt.getPresetType());
44         }
45         
46         @Test
47         public void testLoadFromPresetIsSane() {
48                 BodyTube bt = new BodyTube();
49                 
50                 bt.loadPreset(preset);
51                 
52                 assertEquals(2.0, bt.getLength(), 0.0);
53                 assertEquals(1.0, bt.getOuterRadius(), 0.0);
54                 assertEquals(1.0, bt.getAftRadius(), 0.0);
55                 assertEquals(0.5, bt.getInnerRadius(), 0.0);
56                 
57                 assertFalse(bt.isAftRadiusAutomatic());
58                 assertFalse(bt.isFilled());
59                 assertFalse(bt.isForeRadiusAutomatic());
60                 assertFalse(bt.isOuterRadiusAutomatic());
61                 
62                 assertSame(preset.get(ComponentPreset.MATERIAL), bt.getMaterial());
63                 assertEquals(100.0, bt.getMass(), 0.05);
64         }
65         
66         @Test
67         public void changeLengthLeavesPreset() {
68                 BodyTube bt = new BodyTube();
69                 
70                 bt.loadPreset(preset);
71                 
72                 bt.setLength(1.0);
73                 
74                 assertSame(preset, bt.getPresetComponent());
75         }
76         
77         @Test
78         public void changeODClearsPreset() {
79                 BodyTube bt = new BodyTube();
80                 
81                 bt.loadPreset(preset);
82                 
83                 bt.setOuterRadius(2.0);
84                 
85                 assertNull(bt.getPresetComponent());
86         }
87         
88         @Test
89         public void changeIDClearsPreset() {
90                 BodyTube bt = new BodyTube();
91                 
92                 bt.loadPreset(preset);
93                 
94                 bt.setInnerRadius(0.75);
95                 
96                 assertNull(bt.getPresetComponent());
97         }
98         
99         @Test
100         public void changeThicknessClearsPreset() {
101                 BodyTube bt = new BodyTube();
102                 
103                 bt.loadPreset(preset);
104                 
105                 bt.setThickness(0.1);
106                 
107                 assertNull(bt.getPresetComponent());
108         }
109         
110         @Test
111         public void changeMaterialClearsPreset() {
112                 BodyTube bt = new BodyTube();
113                 
114                 bt.loadPreset(preset);
115                 
116                 bt.setMaterial(Material.newMaterial(Material.Type.BULK, "new", 1.0, true));
117                 
118                 assertNull(bt.getPresetComponent());
119         }
120         
121         @Test
122         public void changeFinishLeavesPreset() {
123                 BodyTube bt = new BodyTube();
124                 
125                 bt.loadPreset(preset);
126                 
127                 bt.setFinish(Finish.POLISHED);
128                 
129                 assertSame(preset, bt.getPresetComponent());
130         }
131         
132         @Test
133         public void changeFillClearsPreset() {
134                 BodyTube bt = new BodyTube();
135                 
136                 bt.loadPreset(preset);
137                 
138                 bt.setFilled(true);
139                 
140                 assertNull(bt.getPresetComponent());
141         }
142 }