Moved test to separate source folder
authorBill Kuker <bkuker@billkuker.com>
Mon, 25 Oct 2010 15:12:24 +0000 (15:12 +0000)
committerBill Kuker <bkuker@billkuker.com>
Mon, 25 Oct 2010 15:12:24 +0000 (15:12 +0000)
15 files changed:
.classpath
src/com/billkuker/rocketry/motorsim/test/ConvergentDivergentNozzleTest.java [deleted file]
src/com/billkuker/rocketry/motorsim/test/CoredCylindricalGrainTest.java [deleted file]
src/com/billkuker/rocketry/motorsim/test/CylindricalChamberTest.java [deleted file]
src/com/billkuker/rocketry/motorsim/test/KNSUTest.java [deleted file]
src/com/billkuker/rocketry/motorsim/test/MotorIOTest.java [deleted file]
src/com/billkuker/rocketry/motorsim/test/RocketTest.java [deleted file]
src/com/billkuker/rocketry/motorsim/test/ShapeUtilTest.java [deleted file]
test/com/billkuker/rocketry/motorsim/test/ConvergentDivergentNozzleTest.java [new file with mode: 0644]
test/com/billkuker/rocketry/motorsim/test/CoredCylindricalGrainTest.java [new file with mode: 0644]
test/com/billkuker/rocketry/motorsim/test/CylindricalChamberTest.java [new file with mode: 0644]
test/com/billkuker/rocketry/motorsim/test/KNSUTest.java [new file with mode: 0644]
test/com/billkuker/rocketry/motorsim/test/MotorIOTest.java [new file with mode: 0644]
test/com/billkuker/rocketry/motorsim/test/RocketTest.java [new file with mode: 0644]
test/com/billkuker/rocketry/motorsim/test/ShapeUtilTest.java [new file with mode: 0644]

index 51967f3af9a7f36c78321736e0c0c72c9bc74deb..d75bd09e666ef5b2b7390deb1e4b9915a4be1dfb 100644 (file)
@@ -1,16 +1,17 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-       <classpathentry kind="src" path="src"/>
-       <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-       <classpathentry kind="lib" path="jscience.jar"/>
-       <classpathentry kind="lib" path="jfreechart-1.0.12.jar"/>
-       <classpathentry kind="lib" path="jcommon-1.0.15.jar"/>
-       <classpathentry kind="lib" path="log4j-1.2.15.jar"/>
-       <classpathentry kind="lib" path="l2fprod-common-sheet.jar"/>
-       <classpathentry kind="lib" path="xstream-1.3.jar"/>
-       <classpathentry kind="lib" path="xpp3_min-1.1.4c.jar"/>
-       <classpathentry kind="lib" path="rsyntaxtextarea.jar"/>
-       <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
-       <classpathentry kind="con" path="org.eclipse.ajdt.core.ASPECTJRT_CONTAINER"/>
-       <classpathentry kind="output" path="bin"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>\r
+<classpath>\r
+       <classpathentry kind="src" path="src"/>\r
+       <classpathentry kind="src" path="test"/>\r
+       <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>\r
+       <classpathentry kind="lib" path="jscience.jar"/>\r
+       <classpathentry kind="lib" path="jfreechart-1.0.12.jar"/>\r
+       <classpathentry kind="lib" path="jcommon-1.0.15.jar"/>\r
+       <classpathentry kind="lib" path="log4j-1.2.15.jar"/>\r
+       <classpathentry kind="lib" path="l2fprod-common-sheet.jar"/>\r
+       <classpathentry kind="lib" path="xstream-1.3.jar"/>\r
+       <classpathentry kind="lib" path="xpp3_min-1.1.4c.jar"/>\r
+       <classpathentry kind="lib" path="rsyntaxtextarea.jar"/>\r
+       <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>\r
+       <classpathentry kind="con" path="org.eclipse.ajdt.core.ASPECTJRT_CONTAINER"/>\r
+       <classpathentry kind="output" path="bin"/>\r
+</classpath>\r
diff --git a/src/com/billkuker/rocketry/motorsim/test/ConvergentDivergentNozzleTest.java b/src/com/billkuker/rocketry/motorsim/test/ConvergentDivergentNozzleTest.java
deleted file mode 100644 (file)
index f9ee4c2..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-package com.billkuker.rocketry.motorsim.test;\r
-\r
-import javax.measure.quantity.Area;\r
-import javax.measure.quantity.Force;\r
-import javax.measure.quantity.Pressure;\r
-import javax.measure.unit.SI;\r
-\r
-import junit.framework.Assert;\r
-\r
-import org.jscience.physics.amount.Amount;\r
-import org.junit.Test;\r
-\r
-import com.billkuker.rocketry.motorsim.ConvergentDivergentNozzle;\r
-import com.billkuker.rocketry.motorsim.fuel.KNSU;\r
-\r
-public class ConvergentDivergentNozzleTest extends RocketTest {\r
-       \r
-       ConvergentDivergentNozzle n = new ConvergentDivergentNozzle();\r
-       \r
-       {\r
-               n.setThroatDiameter(Amount.valueOf(6.6, SI.MILLIMETER));\r
-               n.setExitDiameter(Amount.valueOf(20.87, SI.MILLIMETER));\r
-               n.setEfficiency(0.85);\r
-       }\r
-\r
-       @Test\r
-       public void testThroatArea() {\r
-               Amount<Area> a = n.throatArea().to(SI.MILLIMETER.pow(2).asType(Area.class));\r
-               assertApproximate(Amount.valueOf(34.2, .1, SI.MILLIMETER.pow(2)), a);\r
-       }\r
-\r
-       @Test\r
-       public void testExitArea() {\r
-               Amount<Area> a = n.exitArea();\r
-               assertApproximate(Amount.valueOf(342, .1, SI.MILLIMETER.pow(2)), a);\r
-       }\r
-\r
-       @Test\r
-       public void testThrust() {\r
-               Amount<Pressure> Patm = Amount.valueOf(101000, SI.PASCAL);\r
-               Amount<Pressure> Po = Amount.valueOf(2046491, SI.PASCAL);\r
-               Amount<Pressure> Pe = Patm;\r
-\r
-               KNSU f = new KNSU();\r
-               \r
-               Amount<Force> t = n.thrust(Po, Pe, Patm, f.getCombustionProduct().getRatioOfSpecificHeats2Phase());\r
-               \r
-               Amount<Force> expected = Amount.valueOf(87.2, .1, SI.NEWTON);\r
-               \r
-               assertApproximate(t, expected);\r
-       }\r
-\r
-       @Test\r
-       public void testThrustCoefficient() {\r
-               Amount<Pressure> Patm = Amount.valueOf(101000, SI.PASCAL);\r
-               Amount<Pressure> Po = Amount.valueOf(2046491, SI.PASCAL);\r
-               Amount<Pressure> Pe = Patm;\r
-\r
-               KNSU f = new KNSU();\r
-               \r
-               double cF = n.thrustCoefficient(Po, Pe, Patm, f.getCombustionProduct().getRatioOfSpecificHeats2Phase());\r
-               \r
-               \r
-               Assert.assertEquals(cF, 1.2454812344324655);\r
-       }\r
-\r
-}\r
diff --git a/src/com/billkuker/rocketry/motorsim/test/CoredCylindricalGrainTest.java b/src/com/billkuker/rocketry/motorsim/test/CoredCylindricalGrainTest.java
deleted file mode 100644 (file)
index b20291e..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-package com.billkuker.rocketry.motorsim.test;\r
-\r
-import java.beans.PropertyVetoException;\r
-\r
-import javax.measure.quantity.Area;\r
-import javax.measure.quantity.Volume;\r
-import javax.measure.unit.SI;\r
-\r
-import org.jscience.physics.amount.Amount;\r
-import org.junit.Test;\r
-\r
-import com.billkuker.rocketry.motorsim.grain.CoredCylindricalGrain;\r
-\r
-public class CoredCylindricalGrainTest extends RocketTest {\r
-\r
-       @Test\r
-       public void testSurfaceArea() throws PropertyVetoException {\r
-       \r
-               CoredCylindricalGrain g = new CoredCylindricalGrain();\r
-               \r
-               g.setLength(Amount.valueOf(100, SI.MILLIMETER));\r
-               g.setOD(Amount.valueOf(30, SI.MILLIMETER));\r
-               g.setID(Amount.valueOf(10, SI.MILLIMETER));\r
-               \r
-               g.setForeEndInhibited(false);\r
-               g.setAftEndInhibited(false);\r
-               g.setOuterSurfaceInhibited(true);\r
-               g.setInnerSurfaceInhibited(false);\r
-               \r
-               Amount<Area> a = g.surfaceArea(Amount.valueOf(6, SI.MILLIMETER));\r
-               assertApproximate(a, Amount.valueOf(6736, sqMM), Amount.valueOf(1, sqMM) );\r
-       }\r
-       \r
-\r
-       @Test\r
-       public void testWebThickness() throws PropertyVetoException {\r
-               CoredCylindricalGrain g = new CoredCylindricalGrain();\r
-               \r
-               //thin and long\r
-               g.setLength(Amount.valueOf(100, SI.MILLIMETER));\r
-               g.setOD(Amount.valueOf(30, SI.MILLIMETER));\r
-               g.setID(Amount.valueOf(10, SI.MILLIMETER));\r
-               \r
-               assertApproximate(g.webThickness(), Amount.valueOf("10mm"));\r
-               \r
-               //thick and short\r
-               g.setLength(Amount.valueOf(100, SI.MILLIMETER));\r
-               g.setOD(Amount.valueOf(300, SI.MILLIMETER));\r
-               g.setID(Amount.valueOf(100, SI.MILLIMETER));\r
-               \r
-               assertApproximate(g.webThickness(), Amount.valueOf("50mm"));\r
-       }\r
-\r
-       @Test\r
-       public void testVolume() throws PropertyVetoException {\r
-               CoredCylindricalGrain g = new CoredCylindricalGrain();\r
-               \r
-               //thin and long\r
-               g.setLength(Amount.valueOf(100, SI.MILLIMETER));\r
-               g.setOD(Amount.valueOf(30, SI.MILLIMETER));\r
-               g.setID(Amount.valueOf(10, SI.MILLIMETER));\r
-               \r
-               g.setForeEndInhibited(false);\r
-               g.setAftEndInhibited(false);\r
-               g.setOuterSurfaceInhibited(true);\r
-               g.setInnerSurfaceInhibited(false);\r
-               \r
-               Amount<Volume> v = g.volume(Amount.valueOf(3, SI.MILLIMETER));\r
-               assertApproximate(v, Amount.valueOf(47545, cubeMM), Amount.valueOf(1, cubeMM));\r
-               \r
-               v = g.volume(Amount.valueOf(5, SI.MILLIMETER));\r
-               assertApproximate(v, Amount.valueOf(35343, cubeMM), Amount.valueOf(1, cubeMM));\r
-               \r
-               v = g.volume(Amount.valueOf(9, SI.MILLIMETER));\r
-               assertApproximate(v, Amount.valueOf(7471, cubeMM), Amount.valueOf(1, cubeMM));\r
-       }\r
-\r
-       /*\r
-       @Test(expected=MotorPart.Validating.ValidationException.class)\r
-       public void testCheckValidity() throws MotorPart.Validating.ValidationException, PropertyVetoException{\r
-               CoredCylindricalGrain g = new CoredCylindricalGrain();\r
-               \r
-               //thin and long\r
-               g.setLength(Amount.valueOf(100, SI.MILLIMETER));\r
-               g.setOD(Amount.valueOf(10, SI.MILLIMETER));\r
-               g.setID(Amount.valueOf(30, SI.MILLIMETER));\r
-               \r
-               g.checkValidity();\r
-       }*/\r
-\r
-}\r
diff --git a/src/com/billkuker/rocketry/motorsim/test/CylindricalChamberTest.java b/src/com/billkuker/rocketry/motorsim/test/CylindricalChamberTest.java
deleted file mode 100644 (file)
index 60600a7..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.billkuker.rocketry.motorsim.test;\r
-\r
-import javax.measure.unit.SI;\r
-\r
-import org.jscience.physics.amount.Amount;\r
-import org.junit.Assert;\r
-import org.junit.Test;\r
-\r
-import com.billkuker.rocketry.motorsim.CylindricalChamber;\r
-\r
-public class CylindricalChamberTest extends RocketTest {\r
-\r
-       @Test\r
-       public void testBurstPressure() {\r
-               Assert.assertNull( new CylindricalChamber().burstPressure() );\r
-       }\r
-\r
-       @Test\r
-       public void testChamberVolume() {\r
-               CylindricalChamber c = new CylindricalChamber();\r
-               \r
-               c.setLength(Amount.valueOf(100, SI.MILLIMETER));\r
-               c.setID(Amount.valueOf(20, SI.MILLIMETER));\r
-               \r
-               assertApproximate(c.chamberVolume(), Amount.valueOf(10000*Math.PI, SI.MILLIMETER.pow(3)));\r
-       }\r
-\r
-}\r
diff --git a/src/com/billkuker/rocketry/motorsim/test/KNSUTest.java b/src/com/billkuker/rocketry/motorsim/test/KNSUTest.java
deleted file mode 100644 (file)
index 9845a6f..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.billkuker.rocketry.motorsim.test;\r
-\r
-import javax.measure.unit.NonSI;\r
-import javax.measure.unit.SI;\r
-\r
-import org.jscience.physics.amount.Amount;\r
-import org.junit.Test;\r
-\r
-import com.billkuker.rocketry.motorsim.fuel.KNSU;\r
-\r
-public class KNSUTest extends RocketTest {\r
-\r
-       @Test\r
-       public void testBurnRate() {\r
-               KNSU f = new KNSU();\r
-               \r
-               System.out.println(f.burnRate(Amount.valueOf(6.89, SI.MEGA(SI.PASCAL) )).to(NonSI.INCH.divide(SI.SECOND)));\r
-       }\r
-\r
-       @Test\r
-       public void testEffectiveMolarWeight(){\r
-               (new KNSU()).getCombustionProduct().getEffectiveMolarWeight();\r
-       }\r
-       \r
-       @Test\r
-       public void testIdealDensity(){\r
-               System.out.println((new KNSU()).getIdealDensity());\r
-               System.out.println((new KNSU()).getIdealDensity().isExact());\r
-       }\r
-}\r
diff --git a/src/com/billkuker/rocketry/motorsim/test/MotorIOTest.java b/src/com/billkuker/rocketry/motorsim/test/MotorIOTest.java
deleted file mode 100644 (file)
index b401bc5..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-package com.billkuker.rocketry.motorsim.test;\r
-\r
-import java.beans.PropertyVetoException;\r
-import java.io.File;\r
-\r
-import javax.measure.unit.SI;\r
-\r
-import org.jscience.physics.amount.Amount;\r
-import org.junit.Test;\r
-\r
-import com.billkuker.rocketry.motorsim.ConvergentDivergentNozzle;\r
-import com.billkuker.rocketry.motorsim.CylindricalChamber;\r
-import com.billkuker.rocketry.motorsim.Motor;\r
-import com.billkuker.rocketry.motorsim.fuel.KNSU;\r
-import com.billkuker.rocketry.motorsim.grain.CoredCylindricalGrain;\r
-import com.billkuker.rocketry.motorsim.grain.MultiGrain;\r
-import com.billkuker.rocketry.motorsim.io.MotorIO;\r
-\r
-public class MotorIOTest {\r
-\r
-       @Test\r
-       public void testReadWrite() throws Exception {\r
-               Motor m = new Motor();\r
-               m.setName("IOTestMotor");\r
-               m.setFuel(new KNSU());\r
-\r
-               CylindricalChamber c = new CylindricalChamber();\r
-               c.setLength(Amount.valueOf(200, SI.MILLIMETER));\r
-               c.setID(Amount.valueOf(30, SI.MILLIMETER));\r
-               m.setChamber(c);\r
-\r
-               CoredCylindricalGrain g = new CoredCylindricalGrain();\r
-               try {\r
-                       g.setLength(Amount.valueOf(70, SI.MILLIMETER));\r
-                       g.setOD(Amount.valueOf(29, SI.MILLIMETER));\r
-                       g.setID(Amount.valueOf(8, SI.MILLIMETER));\r
-               } catch (PropertyVetoException v) {\r
-                       throw new Error(v);\r
-               }\r
-\r
-               m.setGrain(new MultiGrain(g, 2));\r
-\r
-               ConvergentDivergentNozzle n = new ConvergentDivergentNozzle();\r
-               n.setThroatDiameter(Amount.valueOf(7.9, SI.MILLIMETER));\r
-               n.setExitDiameter(Amount.valueOf(9, SI.MILLIMETER));\r
-               n.setEfficiency(.87);\r
-               m.setNozzle(n);\r
-\r
-               File f = new File("MotorIOTest.xml");\r
-\r
-               MotorIO.writeMotor(m, f);\r
-\r
-               MotorIO.readMotor(f);\r
-\r
-       }\r
-}\r
diff --git a/src/com/billkuker/rocketry/motorsim/test/RocketTest.java b/src/com/billkuker/rocketry/motorsim/test/RocketTest.java
deleted file mode 100644 (file)
index 149c47e..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.billkuker.rocketry.motorsim.test;\r
-\r
-import javax.measure.unit.SI;\r
-import javax.measure.unit.Unit;\r
-\r
-import org.jscience.physics.amount.Amount;\r
-import org.junit.Assert;\r
-\r
-public class RocketTest {\r
-       \r
-       protected static final Unit<javax.measure.quantity.Area> sqMM = SI.MILLIMETER.pow(2).asType(javax.measure.quantity.Area.class);\r
-       \r
-       \r
-       protected static final Unit<javax.measure.quantity.Volume> cubeMM = SI.MILLIMETER.pow(3).asType(javax.measure.quantity.Volume.class);\r
-\r
-       @SuppressWarnings("unchecked")\r
-       protected void assertApproximate(Amount a, Amount b){\r
-               Assert.assertTrue("" + a.to(b.getUnit()) + " !~ " + b , a.approximates(b));\r
-       }\r
-       \r
-       @SuppressWarnings("unchecked")\r
-       protected void assertApproximate(Amount a, Amount b, Amount diff){\r
-               Assert.assertTrue("" + a.to(b.getUnit()) + " !~~ " + b ,  a.minus(b).abs().isLessThan(diff));\r
-       }\r
-}\r
diff --git a/src/com/billkuker/rocketry/motorsim/test/ShapeUtilTest.java b/src/com/billkuker/rocketry/motorsim/test/ShapeUtilTest.java
deleted file mode 100644 (file)
index 7971220..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.billkuker.rocketry.motorsim.test;\r
-\r
-import java.awt.geom.Area;\r
-import java.awt.geom.Ellipse2D;\r
-import java.awt.geom.Rectangle2D;\r
-\r
-import org.jscience.physics.amount.Amount;\r
-import org.junit.Test;\r
-\r
-import com.billkuker.rocketry.motorsim.grain.util.ShapeUtil;\r
-\r
-\r
-public class ShapeUtilTest extends RocketTest{\r
-\r
-       Area tenByTen = new Area(new Rectangle2D.Double(-5, -5, 10, 10));\r
-       Area oneByOne = new Area(new Rectangle2D.Double(-.5, -.5, 1, 1));\r
-       Area twoByTwoFar = new Area( new Rectangle2D.Double(30,30,2,2));\r
-       \r
-       Area r2Circle = new Area(new Ellipse2D.Double(-2,-2,4,4));\r
-\r
-\r
-       Amount<javax.measure.quantity.Area> diff = Amount.valueOf(.01, sqMM);\r
-       \r
-       @Test\r
-       public void testArea(){\r
-               assertApproximate(ShapeUtil.area(tenByTen), Amount.valueOf(100, sqMM));\r
-               assertApproximate(ShapeUtil.area(oneByOne), Amount.valueOf(1, sqMM));\r
-               assertApproximate(ShapeUtil.area(twoByTwoFar), Amount.valueOf(4, sqMM));\r
-               assertApproximate(ShapeUtil.area(r2Circle), Amount.valueOf(4*Math.PI, sqMM), diff);\r
-               \r
-               Area a = new Area(tenByTen);\r
-               a.subtract(oneByOne);\r
-               \r
-               assertApproximate(ShapeUtil.area(a), ShapeUtil.area(tenByTen).minus(ShapeUtil.area(oneByOne)));\r
-               \r
-               a.add(twoByTwoFar);\r
-               \r
-               assertApproximate(ShapeUtil.area(a), \r
-                               ShapeUtil.area(tenByTen)\r
-                                       .minus(ShapeUtil.area(oneByOne))\r
-                                       .plus(ShapeUtil.area(twoByTwoFar)));\r
-               \r
-               a = new Area(tenByTen);\r
-               a.subtract(r2Circle);\r
-               \r
-               assertApproximate(ShapeUtil.area(a), ShapeUtil.area(tenByTen).minus(ShapeUtil.area(r2Circle)));\r
-       }\r
-}\r
diff --git a/test/com/billkuker/rocketry/motorsim/test/ConvergentDivergentNozzleTest.java b/test/com/billkuker/rocketry/motorsim/test/ConvergentDivergentNozzleTest.java
new file mode 100644 (file)
index 0000000..f9ee4c2
--- /dev/null
@@ -0,0 +1,67 @@
+package com.billkuker.rocketry.motorsim.test;\r
+\r
+import javax.measure.quantity.Area;\r
+import javax.measure.quantity.Force;\r
+import javax.measure.quantity.Pressure;\r
+import javax.measure.unit.SI;\r
+\r
+import junit.framework.Assert;\r
+\r
+import org.jscience.physics.amount.Amount;\r
+import org.junit.Test;\r
+\r
+import com.billkuker.rocketry.motorsim.ConvergentDivergentNozzle;\r
+import com.billkuker.rocketry.motorsim.fuel.KNSU;\r
+\r
+public class ConvergentDivergentNozzleTest extends RocketTest {\r
+       \r
+       ConvergentDivergentNozzle n = new ConvergentDivergentNozzle();\r
+       \r
+       {\r
+               n.setThroatDiameter(Amount.valueOf(6.6, SI.MILLIMETER));\r
+               n.setExitDiameter(Amount.valueOf(20.87, SI.MILLIMETER));\r
+               n.setEfficiency(0.85);\r
+       }\r
+\r
+       @Test\r
+       public void testThroatArea() {\r
+               Amount<Area> a = n.throatArea().to(SI.MILLIMETER.pow(2).asType(Area.class));\r
+               assertApproximate(Amount.valueOf(34.2, .1, SI.MILLIMETER.pow(2)), a);\r
+       }\r
+\r
+       @Test\r
+       public void testExitArea() {\r
+               Amount<Area> a = n.exitArea();\r
+               assertApproximate(Amount.valueOf(342, .1, SI.MILLIMETER.pow(2)), a);\r
+       }\r
+\r
+       @Test\r
+       public void testThrust() {\r
+               Amount<Pressure> Patm = Amount.valueOf(101000, SI.PASCAL);\r
+               Amount<Pressure> Po = Amount.valueOf(2046491, SI.PASCAL);\r
+               Amount<Pressure> Pe = Patm;\r
+\r
+               KNSU f = new KNSU();\r
+               \r
+               Amount<Force> t = n.thrust(Po, Pe, Patm, f.getCombustionProduct().getRatioOfSpecificHeats2Phase());\r
+               \r
+               Amount<Force> expected = Amount.valueOf(87.2, .1, SI.NEWTON);\r
+               \r
+               assertApproximate(t, expected);\r
+       }\r
+\r
+       @Test\r
+       public void testThrustCoefficient() {\r
+               Amount<Pressure> Patm = Amount.valueOf(101000, SI.PASCAL);\r
+               Amount<Pressure> Po = Amount.valueOf(2046491, SI.PASCAL);\r
+               Amount<Pressure> Pe = Patm;\r
+\r
+               KNSU f = new KNSU();\r
+               \r
+               double cF = n.thrustCoefficient(Po, Pe, Patm, f.getCombustionProduct().getRatioOfSpecificHeats2Phase());\r
+               \r
+               \r
+               Assert.assertEquals(cF, 1.2454812344324655);\r
+       }\r
+\r
+}\r
diff --git a/test/com/billkuker/rocketry/motorsim/test/CoredCylindricalGrainTest.java b/test/com/billkuker/rocketry/motorsim/test/CoredCylindricalGrainTest.java
new file mode 100644 (file)
index 0000000..b20291e
--- /dev/null
@@ -0,0 +1,91 @@
+package com.billkuker.rocketry.motorsim.test;\r
+\r
+import java.beans.PropertyVetoException;\r
+\r
+import javax.measure.quantity.Area;\r
+import javax.measure.quantity.Volume;\r
+import javax.measure.unit.SI;\r
+\r
+import org.jscience.physics.amount.Amount;\r
+import org.junit.Test;\r
+\r
+import com.billkuker.rocketry.motorsim.grain.CoredCylindricalGrain;\r
+\r
+public class CoredCylindricalGrainTest extends RocketTest {\r
+\r
+       @Test\r
+       public void testSurfaceArea() throws PropertyVetoException {\r
+       \r
+               CoredCylindricalGrain g = new CoredCylindricalGrain();\r
+               \r
+               g.setLength(Amount.valueOf(100, SI.MILLIMETER));\r
+               g.setOD(Amount.valueOf(30, SI.MILLIMETER));\r
+               g.setID(Amount.valueOf(10, SI.MILLIMETER));\r
+               \r
+               g.setForeEndInhibited(false);\r
+               g.setAftEndInhibited(false);\r
+               g.setOuterSurfaceInhibited(true);\r
+               g.setInnerSurfaceInhibited(false);\r
+               \r
+               Amount<Area> a = g.surfaceArea(Amount.valueOf(6, SI.MILLIMETER));\r
+               assertApproximate(a, Amount.valueOf(6736, sqMM), Amount.valueOf(1, sqMM) );\r
+       }\r
+       \r
+\r
+       @Test\r
+       public void testWebThickness() throws PropertyVetoException {\r
+               CoredCylindricalGrain g = new CoredCylindricalGrain();\r
+               \r
+               //thin and long\r
+               g.setLength(Amount.valueOf(100, SI.MILLIMETER));\r
+               g.setOD(Amount.valueOf(30, SI.MILLIMETER));\r
+               g.setID(Amount.valueOf(10, SI.MILLIMETER));\r
+               \r
+               assertApproximate(g.webThickness(), Amount.valueOf("10mm"));\r
+               \r
+               //thick and short\r
+               g.setLength(Amount.valueOf(100, SI.MILLIMETER));\r
+               g.setOD(Amount.valueOf(300, SI.MILLIMETER));\r
+               g.setID(Amount.valueOf(100, SI.MILLIMETER));\r
+               \r
+               assertApproximate(g.webThickness(), Amount.valueOf("50mm"));\r
+       }\r
+\r
+       @Test\r
+       public void testVolume() throws PropertyVetoException {\r
+               CoredCylindricalGrain g = new CoredCylindricalGrain();\r
+               \r
+               //thin and long\r
+               g.setLength(Amount.valueOf(100, SI.MILLIMETER));\r
+               g.setOD(Amount.valueOf(30, SI.MILLIMETER));\r
+               g.setID(Amount.valueOf(10, SI.MILLIMETER));\r
+               \r
+               g.setForeEndInhibited(false);\r
+               g.setAftEndInhibited(false);\r
+               g.setOuterSurfaceInhibited(true);\r
+               g.setInnerSurfaceInhibited(false);\r
+               \r
+               Amount<Volume> v = g.volume(Amount.valueOf(3, SI.MILLIMETER));\r
+               assertApproximate(v, Amount.valueOf(47545, cubeMM), Amount.valueOf(1, cubeMM));\r
+               \r
+               v = g.volume(Amount.valueOf(5, SI.MILLIMETER));\r
+               assertApproximate(v, Amount.valueOf(35343, cubeMM), Amount.valueOf(1, cubeMM));\r
+               \r
+               v = g.volume(Amount.valueOf(9, SI.MILLIMETER));\r
+               assertApproximate(v, Amount.valueOf(7471, cubeMM), Amount.valueOf(1, cubeMM));\r
+       }\r
+\r
+       /*\r
+       @Test(expected=MotorPart.Validating.ValidationException.class)\r
+       public void testCheckValidity() throws MotorPart.Validating.ValidationException, PropertyVetoException{\r
+               CoredCylindricalGrain g = new CoredCylindricalGrain();\r
+               \r
+               //thin and long\r
+               g.setLength(Amount.valueOf(100, SI.MILLIMETER));\r
+               g.setOD(Amount.valueOf(10, SI.MILLIMETER));\r
+               g.setID(Amount.valueOf(30, SI.MILLIMETER));\r
+               \r
+               g.checkValidity();\r
+       }*/\r
+\r
+}\r
diff --git a/test/com/billkuker/rocketry/motorsim/test/CylindricalChamberTest.java b/test/com/billkuker/rocketry/motorsim/test/CylindricalChamberTest.java
new file mode 100644 (file)
index 0000000..60600a7
--- /dev/null
@@ -0,0 +1,28 @@
+package com.billkuker.rocketry.motorsim.test;\r
+\r
+import javax.measure.unit.SI;\r
+\r
+import org.jscience.physics.amount.Amount;\r
+import org.junit.Assert;\r
+import org.junit.Test;\r
+\r
+import com.billkuker.rocketry.motorsim.CylindricalChamber;\r
+\r
+public class CylindricalChamberTest extends RocketTest {\r
+\r
+       @Test\r
+       public void testBurstPressure() {\r
+               Assert.assertNull( new CylindricalChamber().burstPressure() );\r
+       }\r
+\r
+       @Test\r
+       public void testChamberVolume() {\r
+               CylindricalChamber c = new CylindricalChamber();\r
+               \r
+               c.setLength(Amount.valueOf(100, SI.MILLIMETER));\r
+               c.setID(Amount.valueOf(20, SI.MILLIMETER));\r
+               \r
+               assertApproximate(c.chamberVolume(), Amount.valueOf(10000*Math.PI, SI.MILLIMETER.pow(3)));\r
+       }\r
+\r
+}\r
diff --git a/test/com/billkuker/rocketry/motorsim/test/KNSUTest.java b/test/com/billkuker/rocketry/motorsim/test/KNSUTest.java
new file mode 100644 (file)
index 0000000..9845a6f
--- /dev/null
@@ -0,0 +1,30 @@
+package com.billkuker.rocketry.motorsim.test;\r
+\r
+import javax.measure.unit.NonSI;\r
+import javax.measure.unit.SI;\r
+\r
+import org.jscience.physics.amount.Amount;\r
+import org.junit.Test;\r
+\r
+import com.billkuker.rocketry.motorsim.fuel.KNSU;\r
+\r
+public class KNSUTest extends RocketTest {\r
+\r
+       @Test\r
+       public void testBurnRate() {\r
+               KNSU f = new KNSU();\r
+               \r
+               System.out.println(f.burnRate(Amount.valueOf(6.89, SI.MEGA(SI.PASCAL) )).to(NonSI.INCH.divide(SI.SECOND)));\r
+       }\r
+\r
+       @Test\r
+       public void testEffectiveMolarWeight(){\r
+               (new KNSU()).getCombustionProduct().getEffectiveMolarWeight();\r
+       }\r
+       \r
+       @Test\r
+       public void testIdealDensity(){\r
+               System.out.println((new KNSU()).getIdealDensity());\r
+               System.out.println((new KNSU()).getIdealDensity().isExact());\r
+       }\r
+}\r
diff --git a/test/com/billkuker/rocketry/motorsim/test/MotorIOTest.java b/test/com/billkuker/rocketry/motorsim/test/MotorIOTest.java
new file mode 100644 (file)
index 0000000..b401bc5
--- /dev/null
@@ -0,0 +1,56 @@
+package com.billkuker.rocketry.motorsim.test;\r
+\r
+import java.beans.PropertyVetoException;\r
+import java.io.File;\r
+\r
+import javax.measure.unit.SI;\r
+\r
+import org.jscience.physics.amount.Amount;\r
+import org.junit.Test;\r
+\r
+import com.billkuker.rocketry.motorsim.ConvergentDivergentNozzle;\r
+import com.billkuker.rocketry.motorsim.CylindricalChamber;\r
+import com.billkuker.rocketry.motorsim.Motor;\r
+import com.billkuker.rocketry.motorsim.fuel.KNSU;\r
+import com.billkuker.rocketry.motorsim.grain.CoredCylindricalGrain;\r
+import com.billkuker.rocketry.motorsim.grain.MultiGrain;\r
+import com.billkuker.rocketry.motorsim.io.MotorIO;\r
+\r
+public class MotorIOTest {\r
+\r
+       @Test\r
+       public void testReadWrite() throws Exception {\r
+               Motor m = new Motor();\r
+               m.setName("IOTestMotor");\r
+               m.setFuel(new KNSU());\r
+\r
+               CylindricalChamber c = new CylindricalChamber();\r
+               c.setLength(Amount.valueOf(200, SI.MILLIMETER));\r
+               c.setID(Amount.valueOf(30, SI.MILLIMETER));\r
+               m.setChamber(c);\r
+\r
+               CoredCylindricalGrain g = new CoredCylindricalGrain();\r
+               try {\r
+                       g.setLength(Amount.valueOf(70, SI.MILLIMETER));\r
+                       g.setOD(Amount.valueOf(29, SI.MILLIMETER));\r
+                       g.setID(Amount.valueOf(8, SI.MILLIMETER));\r
+               } catch (PropertyVetoException v) {\r
+                       throw new Error(v);\r
+               }\r
+\r
+               m.setGrain(new MultiGrain(g, 2));\r
+\r
+               ConvergentDivergentNozzle n = new ConvergentDivergentNozzle();\r
+               n.setThroatDiameter(Amount.valueOf(7.9, SI.MILLIMETER));\r
+               n.setExitDiameter(Amount.valueOf(9, SI.MILLIMETER));\r
+               n.setEfficiency(.87);\r
+               m.setNozzle(n);\r
+\r
+               File f = new File("MotorIOTest.xml");\r
+\r
+               MotorIO.writeMotor(m, f);\r
+\r
+               MotorIO.readMotor(f);\r
+\r
+       }\r
+}\r
diff --git a/test/com/billkuker/rocketry/motorsim/test/RocketTest.java b/test/com/billkuker/rocketry/motorsim/test/RocketTest.java
new file mode 100644 (file)
index 0000000..149c47e
--- /dev/null
@@ -0,0 +1,25 @@
+package com.billkuker.rocketry.motorsim.test;\r
+\r
+import javax.measure.unit.SI;\r
+import javax.measure.unit.Unit;\r
+\r
+import org.jscience.physics.amount.Amount;\r
+import org.junit.Assert;\r
+\r
+public class RocketTest {\r
+       \r
+       protected static final Unit<javax.measure.quantity.Area> sqMM = SI.MILLIMETER.pow(2).asType(javax.measure.quantity.Area.class);\r
+       \r
+       \r
+       protected static final Unit<javax.measure.quantity.Volume> cubeMM = SI.MILLIMETER.pow(3).asType(javax.measure.quantity.Volume.class);\r
+\r
+       @SuppressWarnings("unchecked")\r
+       protected void assertApproximate(Amount a, Amount b){\r
+               Assert.assertTrue("" + a.to(b.getUnit()) + " !~ " + b , a.approximates(b));\r
+       }\r
+       \r
+       @SuppressWarnings("unchecked")\r
+       protected void assertApproximate(Amount a, Amount b, Amount diff){\r
+               Assert.assertTrue("" + a.to(b.getUnit()) + " !~~ " + b ,  a.minus(b).abs().isLessThan(diff));\r
+       }\r
+}\r
diff --git a/test/com/billkuker/rocketry/motorsim/test/ShapeUtilTest.java b/test/com/billkuker/rocketry/motorsim/test/ShapeUtilTest.java
new file mode 100644 (file)
index 0000000..7971220
--- /dev/null
@@ -0,0 +1,48 @@
+package com.billkuker.rocketry.motorsim.test;\r
+\r
+import java.awt.geom.Area;\r
+import java.awt.geom.Ellipse2D;\r
+import java.awt.geom.Rectangle2D;\r
+\r
+import org.jscience.physics.amount.Amount;\r
+import org.junit.Test;\r
+\r
+import com.billkuker.rocketry.motorsim.grain.util.ShapeUtil;\r
+\r
+\r
+public class ShapeUtilTest extends RocketTest{\r
+\r
+       Area tenByTen = new Area(new Rectangle2D.Double(-5, -5, 10, 10));\r
+       Area oneByOne = new Area(new Rectangle2D.Double(-.5, -.5, 1, 1));\r
+       Area twoByTwoFar = new Area( new Rectangle2D.Double(30,30,2,2));\r
+       \r
+       Area r2Circle = new Area(new Ellipse2D.Double(-2,-2,4,4));\r
+\r
+\r
+       Amount<javax.measure.quantity.Area> diff = Amount.valueOf(.01, sqMM);\r
+       \r
+       @Test\r
+       public void testArea(){\r
+               assertApproximate(ShapeUtil.area(tenByTen), Amount.valueOf(100, sqMM));\r
+               assertApproximate(ShapeUtil.area(oneByOne), Amount.valueOf(1, sqMM));\r
+               assertApproximate(ShapeUtil.area(twoByTwoFar), Amount.valueOf(4, sqMM));\r
+               assertApproximate(ShapeUtil.area(r2Circle), Amount.valueOf(4*Math.PI, sqMM), diff);\r
+               \r
+               Area a = new Area(tenByTen);\r
+               a.subtract(oneByOne);\r
+               \r
+               assertApproximate(ShapeUtil.area(a), ShapeUtil.area(tenByTen).minus(ShapeUtil.area(oneByOne)));\r
+               \r
+               a.add(twoByTwoFar);\r
+               \r
+               assertApproximate(ShapeUtil.area(a), \r
+                               ShapeUtil.area(tenByTen)\r
+                                       .minus(ShapeUtil.area(oneByOne))\r
+                                       .plus(ShapeUtil.area(twoByTwoFar)));\r
+               \r
+               a = new Area(tenByTen);\r
+               a.subtract(r2Circle);\r
+               \r
+               assertApproximate(ShapeUtil.area(a), ShapeUtil.area(tenByTen).minus(ShapeUtil.area(r2Circle)));\r
+       }\r
+}\r