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.NoseCone; 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 NoseCone RocketComponents through * the NoseCone.loadFromPreset mechanism. * * Test NoseCone is well defined. * * Test calling setters on NoseCone will clear the ComponentPreset. * */ public class NoseConeComponentTests extends BaseTestCase { ComponentPreset preset; @Before public void createPreset() throws Exception { TypedPropertyMap presetspec = new TypedPropertyMap(); presetspec.put(ComponentPreset.TYPE, ComponentPreset.Type.NOSE_CONE); 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.AFT_SHOULDER_LENGTH, 1.0); presetspec.put(ComponentPreset.AFT_SHOULDER_DIAMETER, 1.0); 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() { NoseCone nc = new NoseCone(); assertSame(ComponentPreset.Type.NOSE_CONE, nc.getPresetType()); } @Test public void testLoadFromPresetIsSane() { NoseCone nc = new NoseCone(); nc.loadPreset(preset); assertEquals(2.0, nc.getLength(), 0.0); assertSame(Transition.Shape.CONICAL, nc.getType()); assertEquals(1.0, nc.getAftRadius(), 0.0); assertEquals(0.0, nc.getForeShoulderLength(), 0.0); assertEquals(0.0, nc.getForeShoulderRadius(), 0.0); assertEquals(1.0, nc.getAftShoulderLength(), 0.0); assertEquals(0.5, nc.getAftShoulderRadius(), 0.0); assertEquals(0.5, nc.getAftShoulderThickness(), 0.0); assertFalse(nc.isForeRadiusAutomatic()); assertFalse(nc.isAftRadiusAutomatic()); assertTrue(nc.isFilled()); assertSame(preset.get(ComponentPreset.MATERIAL), nc.getMaterial()); assertEquals(100.0, nc.getMass(), 0.05); } @Test public void changeLengthClearsPreset() { NoseCone nc = new NoseCone(); nc.loadPreset(preset); nc.setLength(1.0); assertNull(nc.getPresetComponent()); } @Test public void changeAftRadiusClearsPreset() { NoseCone nc = new NoseCone(); nc.loadPreset(preset); nc.setAftRadius(2.0); assertNull(nc.getPresetComponent()); } @Test public void changeAftRadiusAutomaticClearsPreset() { NoseCone nc = new NoseCone(); nc.loadPreset(preset); nc.setAftRadiusAutomatic(true); assertNull(nc.getPresetComponent()); } @Test public void changeAftShoulderRadiusClearsPreset() { NoseCone nc = new NoseCone(); nc.loadPreset(preset); nc.setAftShoulderRadius(2.0); assertNull(nc.getPresetComponent()); } @Test public void changeAftSholderLengthLeavesPreset() { NoseCone nc = new NoseCone(); nc.loadPreset(preset); nc.setAftShoulderLength(2.0); assertSame(preset, nc.getPresetComponent()); } @Test public void changeThicknessClearsPreset() { NoseCone nc = new NoseCone(); nc.loadPreset(preset); nc.setThickness(0.1); assertNull(nc.getPresetComponent()); } @Test public void changeFilledClearsPreset() { NoseCone nc = new NoseCone(); nc.loadPreset(preset); nc.setFilled(false); assertNull(nc.getPresetComponent()); } @Test public void changeMaterialClearsPreset() { NoseCone nc = new NoseCone(); nc.loadPreset(preset); nc.setMaterial(Material.newMaterial(Material.Type.BULK, "new", 1.0, true)); assertNull(nc.getPresetComponent()); } @Test public void changeFinishLeavesPreset() { NoseCone nc = new NoseCone(); nc.loadPreset(preset); nc.setFinish(Finish.POLISHED); assertSame(preset, nc.getPresetComponent()); } }