Morphing2D implements Shape { @Override public Rectangle getBounds() { return getBounds2D().getBounds(); } Morphing2D(Shape startShape, Shape endShape); double getMorphing(); void setMorphing(double morph); @Override Rectangle getBounds(); @Override Rectangle2D getBounds2D(); @Override boolean contains(double x, double y); @Override boolean contains(Point2D p); @Override boolean intersects(double x, double y, double w, double h); @Override boolean intersects(Rectangle2D r); @Override boolean contains(double x, double y, double w, double h); @Override boolean contains(Rectangle2D r); @Override PathIterator getPathIterator(AffineTransform at); @Override PathIterator getPathIterator(AffineTransform at, double flatness);  }
@Test public void testGetBounds() { assertEquals(new Rectangle(0,0,50,50), morph.getBounds()); morph.setMorphing(.5); assertEquals(new Rectangle(25,25,50,50), morph.getBounds()); morph.setMorphing(1); assertEquals(new Rectangle(50,50,50,50), morph.getBounds()); }