7971220fe90f72c23babcf981c0ffbcbbda35958
[sw/motorsim] / test / com / billkuker / rocketry / motorsim / test / ShapeUtilTest.java
1 package com.billkuker.rocketry.motorsim.test;\r
2 \r
3 import java.awt.geom.Area;\r
4 import java.awt.geom.Ellipse2D;\r
5 import java.awt.geom.Rectangle2D;\r
6 \r
7 import org.jscience.physics.amount.Amount;\r
8 import org.junit.Test;\r
9 \r
10 import com.billkuker.rocketry.motorsim.grain.util.ShapeUtil;\r
11 \r
12 \r
13 public class ShapeUtilTest extends RocketTest{\r
14 \r
15         Area tenByTen = new Area(new Rectangle2D.Double(-5, -5, 10, 10));\r
16         Area oneByOne = new Area(new Rectangle2D.Double(-.5, -.5, 1, 1));\r
17         Area twoByTwoFar = new Area( new Rectangle2D.Double(30,30,2,2));\r
18         \r
19         Area r2Circle = new Area(new Ellipse2D.Double(-2,-2,4,4));\r
20 \r
21 \r
22         Amount<javax.measure.quantity.Area> diff = Amount.valueOf(.01, sqMM);\r
23         \r
24         @Test\r
25         public void testArea(){\r
26                 assertApproximate(ShapeUtil.area(tenByTen), Amount.valueOf(100, sqMM));\r
27                 assertApproximate(ShapeUtil.area(oneByOne), Amount.valueOf(1, sqMM));\r
28                 assertApproximate(ShapeUtil.area(twoByTwoFar), Amount.valueOf(4, sqMM));\r
29                 assertApproximate(ShapeUtil.area(r2Circle), Amount.valueOf(4*Math.PI, sqMM), diff);\r
30                 \r
31                 Area a = new Area(tenByTen);\r
32                 a.subtract(oneByOne);\r
33                 \r
34                 assertApproximate(ShapeUtil.area(a), ShapeUtil.area(tenByTen).minus(ShapeUtil.area(oneByOne)));\r
35                 \r
36                 a.add(twoByTwoFar);\r
37                 \r
38                 assertApproximate(ShapeUtil.area(a), \r
39                                 ShapeUtil.area(tenByTen)\r
40                                         .minus(ShapeUtil.area(oneByOne))\r
41                                         .plus(ShapeUtil.area(twoByTwoFar)));\r
42                 \r
43                 a = new Area(tenByTen);\r
44                 a.subtract(r2Circle);\r
45                 \r
46                 assertApproximate(ShapeUtil.area(a), ShapeUtil.area(tenByTen).minus(ShapeUtil.area(r2Circle)));\r
47         }\r
48 }\r