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.Parachute; import net.sf.openrocket.util.BaseTestCase.BaseTestCase; import org.junit.Before; import org.junit.Test; /** * Test application of ComponentPresets to Parachute RocketComponents through * the Parachute.loadFromPreset mechanism. * * Test Parachute is well defined. * * Test calling setters on Parachute will clear the ComponentPreset. * */ public class ParachuterComponentTests extends BaseTestCase { ComponentPreset preset; @Before public void createPreset() throws Exception { TypedPropertyMap presetspec = new TypedPropertyMap(); presetspec.put(ComponentPreset.TYPE, ComponentPreset.Type.PARACHUTE); presetspec.put(ComponentPreset.MANUFACTURER, Manufacturer.getManufacturer("manufacturer")); presetspec.put(ComponentPreset.PARTNO, "partno"); presetspec.put(ComponentPreset.DIAMETER, 20.0); presetspec.put(ComponentPreset.LINE_COUNT, 8); presetspec.put(ComponentPreset.LINE_LENGTH, 12.0); Material m = Material.newMaterial(Material.Type.SURFACE, "testMaterial", 2.0, true); presetspec.put(ComponentPreset.MATERIAL, m); m = Material.newMaterial(Material.Type.LINE, "testLineMaterial", 3, true); presetspec.put(ComponentPreset.LINE_MATERIAL, m); preset = ComponentPresetFactory.create(presetspec); } @Test public void testComponentType() { Parachute cr = new Parachute(); assertSame(ComponentPreset.Type.PARACHUTE, cr.getPresetType()); } @Test public void testLoadFromPresetIsSane() { Parachute cr = new Parachute(); cr.loadPreset(preset); assertEquals(20.0, cr.getDiameter(), 0.0); assertEquals(8, cr.getLineCount(), 0.0); assertEquals(12.0, cr.getLineLength(), 0.0); assertSame(preset.get(ComponentPreset.MATERIAL), cr.getMaterial()); assertSame(preset.get(ComponentPreset.LINE_MATERIAL), cr.getLineMaterial()); } @Test public void changeDiameterClearsPreset() { Parachute cr = new Parachute(); cr.loadPreset(preset); cr.setDiameter(1.0); assertNull(cr.getPresetComponent()); } @Test public void changeAreaClearsPreset() { Parachute cr = new Parachute(); cr.loadPreset(preset); cr.setArea(1.0); assertNull(cr.getPresetComponent()); } @Test public void changeLineCountClearsPreset() { Parachute cr = new Parachute(); cr.loadPreset(preset); cr.setLineCount(12); assertNull(cr.getPresetComponent()); } @Test public void changeLineLengthLeavesPreset() { Parachute cr = new Parachute(); cr.loadPreset(preset); cr.setLineLength(24); assertSame(preset, cr.getPresetComponent()); } @Test public void changeMaterialClearsPreset() { Parachute cr = new Parachute(); cr.loadPreset(preset); cr.setMaterial(Material.newMaterial(Material.Type.SURFACE, "new", 1.0, true)); assertNull(cr.getPresetComponent()); } @Test public void changeLineMaterialLeavesPreset() { Parachute cr = new Parachute(); cr.loadPreset(preset); cr.setLineMaterial(Material.newMaterial(Material.Type.LINE, "new", 1.0, true)); assertSame(preset, cr.getPresetComponent()); } }