Add unit tests for overriddenBy
This commit is contained in:
parent
03431b9c41
commit
6d80378a3f
@ -1,32 +1,21 @@
|
|||||||
package net.sf.openrocket.rocketcomponent;
|
package net.sf.openrocket.rocketcomponent;
|
||||||
|
|
||||||
import static org.junit.Assert.assertNotNull;
|
|
||||||
import static org.junit.Assert.assertEquals;
|
|
||||||
import static org.junit.Assert.assertFalse;
|
|
||||||
import static org.junit.Assert.assertTrue;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import org.junit.Test;
|
|
||||||
|
|
||||||
import net.sf.openrocket.aerodynamics.AerodynamicForces;
|
import net.sf.openrocket.aerodynamics.AerodynamicForces;
|
||||||
import net.sf.openrocket.aerodynamics.BarrowmanCalculator;
|
import net.sf.openrocket.aerodynamics.BarrowmanCalculator;
|
||||||
import net.sf.openrocket.aerodynamics.FlightConditions;
|
import net.sf.openrocket.aerodynamics.FlightConditions;
|
||||||
import net.sf.openrocket.aerodynamics.WarningSet;
|
import net.sf.openrocket.aerodynamics.WarningSet;
|
||||||
|
import net.sf.openrocket.util.BaseTestCase.BaseTestCase;
|
||||||
import net.sf.openrocket.rocketcomponent.AxialStage;
|
|
||||||
import net.sf.openrocket.rocketcomponent.BodyTube;
|
|
||||||
import net.sf.openrocket.rocketcomponent.FinSet;
|
|
||||||
import net.sf.openrocket.rocketcomponent.FlightConfiguration;
|
|
||||||
import net.sf.openrocket.rocketcomponent.NoseCone;
|
|
||||||
import net.sf.openrocket.rocketcomponent.Rocket;
|
|
||||||
import net.sf.openrocket.rocketcomponent.RocketComponent;
|
|
||||||
|
|
||||||
import net.sf.openrocket.util.Coordinate;
|
|
||||||
import net.sf.openrocket.util.MathUtil;
|
import net.sf.openrocket.util.MathUtil;
|
||||||
import net.sf.openrocket.util.TestRockets;
|
import net.sf.openrocket.util.TestRockets;
|
||||||
import net.sf.openrocket.util.BaseTestCase.BaseTestCase;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertFalse;
|
||||||
|
import static org.junit.Assert.assertNotNull;
|
||||||
|
import static org.junit.Assert.assertNull;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
public class OverrideTest extends BaseTestCase {
|
public class OverrideTest extends BaseTestCase {
|
||||||
|
|
||||||
@ -109,4 +98,268 @@ public class OverrideTest extends BaseTestCase {
|
|||||||
Map<RocketComponent, AerodynamicForces> forceMap = calc.getForceAnalysis(configuration, conditions, warnings);
|
Map<RocketComponent, AerodynamicForces> forceMap = calc.getForceAnalysis(configuration, conditions, warnings);
|
||||||
assertEquals(sustainer.getOverrideCD() + bodytube.getOverrideCD() + forceMap.get(nosecone).getCD(), forceMap.get(rocket).getCD(), MathUtil.EPSILON);
|
assertEquals(sustainer.getOverrideCD() + bodytube.getOverrideCD() + forceMap.get(nosecone).getCD(), forceMap.get(rocket).getCD(), MathUtil.EPSILON);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test whether children components of a parent that has subcomponents overridden for mass, CG, or CD have the correct
|
||||||
|
* overriddenBy object.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testOverriddenBy() {
|
||||||
|
// Create test rocket
|
||||||
|
Rocket rocket = TestRockets.makeEstesAlphaIII();
|
||||||
|
|
||||||
|
// Obtain the necessary components
|
||||||
|
AxialStage sustainer = rocket.getStage(0);
|
||||||
|
NoseCone noseCone = (NoseCone) sustainer.getChild(0);
|
||||||
|
BodyTube bodyTube = (BodyTube) sustainer.getChild(1);
|
||||||
|
FinSet finSet = (FinSet) bodyTube.getChild(0);
|
||||||
|
LaunchLug launchLug = (LaunchLug) bodyTube.getChild(1);
|
||||||
|
InnerTube innerTube = (InnerTube) bodyTube.getChild(2);
|
||||||
|
EngineBlock engineBlock = (EngineBlock) innerTube.getChild(0);
|
||||||
|
Parachute parachute = (Parachute) bodyTube.getChild(3);
|
||||||
|
CenteringRing bulkhead = (CenteringRing) bodyTube.getChild(4);
|
||||||
|
|
||||||
|
// Check initial override by components
|
||||||
|
assertNull(rocket.getMassOverriddenBy());
|
||||||
|
assertNull(rocket.getCGOverriddenBy());
|
||||||
|
assertNull(rocket.getCDOverriddenBy());
|
||||||
|
assertNull(sustainer.getMassOverriddenBy());
|
||||||
|
assertNull(sustainer.getCGOverriddenBy());
|
||||||
|
assertNull(sustainer.getCDOverriddenBy());
|
||||||
|
assertNull(noseCone.getMassOverriddenBy());
|
||||||
|
assertNull(noseCone.getCGOverriddenBy());
|
||||||
|
assertNull(noseCone.getCDOverriddenBy());
|
||||||
|
assertNull(bodyTube.getMassOverriddenBy());
|
||||||
|
assertNull(bodyTube.getCGOverriddenBy());
|
||||||
|
assertNull(bodyTube.getCDOverriddenBy());
|
||||||
|
assertNull(finSet.getMassOverriddenBy());
|
||||||
|
assertNull(finSet.getCGOverriddenBy());
|
||||||
|
assertNull(finSet.getCDOverriddenBy());
|
||||||
|
assertNull(launchLug.getMassOverriddenBy());
|
||||||
|
assertNull(launchLug.getCGOverriddenBy());
|
||||||
|
assertNull(launchLug.getCDOverriddenBy());
|
||||||
|
assertNull(innerTube.getMassOverriddenBy());
|
||||||
|
assertNull(innerTube.getCGOverriddenBy());
|
||||||
|
assertNull(innerTube.getCDOverriddenBy());
|
||||||
|
assertNull(engineBlock.getMassOverriddenBy());
|
||||||
|
assertNull(engineBlock.getCGOverriddenBy());
|
||||||
|
assertNull(engineBlock.getCDOverriddenBy());
|
||||||
|
assertNull(parachute.getMassOverriddenBy());
|
||||||
|
assertNull(parachute.getCGOverriddenBy());
|
||||||
|
assertNull(parachute.getCDOverriddenBy());
|
||||||
|
assertNull(bulkhead.getMassOverriddenBy());
|
||||||
|
assertNull(bulkhead.getCGOverriddenBy());
|
||||||
|
assertNull(bulkhead.getCDOverriddenBy());
|
||||||
|
|
||||||
|
// Override body tube mass, CG, and CD without for subcomponents
|
||||||
|
bodyTube.setMassOverridden(true);
|
||||||
|
bodyTube.setCGOverridden(true);
|
||||||
|
bodyTube.setCDOverridden(true);
|
||||||
|
|
||||||
|
assertNull(sustainer.getMassOverriddenBy());
|
||||||
|
assertNull(sustainer.getCGOverriddenBy());
|
||||||
|
assertNull(sustainer.getCDOverriddenBy());
|
||||||
|
assertNull(noseCone.getMassOverriddenBy());
|
||||||
|
assertNull(noseCone.getCGOverriddenBy());
|
||||||
|
assertNull(noseCone.getCDOverriddenBy());
|
||||||
|
assertNull(bodyTube.getMassOverriddenBy());
|
||||||
|
assertNull(bodyTube.getCGOverriddenBy());
|
||||||
|
assertNull(bodyTube.getCDOverriddenBy());
|
||||||
|
assertNull(finSet.getMassOverriddenBy());
|
||||||
|
assertNull(finSet.getCGOverriddenBy());
|
||||||
|
assertNull(finSet.getCDOverriddenBy());
|
||||||
|
assertNull(launchLug.getMassOverriddenBy());
|
||||||
|
assertNull(launchLug.getCGOverriddenBy());
|
||||||
|
assertNull(launchLug.getCDOverriddenBy());
|
||||||
|
assertNull(innerTube.getMassOverriddenBy());
|
||||||
|
assertNull(innerTube.getCGOverriddenBy());
|
||||||
|
assertNull(innerTube.getCDOverriddenBy());
|
||||||
|
assertNull(engineBlock.getMassOverriddenBy());
|
||||||
|
assertNull(engineBlock.getCGOverriddenBy());
|
||||||
|
assertNull(engineBlock.getCDOverriddenBy());
|
||||||
|
assertNull(parachute.getMassOverriddenBy());
|
||||||
|
assertNull(parachute.getCGOverriddenBy());
|
||||||
|
assertNull(parachute.getCDOverriddenBy());
|
||||||
|
assertNull(bulkhead.getMassOverriddenBy());
|
||||||
|
assertNull(bulkhead.getCGOverriddenBy());
|
||||||
|
assertNull(bulkhead.getCDOverriddenBy());
|
||||||
|
|
||||||
|
// Override body tube mass for subcomponents
|
||||||
|
bodyTube.setSubcomponentsOverriddenMass(true);
|
||||||
|
|
||||||
|
assertNull(sustainer.getMassOverriddenBy());
|
||||||
|
assertNull(sustainer.getCGOverriddenBy());
|
||||||
|
assertNull(sustainer.getCDOverriddenBy());
|
||||||
|
assertNull(noseCone.getMassOverriddenBy());
|
||||||
|
assertNull(noseCone.getCGOverriddenBy());
|
||||||
|
assertNull(noseCone.getCDOverriddenBy());
|
||||||
|
assertNull(bodyTube.getMassOverriddenBy());
|
||||||
|
assertNull(bodyTube.getCGOverriddenBy());
|
||||||
|
assertNull(bodyTube.getCDOverriddenBy());
|
||||||
|
assertEquals(bodyTube, finSet.getMassOverriddenBy());
|
||||||
|
assertNull(finSet.getCGOverriddenBy());
|
||||||
|
assertNull(finSet.getCDOverriddenBy());
|
||||||
|
assertEquals(bodyTube, launchLug.getMassOverriddenBy());
|
||||||
|
assertNull(launchLug.getCGOverriddenBy());
|
||||||
|
assertNull(launchLug.getCDOverriddenBy());
|
||||||
|
assertEquals(bodyTube, innerTube.getMassOverriddenBy());
|
||||||
|
assertNull(innerTube.getCGOverriddenBy());
|
||||||
|
assertNull(innerTube.getCDOverriddenBy());
|
||||||
|
assertEquals(bodyTube, engineBlock.getMassOverriddenBy());
|
||||||
|
assertNull(engineBlock.getCGOverriddenBy());
|
||||||
|
assertNull(engineBlock.getCDOverriddenBy());
|
||||||
|
assertEquals(bodyTube, parachute.getMassOverriddenBy());
|
||||||
|
assertNull(parachute.getCGOverriddenBy());
|
||||||
|
assertNull(parachute.getCDOverriddenBy());
|
||||||
|
assertEquals(bodyTube, bulkhead.getMassOverriddenBy());
|
||||||
|
assertNull(bulkhead.getCGOverriddenBy());
|
||||||
|
assertNull(bulkhead.getCDOverriddenBy());
|
||||||
|
|
||||||
|
// Undo override body tube mass for subcomponents, do override of CG and CD for subcomponents
|
||||||
|
bodyTube.setSubcomponentsOverriddenMass(false);
|
||||||
|
bodyTube.setSubcomponentsOverriddenCG(true);
|
||||||
|
bodyTube.setSubcomponentsOverriddenCD(true);
|
||||||
|
|
||||||
|
assertNull(noseCone.getMassOverriddenBy());
|
||||||
|
assertNull(noseCone.getCGOverriddenBy());
|
||||||
|
assertNull(noseCone.getCDOverriddenBy());
|
||||||
|
assertNull(bodyTube.getMassOverriddenBy());
|
||||||
|
assertNull(bodyTube.getCGOverriddenBy());
|
||||||
|
assertNull(bodyTube.getCDOverriddenBy());
|
||||||
|
assertNull(finSet.getMassOverriddenBy());
|
||||||
|
assertEquals(bodyTube, finSet.getCGOverriddenBy());
|
||||||
|
assertEquals(bodyTube, finSet.getCDOverriddenBy());
|
||||||
|
assertNull(launchLug.getMassOverriddenBy());
|
||||||
|
assertEquals(bodyTube, launchLug.getCGOverriddenBy());
|
||||||
|
assertEquals(bodyTube, launchLug.getCDOverriddenBy());
|
||||||
|
assertNull(innerTube.getMassOverriddenBy());
|
||||||
|
assertEquals(bodyTube, innerTube.getCGOverriddenBy());
|
||||||
|
assertEquals(bodyTube, innerTube.getCDOverriddenBy());
|
||||||
|
assertNull(engineBlock.getMassOverriddenBy());
|
||||||
|
assertEquals(bodyTube, engineBlock.getCGOverriddenBy());
|
||||||
|
assertEquals(bodyTube, engineBlock.getCDOverriddenBy());
|
||||||
|
assertNull(parachute.getMassOverriddenBy());
|
||||||
|
assertEquals(bodyTube, parachute.getCGOverriddenBy());
|
||||||
|
assertEquals(bodyTube, parachute.getCDOverriddenBy());
|
||||||
|
assertNull(bulkhead.getMassOverriddenBy());
|
||||||
|
assertEquals(bodyTube, bulkhead.getCGOverriddenBy());
|
||||||
|
assertEquals(bodyTube, bulkhead.getCDOverriddenBy());
|
||||||
|
|
||||||
|
// Move the inner tube from the body tube to the nose cone
|
||||||
|
bodyTube.removeChild(innerTube);
|
||||||
|
noseCone.addChild(innerTube);
|
||||||
|
|
||||||
|
assertNull(noseCone.getMassOverriddenBy());
|
||||||
|
assertNull(noseCone.getCGOverriddenBy());
|
||||||
|
assertNull(noseCone.getCDOverriddenBy());
|
||||||
|
assertNull(innerTube.getMassOverriddenBy());
|
||||||
|
assertNull(innerTube.getCGOverriddenBy());
|
||||||
|
assertNull(innerTube.getCDOverriddenBy());
|
||||||
|
assertNull(engineBlock.getMassOverriddenBy());
|
||||||
|
assertNull(engineBlock.getCGOverriddenBy());
|
||||||
|
assertNull(engineBlock.getCDOverriddenBy());
|
||||||
|
assertNull(bodyTube.getMassOverriddenBy());
|
||||||
|
assertNull(bodyTube.getCGOverriddenBy());
|
||||||
|
assertNull(bodyTube.getCDOverriddenBy());
|
||||||
|
assertNull(finSet.getMassOverriddenBy());
|
||||||
|
assertEquals(bodyTube, finSet.getCGOverriddenBy());
|
||||||
|
assertEquals(bodyTube, finSet.getCDOverriddenBy());
|
||||||
|
assertNull(launchLug.getMassOverriddenBy());
|
||||||
|
assertEquals(bodyTube, launchLug.getCGOverriddenBy());
|
||||||
|
assertEquals(bodyTube, launchLug.getCDOverriddenBy());
|
||||||
|
assertNull(parachute.getMassOverriddenBy());
|
||||||
|
assertEquals(bodyTube, parachute.getCGOverriddenBy());
|
||||||
|
assertEquals(bodyTube, parachute.getCDOverriddenBy());
|
||||||
|
assertNull(bulkhead.getMassOverriddenBy());
|
||||||
|
assertEquals(bodyTube, bulkhead.getCGOverriddenBy());
|
||||||
|
assertEquals(bodyTube, bulkhead.getCDOverriddenBy());
|
||||||
|
|
||||||
|
// Override mass of nose cone
|
||||||
|
noseCone.setMassOverridden(true);
|
||||||
|
|
||||||
|
assertNull(noseCone.getMassOverriddenBy());
|
||||||
|
assertNull(noseCone.getCGOverriddenBy());
|
||||||
|
assertNull(noseCone.getCDOverriddenBy());
|
||||||
|
assertNull(innerTube.getMassOverriddenBy());
|
||||||
|
assertNull(innerTube.getCGOverriddenBy());
|
||||||
|
assertNull(innerTube.getCDOverriddenBy());
|
||||||
|
assertNull(engineBlock.getMassOverriddenBy());
|
||||||
|
assertNull(engineBlock.getCGOverriddenBy());
|
||||||
|
assertNull(engineBlock.getCDOverriddenBy());
|
||||||
|
assertNull(bodyTube.getMassOverriddenBy());
|
||||||
|
assertNull(bodyTube.getCGOverriddenBy());
|
||||||
|
assertNull(bodyTube.getCDOverriddenBy());
|
||||||
|
assertNull(finSet.getMassOverriddenBy());
|
||||||
|
assertEquals(bodyTube, finSet.getCGOverriddenBy());
|
||||||
|
assertEquals(bodyTube, finSet.getCDOverriddenBy());
|
||||||
|
assertNull(launchLug.getMassOverriddenBy());
|
||||||
|
assertEquals(bodyTube, launchLug.getCGOverriddenBy());
|
||||||
|
assertEquals(bodyTube, launchLug.getCDOverriddenBy());
|
||||||
|
assertNull(parachute.getMassOverriddenBy());
|
||||||
|
assertEquals(bodyTube, parachute.getCGOverriddenBy());
|
||||||
|
assertEquals(bodyTube, parachute.getCDOverriddenBy());
|
||||||
|
assertNull(bulkhead.getMassOverriddenBy());
|
||||||
|
assertEquals(bodyTube, bulkhead.getCGOverriddenBy());
|
||||||
|
assertEquals(bodyTube, bulkhead.getCDOverriddenBy());
|
||||||
|
|
||||||
|
// Override nose cone mass for all subcomponents
|
||||||
|
noseCone.setSubcomponentsOverriddenMass(true);
|
||||||
|
|
||||||
|
assertNull(sustainer.getMassOverriddenBy());
|
||||||
|
assertNull(sustainer.getCGOverriddenBy());
|
||||||
|
assertNull(sustainer.getCDOverriddenBy());
|
||||||
|
assertNull(noseCone.getMassOverriddenBy());
|
||||||
|
assertNull(noseCone.getCGOverriddenBy());
|
||||||
|
assertNull(noseCone.getCDOverriddenBy());
|
||||||
|
assertEquals(noseCone, innerTube.getMassOverriddenBy());
|
||||||
|
assertNull(innerTube.getCGOverriddenBy());
|
||||||
|
assertNull(innerTube.getCDOverriddenBy());
|
||||||
|
assertEquals(noseCone, engineBlock.getMassOverriddenBy());
|
||||||
|
assertNull(engineBlock.getCGOverriddenBy());
|
||||||
|
assertNull(engineBlock.getCDOverriddenBy());
|
||||||
|
assertNull(bodyTube.getMassOverriddenBy());
|
||||||
|
assertNull(bodyTube.getCGOverriddenBy());
|
||||||
|
assertNull(bodyTube.getCDOverriddenBy());
|
||||||
|
assertNull(finSet.getMassOverriddenBy());
|
||||||
|
assertEquals(bodyTube, finSet.getCGOverriddenBy());
|
||||||
|
assertEquals(bodyTube, finSet.getCDOverriddenBy());
|
||||||
|
assertNull(launchLug.getMassOverriddenBy());
|
||||||
|
assertEquals(bodyTube, launchLug.getCGOverriddenBy());
|
||||||
|
assertEquals(bodyTube, launchLug.getCDOverriddenBy());
|
||||||
|
assertNull(parachute.getMassOverriddenBy());
|
||||||
|
assertEquals(bodyTube, parachute.getCGOverriddenBy());
|
||||||
|
assertEquals(bodyTube, parachute.getCDOverriddenBy());
|
||||||
|
assertNull(bulkhead.getMassOverriddenBy());
|
||||||
|
assertEquals(bodyTube, bulkhead.getCGOverriddenBy());
|
||||||
|
assertEquals(bodyTube, bulkhead.getCDOverriddenBy());
|
||||||
|
|
||||||
|
// Override inner tube CG for all subcomponents
|
||||||
|
innerTube.setCGOverridden(true);
|
||||||
|
innerTube.setSubcomponentsOverriddenCG(true);
|
||||||
|
|
||||||
|
assertNull(noseCone.getMassOverriddenBy());
|
||||||
|
assertNull(noseCone.getCGOverriddenBy());
|
||||||
|
assertNull(noseCone.getCDOverriddenBy());
|
||||||
|
assertEquals(noseCone, innerTube.getMassOverriddenBy());
|
||||||
|
assertNull(innerTube.getCGOverriddenBy());
|
||||||
|
assertNull(innerTube.getCDOverriddenBy());
|
||||||
|
assertEquals(noseCone, engineBlock.getMassOverriddenBy());
|
||||||
|
assertEquals(innerTube, engineBlock.getCGOverriddenBy());
|
||||||
|
assertNull(engineBlock.getCDOverriddenBy());
|
||||||
|
assertNull(bodyTube.getMassOverriddenBy());
|
||||||
|
assertNull(bodyTube.getCGOverriddenBy());
|
||||||
|
assertNull(bodyTube.getCDOverriddenBy());
|
||||||
|
assertNull(finSet.getMassOverriddenBy());
|
||||||
|
assertEquals(bodyTube, finSet.getCGOverriddenBy());
|
||||||
|
assertEquals(bodyTube, finSet.getCDOverriddenBy());
|
||||||
|
assertNull(launchLug.getMassOverriddenBy());
|
||||||
|
assertEquals(bodyTube, launchLug.getCGOverriddenBy());
|
||||||
|
assertEquals(bodyTube, launchLug.getCDOverriddenBy());
|
||||||
|
assertNull(parachute.getMassOverriddenBy());
|
||||||
|
assertEquals(bodyTube, parachute.getCGOverriddenBy());
|
||||||
|
assertEquals(bodyTube, parachute.getCDOverriddenBy());
|
||||||
|
assertNull(bulkhead.getMassOverriddenBy());
|
||||||
|
assertEquals(bodyTube, bulkhead.getCGOverriddenBy());
|
||||||
|
assertEquals(bodyTube, bulkhead.getCDOverriddenBy());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user