package net.sf.openrocket.rocketcomponent; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.util.Iterator; import net.sf.openrocket.util.Color; import net.sf.openrocket.util.Coordinate; import net.sf.openrocket.util.BaseTestCase.BaseTestCase; import org.junit.Test; public class ComponentCompareTest extends BaseTestCase { @Test public void testComponentEquality() { //System.out.println("TEST CLASSPATH: " + System.getProperty("java.class.path")); Rocket r1 = net.sf.openrocket.util.TestRockets.makeBigBlue(); Rocket r2 = net.sf.openrocket.util.TestRockets.makeBigBlue(); Iterator<RocketComponent> i1 = r1.iterator(true); Iterator<RocketComponent> i2 = r2.iterator(true); while (i1.hasNext()) { assertTrue(i2.hasNext()); RocketComponent c1 = i1.next(); RocketComponent c2 = i2.next(); ComponentCompare.assertEquality(c1, c2); ComponentCompare.assertSimilarity(c1, c2); } assertFalse(i2.hasNext()); ComponentCompare.assertDeepEquality(r1, r2); ComponentCompare.assertDeepSimilarity(r1, r2, false); r1.setColor(Color.BLACK); try { ComponentCompare.assertEquality(r1, r2); fail(); } catch (AssertionError e) { // Correct behavior } i1 = r1.iterator(true); i2 = r2.iterator(true); boolean finsetfound = false; while (i1.hasNext()) { RocketComponent c1 = i1.next(); RocketComponent c2 = i2.next(); if (c1 instanceof FinSet) { finsetfound = true; FinSet f1 = (FinSet) c1; f1.setTabHeight(0.001); try { ComponentCompare.assertEquality(c1, c2); fail(); } catch (AssertionError e) { // Correct behavior } } } assertTrue(finsetfound); } @Test public void testComponentSimilarity() throws IllegalFinPointException { FinSet trap = new TrapezoidFinSet( 5, // fins 5.0, // root 3.0, // tip 0.0, // sweep 2.0); // height FinSet free = new FreeformFinSet(new Coordinate[] { new Coordinate(0, 0), new Coordinate(0, 2), new Coordinate(3, 2), new Coordinate(5, 0) }); free.setFinCount(5); ComponentCompare.assertSimilarity(trap, free, true); try { ComponentCompare.assertSimilarity(trap, free); fail(); } catch (AssertionError e) { // Correct behavior } free.setName(trap.getName()); ComponentCompare.assertSimilarity(trap, free); try { ComponentCompare.assertEquality(trap, free); fail(); } catch (AssertionError e) { // Correct behavior } BodyTube t1 = new BodyTube(); BodyTube t2 = new BodyTube(); t1.addChild(free); t2.addChild(trap); ComponentCompare.assertDeepSimilarity(t1, t2, false); try { ComponentCompare.assertDeepEquality(t1, t2); fail(); } catch (AssertionError e) { // Correct behavior } t1.addChild(new TrapezoidFinSet()); try { ComponentCompare.assertDeepSimilarity(t1, t2, true); fail(); } catch (AssertionError e) { // Correct behavior } } }