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