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