1 package net.sf.openrocket.util;
3 import static org.junit.Assert.*;
7 public class CoordinateTest {
9 private static final double EPS = 0.0000000001;
12 public void coordinateTest() {
14 Coordinate x = new Coordinate(1,1,1,1);
15 Coordinate y = new Coordinate(1,2,3,4);
17 assertCoordinateEquals(new Coordinate(2,1,1,1), x.setX(2));
18 assertCoordinateEquals(new Coordinate(1,2,1,1), x.setY(2));
19 assertCoordinateEquals(new Coordinate(1,1,2,1), x.setZ(2));
20 assertCoordinateEquals(new Coordinate(1,1,1,2), x.setWeight(2));
21 assertCoordinateEquals(new Coordinate(2,3,4,1), x.setXYZ(y).add(1,1,1));
23 assertFalse(x.isNaN());
24 assertTrue(x.setX(Double.NaN).isNaN());
25 assertTrue(Coordinate.NaN.isNaN());
27 assertTrue(x.isWeighted());
28 assertFalse(x.setWeight(0).isWeighted());
31 assertCoordinateEquals(x, x.add(Coordinate.NUL));
32 assertCoordinateEquals(new Coordinate(2,3,4,5), x.add(y));
33 assertCoordinateEquals(new Coordinate(2,3,4,1), x.add(1,2,3));
34 assertCoordinateEquals(new Coordinate(2,3,4,5), x.add(1,2,3,4));
36 assertCoordinateEquals(new Coordinate(0,-1,-2,1), x.sub(y));
37 assertCoordinateEquals(new Coordinate(0,-1,-2,1), x.sub(1,2,3));
39 assertCoordinateEquals(new Coordinate(2,4,6,8), y.multiply(2));
41 assertEquals(1+2+3, y.dot(x), EPS);
42 assertEquals(1+2+3, x.dot(y), EPS);
43 assertEquals(1+2+3, Coordinate.dot(x,y), EPS);
44 assertEquals(x.dot(x), x.length2(), EPS);
45 assertEquals(y.dot(y), y.length2(), EPS);
46 assertEquals(Math.sqrt(1+4+9), y.length(), EPS);
47 assertEquals(1, y.normalize().length(), EPS);
49 assertCoordinateEquals(new Coordinate(1.75,1.75,1.75,4),
50 new Coordinate(1,1,1,1).average(new Coordinate(2,2,2,3)));
51 assertCoordinateEquals(new Coordinate(1,1,1,1),
52 new Coordinate(1,1,1,1).average(new Coordinate(2,2,2,0)));
53 assertCoordinateEquals(new Coordinate(1.5,1.5,1.5,0),
54 new Coordinate(1,1,1,0).average(new Coordinate(2,2,2,0)));
59 private void assertCoordinateEquals(Coordinate a, Coordinate b) {
61 assertEquals(a.weight, b.weight, EPS);