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());
}
}