1 package net.sf.openrocket.gui.configdialog;
3 import net.sf.openrocket.gui.adaptors.DoubleModel;
4 import net.sf.openrocket.rocketcomponent.CenteringRing;
5 import org.junit.Assert;
6 import org.junit.BeforeClass;
9 import java.lang.reflect.Method;
10 import java.util.ArrayList;
11 import java.util.List;
13 public class FinSetConfigTest {
18 public static void classSetup() throws Exception {
19 method = FinSetConfig.class.getDeclaredMethod("computeFinTabLength", List.class, Double.class, Double.class, DoubleModel.class);
20 Assert.assertNotNull(method);
21 method.setAccessible(true);
25 * Test no centering rings.
30 public void testComputeFinTabLength() throws Exception {
31 DoubleModel dm = new DoubleModel(1d);
32 List<CenteringRing> rings = new ArrayList<CenteringRing>();
34 Double result = (Double)method.invoke(null, rings, 10d, 11d, dm);
35 Assert.assertEquals(0.0001, 11d, result.doubleValue());
36 result = (Double)method.invoke(null, null, 10d, 11d, dm);
37 Assert.assertEquals(11d, result.doubleValue(), 0.0001);
41 * Test 2 rings both ahead of the fin.
44 public void testCompute2LeadingRings() throws Exception {
45 DoubleModel dm = new DoubleModel(1d);
46 List<CenteringRing> rings = new ArrayList<CenteringRing>();
48 CenteringRing ring1 = new CenteringRing();
49 ring1.setLength(0.004);
50 ring1.setPositionValue(0.43);
51 CenteringRing ring2 = new CenteringRing();
52 ring2.setLength(0.004);
53 ring2.setPositionValue(0.45);
57 Double result = (Double)method.invoke(null, rings, 0.47d, 0.01, dm);
58 Assert.assertEquals(0.01, result.doubleValue(), 0.0001);
63 * Test one ring, ahead of the fin.
66 public void testCompute1Ring() throws Exception {
67 DoubleModel dm = new DoubleModel(1d);
68 List<CenteringRing> rings = new ArrayList<CenteringRing>();
70 CenteringRing ring1 = new CenteringRing();
71 ring1.setLength(0.004);
72 ring1.setPositionValue(0.43);
75 Double result = (Double)method.invoke(null, rings, 0.47d, 0.01, dm);
76 Assert.assertEquals(0.01, result.doubleValue(), 0.0001);
80 * Test one ring ahead of the fin, one ring within the root chord.
83 public void testComputeOneLeadingOneRingWithinRoot() throws Exception {
84 DoubleModel dm = new DoubleModel(1d);
85 List<CenteringRing> rings = new ArrayList<CenteringRing>();
87 CenteringRing ring1 = new CenteringRing();
88 ring1.setLength(0.004);
89 ring1.setPositionValue(0.43);
90 CenteringRing ring2 = new CenteringRing();
91 ring2.setLength(0.004);
92 ring2.setPositionValue(0.45);
96 Double result = (Double)method.invoke(null, rings, 0.45d, 0.01, dm);
97 Assert.assertEquals(0.01 - 0.004, result.doubleValue(), 0.0001);
101 * Test one ring ahead of the fin, one ring beyond the root chord.
104 public void testComputeOneLeadingOneTrailingRing() throws Exception {
105 DoubleModel dm = new DoubleModel(1d);
106 List<CenteringRing> rings = new ArrayList<CenteringRing>();
108 CenteringRing ring1 = new CenteringRing();
109 ring1.setLength(0.004);
110 ring1.setPositionValue(0.43);
111 CenteringRing ring2 = new CenteringRing();
112 ring2.setLength(0.004);
113 ring2.setPositionValue(0.48);
117 Double result = (Double)method.invoke(null, rings, 0.47d, 0.01, dm);
118 Assert.assertEquals(0.01, result.doubleValue(), 0.0001);
122 * Test one ring within the root chord, another ring beyond the root chord.
125 public void testComputeOneWithinRootOneTrailingRing() throws Exception {
126 DoubleModel dm = new DoubleModel(1d);
127 List<CenteringRing> rings = new ArrayList<CenteringRing>();
129 CenteringRing ring1 = new CenteringRing();
130 ring1.setLength(0.004);
131 ring1.setPositionValue(0.4701);
132 CenteringRing ring2 = new CenteringRing();
133 ring2.setLength(0.004);
134 ring2.setPositionValue(0.48);
138 Double result = (Double)method.invoke(null, rings, 0.47d, 0.01, dm);
139 Assert.assertEquals(0.0059, result.doubleValue(), 0.0001);
143 * Test both rings within the root chord.
146 public void testBothRingsWithinRootChord() throws Exception {
147 DoubleModel dm = new DoubleModel(1d);
148 List<CenteringRing> rings = new ArrayList<CenteringRing>();
150 CenteringRing ring1 = new CenteringRing();
151 ring1.setLength(0.004);
152 ring1.setPositionValue(0.4701);
153 CenteringRing ring2 = new CenteringRing();
154 ring2.setLength(0.004);
155 ring2.setPositionValue(0.4750);
159 Double result = (Double)method.invoke(null, rings, 0.47d, 0.01, dm);
160 Assert.assertEquals(0.0009, result.doubleValue(), 0.0001);
165 * Test both rings beyond the root chord.
168 public void testBothRingsBeyondRootChord() throws Exception {
169 DoubleModel dm = new DoubleModel(1d);
170 List<CenteringRing> rings = new ArrayList<CenteringRing>();
172 CenteringRing ring1 = new CenteringRing();
173 ring1.setLength(0.004);
174 ring1.setPositionValue(0.48);
175 CenteringRing ring2 = new CenteringRing();
176 ring2.setLength(0.004);
177 ring2.setPositionValue(0.49);
181 Double result = (Double)method.invoke(null, rings, 0.47d, 0.01, dm);
182 Assert.assertEquals(0.006, result.doubleValue(), 0.0001);
186 * Test both rings within the root chord - the top ring has an adjacent ring (so 3 rings total).
189 public void test3RingsWithinRootChord() throws Exception {
190 DoubleModel dm = new DoubleModel(1d);
191 List<CenteringRing> rings = new ArrayList<CenteringRing>();
193 CenteringRing ring1 = new CenteringRing();
194 ring1.setLength(0.004);
195 ring1.setPositionValue(0.47);
196 CenteringRing ring2 = new CenteringRing();
197 ring2.setLength(0.004);
198 ring2.setPositionValue(0.4702);
199 CenteringRing ring3 = new CenteringRing();
200 ring3.setLength(0.004);
201 ring3.setPositionValue(0.4770);
206 Double result = (Double)method.invoke(null, rings, 0.47d, 0.01, dm);
207 Assert.assertEquals(0.0028, result.doubleValue(), 0.0001);