create changelog entry
[debian/openrocket] / core / test / net / sf / openrocket / util / CoordinateTest.java
1 package net.sf.openrocket.util;
2
3 import static org.junit.Assert.*;
4
5 import org.junit.Test;
6
7 public class CoordinateTest {
8         
9         private static final double EPS = 0.0000000001;
10
11         @Test
12         public void coordinateTest() {
13                 
14                 Coordinate x = new Coordinate(1,1,1,1);
15                 Coordinate y = new Coordinate(1,2,3,4);
16                 
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));
22                 
23                 assertFalse(x.isNaN());
24                 assertTrue(x.setX(Double.NaN).isNaN());
25                 assertTrue(Coordinate.NaN.isNaN());
26                 
27                 assertTrue(x.isWeighted());
28                 assertFalse(x.setWeight(0).isWeighted());
29                 
30                 
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));
35
36                 assertCoordinateEquals(new Coordinate(0,-1,-2,1), x.sub(y));
37                 assertCoordinateEquals(new Coordinate(0,-1,-2,1), x.sub(1,2,3));
38
39                 assertCoordinateEquals(new Coordinate(2,4,6,8), y.multiply(2));
40                 
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);
48                 
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)));
55                 
56         }
57         
58         
59         private void assertCoordinateEquals(Coordinate a, Coordinate b) {
60                 assertEquals(a, b);
61                 assertEquals(a.weight, b.weight, EPS);
62         }
63         
64 }