1 package net.sf.openrocket.rocketcomponent;
3 import static org.junit.Assert.*;
7 import net.sf.openrocket.gui.util.ColorConversion;
8 import net.sf.openrocket.material.Material;
9 import net.sf.openrocket.material.Material.Type;
10 import net.sf.openrocket.rocketcomponent.ExternalComponent.Finish;
11 import net.sf.openrocket.rocketcomponent.FinSet.CrossSection;
12 import net.sf.openrocket.rocketcomponent.FinSet.TabRelativePosition;
13 import net.sf.openrocket.rocketcomponent.RocketComponent.Position;
14 import net.sf.openrocket.util.LineStyle;
15 import net.sf.openrocket.util.BaseTestCase.BaseTestCase;
17 import org.junit.Test;
19 public class FinSetTest extends BaseTestCase {
23 public void testFreeformConvert() {
24 testFreeformConvert(new TrapezoidFinSet());
25 testFreeformConvert(new EllipticalFinSet());
26 testFreeformConvert(new FreeformFinSet());
30 private void testFreeformConvert(FinSet fin) {
31 FreeformFinSet converted;
32 Material mat = Material.newMaterial(Type.BULK, "foo", 0.1, true);
34 fin.setBaseRotation(1.1);
35 fin.setCantAngle(0.001);
36 fin.setCGOverridden(true);
37 fin.setColor(ColorConversion.fromAwtColor(Color.YELLOW));
38 fin.setComment("cmt");
39 fin.setCrossSection(CrossSection.ROUNDED);
41 fin.setFinish(Finish.ROUGH);
42 fin.setLineStyle(LineStyle.DASHDOT);
43 fin.setMassOverridden(true);
45 fin.setOverrideCGX(0.012);
46 fin.setOverrideMass(0.0123);
47 fin.setOverrideSubcomponents(true);
48 fin.setPositionValue(0.1);
49 fin.setRelativePosition(Position.ABSOLUTE);
50 fin.setTabHeight(0.01);
51 fin.setTabLength(0.02);
52 fin.setTabRelativePosition(TabRelativePosition.END);
53 fin.setTabShift(0.015);
54 fin.setThickness(0.005);
57 converted = FreeformFinSet.convertFinSet((FinSet) fin.copy());
59 ComponentCompare.assertSimilarity(fin, converted, true);
61 assertEquals(converted.getComponentName(), converted.getName());
65 Rocket rocket = new Rocket();
66 Stage stage = new Stage();
67 BodyTube body = new BodyTube();
69 rocket.addChild(stage);
73 Listener l1 = new Listener("l1");
74 rocket.addComponentChangeListener(l1);
76 fin.setName("Custom name");
77 assertTrue(l1.changed);
78 assertEquals(ComponentChangeEvent.NONFUNCTIONAL_CHANGE, l1.changetype);
82 RocketComponent rocketcopy = rocket.copy();
84 Listener l2 = new Listener("l2");
85 rocketcopy.addComponentChangeListener(l2);
87 FinSet fincopy = (FinSet) rocketcopy.getChild(0).getChild(0).getChild(0);
88 FreeformFinSet.convertFinSet(fincopy);
90 assertTrue(l2.changed);
91 assertEquals(ComponentChangeEvent.TREE_CHANGE,
92 l2.changetype & ComponentChangeEvent.TREE_CHANGE);
97 private static class Listener implements ComponentChangeListener {
98 private boolean changed = false;
99 private int changetype = 0;
100 private final String name;
102 public Listener(String name) {
107 public void componentChanged(ComponentChangeEvent e) {
108 assertFalse("Ensuring listener " + name + " has not been called.", changed);
110 changetype = e.getType();