Merge commit '42b2e5ca519766e37ce6941ba4faecc9691cc403' into upstream
[debian/openrocket] / core / test / net / sf / openrocket / preset / TransitionComponentTests.java
diff --git a/core/test/net/sf/openrocket/preset/TransitionComponentTests.java b/core/test/net/sf/openrocket/preset/TransitionComponentTests.java
new file mode 100644 (file)
index 0000000..9826613
--- /dev/null
@@ -0,0 +1,210 @@
+package net.sf.openrocket.preset;
+
+import static org.junit.Assert.*;
+import net.sf.openrocket.material.Material;
+import net.sf.openrocket.motor.Manufacturer;
+import net.sf.openrocket.rocketcomponent.ExternalComponent.Finish;
+import net.sf.openrocket.rocketcomponent.Transition;
+import net.sf.openrocket.util.BaseTestCase.BaseTestCase;
+
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Test application of ComponentPresets to Transition RocketComponents through
+ * the Transition.loadFromPreset mechanism.
+ * 
+ * Test Transition is well defined.
+ * 
+ * Test calling setters on Transition will clear the ComponentPreset.
+ * 
+ */
+public class TransitionComponentTests extends BaseTestCase {
+       
+       ComponentPreset preset;
+       
+       @Before
+       public void createPreset() throws Exception {
+               TypedPropertyMap presetspec = new TypedPropertyMap();
+               presetspec.put(ComponentPreset.TYPE, ComponentPreset.Type.TRANSITION);
+               presetspec.put(ComponentPreset.MANUFACTURER, Manufacturer.getManufacturer("manufacturer"));
+               presetspec.put(ComponentPreset.PARTNO, "partno");
+               presetspec.put(ComponentPreset.LENGTH, 2.0);
+               presetspec.put(ComponentPreset.SHAPE, Transition.Shape.CONICAL);
+               presetspec.put(ComponentPreset.AFT_OUTER_DIAMETER, 2.0);
+               presetspec.put(ComponentPreset.FORE_OUTER_DIAMETER, 1.0);
+               presetspec.put(ComponentPreset.AFT_SHOULDER_LENGTH, 1.0);
+               presetspec.put(ComponentPreset.AFT_SHOULDER_DIAMETER, 1.0);
+               presetspec.put(ComponentPreset.FORE_SHOULDER_LENGTH, 1.0);
+               presetspec.put(ComponentPreset.FORE_SHOULDER_DIAMETER, 0.5);
+               presetspec.put(ComponentPreset.FILLED, true);
+               presetspec.put(ComponentPreset.MASS, 100.0);
+               presetspec.put(ComponentPreset.MATERIAL, Material.newMaterial(Material.Type.BULK, "test", 2.0, true));
+               preset = ComponentPresetFactory.create(presetspec);
+       }
+       
+       @Test
+       public void testComponentType() {
+               Transition tr = new Transition();
+               
+               assertSame(ComponentPreset.Type.TRANSITION, tr.getPresetType());
+       }
+       
+       @Test
+       public void testLoadFromPresetIsSane() {
+               Transition tr = new Transition();
+               
+               tr.loadPreset(preset);
+               
+               assertEquals(2.0, tr.getLength(), 0.0);
+               assertSame(Transition.Shape.CONICAL, tr.getType());
+               assertEquals(1.0, tr.getAftRadius(), 0.0);
+               assertEquals(1.0, tr.getForeShoulderLength(), 0.0);
+               assertEquals(0.25, tr.getForeShoulderRadius(), 0.0);
+               assertEquals(0.25, tr.getForeShoulderThickness(), 0.0);
+               assertEquals(1.0, tr.getAftShoulderLength(), 0.0);
+               assertEquals(0.5, tr.getAftShoulderRadius(), 0.0);
+               assertEquals(0.5, tr.getAftShoulderThickness(), 0.0);
+               
+               assertFalse(tr.isForeRadiusAutomatic());
+               assertFalse(tr.isAftRadiusAutomatic());
+               assertTrue(tr.isFilled());
+               
+               assertSame(preset.get(ComponentPreset.MATERIAL), tr.getMaterial());
+               assertEquals(100.0, tr.getMass(), 1.0);
+       }
+       
+       @Test
+       public void changeLengthClearsPreset() {
+               Transition tr = new Transition();
+               
+               tr.loadPreset(preset);
+               
+               tr.setLength(1.0);
+               
+               assertNull(tr.getPresetComponent());
+       }
+       
+       @Test
+       public void changeAftRadiusClearsPreset() {
+               Transition tr = new Transition();
+               
+               tr.loadPreset(preset);
+               
+               tr.setAftRadius(2.0);
+               
+               assertNull(tr.getPresetComponent());
+       }
+       
+       @Test
+       public void changeAftRadiusAutomaticClearsPreset() {
+               Transition tr = new Transition();
+               
+               tr.loadPreset(preset);
+               
+               tr.setAftRadiusAutomatic(true);
+               
+               assertNull(tr.getPresetComponent());
+       }
+       
+       @Test
+       public void changeForeRadiusClearsPreset() {
+               Transition tr = new Transition();
+               
+               tr.loadPreset(preset);
+               
+               tr.setForeRadius(2.0);
+               
+               assertNull(tr.getPresetComponent());
+       }
+       
+       @Test
+       public void changeForeRadiusAutomaticClearsPreset() {
+               Transition tr = new Transition();
+               
+               tr.loadPreset(preset);
+               
+               tr.setForeRadiusAutomatic(true);
+               
+               assertNull(tr.getPresetComponent());
+       }
+       
+       @Test
+       public void changeForeShoulderRadiusClearsPreset() {
+               Transition tr = new Transition();
+               
+               tr.loadPreset(preset);
+               
+               tr.setForeShoulderRadius(2.0);
+               
+               assertNull(tr.getPresetComponent());
+       }
+       
+       @Test
+       public void changeAftShoulderRadiusClearsPreset() {
+               Transition tr = new Transition();
+               
+               tr.loadPreset(preset);
+               
+               tr.setAftShoulderRadius(2.0);
+               
+               assertNull(tr.getPresetComponent());
+       }
+       
+       @Test
+       public void changeAftSholderLengthLeavesPreset() {
+               Transition tr = new Transition();
+               
+               tr.loadPreset(preset);
+               
+               tr.setAftShoulderLength(2.0);
+               
+               assertSame(preset, tr.getPresetComponent());
+       }
+       
+       @Test
+       public void changeThicknessClearsPreset() {
+               Transition tr = new Transition();
+               
+               tr.loadPreset(preset);
+               
+               tr.setThickness(0.1);
+               
+               assertNull(tr.getPresetComponent());
+       }
+       
+       
+       @Test
+       public void changeFilledClearsPreset() {
+               Transition tr = new Transition();
+               
+               tr.loadPreset(preset);
+               
+               tr.setFilled(false);
+               
+               assertNull(tr.getPresetComponent());
+       }
+       
+       @Test
+       public void changeMaterialClearsPreset() {
+               Transition tr = new Transition();
+               
+               tr.loadPreset(preset);
+               
+               tr.setMaterial(Material.newMaterial(Material.Type.BULK, "new", 1.0, true));
+               
+               assertNull(tr.getPresetComponent());
+       }
+       
+       @Test
+       public void changeFinishLeavesPreset() {
+               Transition tr = new Transition();
+               
+               tr.loadPreset(preset);
+               
+               tr.setFinish(Finish.POLISHED);
+               
+               assertSame(preset, tr.getPresetComponent());
+       }
+       
+}