create changelog entry
[debian/openrocket] / core / test / net / sf / openrocket / rocketcomponent / ComponentCompareTest.java
1 package net.sf.openrocket.rocketcomponent;
2
3 import static org.junit.Assert.assertFalse;
4 import static org.junit.Assert.assertTrue;
5 import static org.junit.Assert.fail;
6
7 import java.awt.Color;
8 import java.util.Iterator;
9
10 import net.sf.openrocket.gui.util.ColorConversion;
11 import net.sf.openrocket.util.Coordinate;
12 import net.sf.openrocket.util.BaseTestCase.BaseTestCase;
13
14 import org.junit.Test;
15
16 public class ComponentCompareTest extends BaseTestCase {
17
18         @Test
19         public void testComponentEquality() {
20                 
21                 System.out.println("TEST CLASSPATH: " + System.getProperty("java.class.path"));
22                 
23                 Rocket r1 = net.sf.openrocket.util.TestRockets.makeBigBlue();
24                 Rocket r2 = net.sf.openrocket.util.TestRockets.makeBigBlue();
25
26                 Iterator<RocketComponent> i1 = r1.iterator(true);
27                 Iterator<RocketComponent> i2 = r2.iterator(true);
28                 while (i1.hasNext()) {
29                         assertTrue(i2.hasNext());
30                         
31                         RocketComponent c1 = i1.next();
32                         RocketComponent c2 = i2.next();
33                         
34                         ComponentCompare.assertEquality(c1, c2);
35                         ComponentCompare.assertSimilarity(c1, c2);
36                 }
37                 assertFalse(i2.hasNext());
38
39                 
40                 ComponentCompare.assertDeepEquality(r1, r2);
41                 ComponentCompare.assertDeepSimilarity(r1, r2, false);
42                 
43                 
44                 r1.setColor(ColorConversion.fromAwtColor(Color.YELLOW));
45                 try {
46                         ComponentCompare.assertEquality(r1, r2);
47                         fail();
48                 } catch (AssertionError e) {
49                         // Correct behavior
50                 }
51                 
52                 
53                 i1 = r1.iterator(true);
54                 i2 = r2.iterator(true);
55                 boolean finsetfound = false;
56                 while (i1.hasNext()) {
57                         RocketComponent c1 = i1.next();
58                         RocketComponent c2 = i2.next();
59                         
60                         if (c1 instanceof FinSet) {
61                                 finsetfound = true;
62                                 FinSet f1 = (FinSet)c1;
63                                 f1.setTabHeight(0.001);
64                                 
65                                 try {
66                                         ComponentCompare.assertEquality(c1, c2);
67                                         fail();
68                                 } catch (AssertionError e) {
69                                         // Correct behavior
70                                 }
71                         }
72                 }
73                 assertTrue(finsetfound);
74         }
75         
76         
77         @Test
78         public void testComponentSimilarity() throws IllegalFinPointException {
79                 FinSet trap = new TrapezoidFinSet(
80                                 5,   // fins
81                                 5.0, // root
82                                 3.0, // tip
83                                 0.0, // sweep
84                                 2.0); // height
85                 FinSet free = new FreeformFinSet(new Coordinate[] {
86                                 new Coordinate(0,0),
87                                 new Coordinate(0,2),
88                                 new Coordinate(3,2),
89                                 new Coordinate(5,0)
90                 });
91                 free.setFinCount(5);
92                 
93                 ComponentCompare.assertSimilarity(trap, free, true);
94                 
95                 try {
96                         ComponentCompare.assertSimilarity(trap, free);
97                         fail();
98                 } catch (AssertionError e) {
99                         // Correct behavior
100                 }
101                 
102                 free.setName(trap.getName());
103                 ComponentCompare.assertSimilarity(trap, free);
104                 
105                 try {
106                         ComponentCompare.assertEquality(trap, free);
107                         fail();
108                 } catch (AssertionError e) {
109                         // Correct behavior
110                 }
111                 
112                 
113                 BodyTube t1 = new BodyTube();
114                 BodyTube t2 = new BodyTube();
115                 t1.addChild(free);
116                 t2.addChild(trap);
117                 
118                 ComponentCompare.assertDeepSimilarity(t1, t2, false);
119
120                 try {
121                         ComponentCompare.assertDeepEquality(t1, t2);
122                         fail();
123                 } catch (AssertionError e) {
124                         // Correct behavior
125                 }
126                 
127                 t1.addChild(new TrapezoidFinSet());
128
129                 try {
130                         ComponentCompare.assertDeepSimilarity(t1, t2, true);
131                         fail();
132                 } catch (AssertionError e) {
133                         // Correct behavior
134                 }
135                 
136         }
137         
138 }