/* * Copyright (C) 2010 Brockmann Consult GmbH (info@brockmann-consult.de) * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the Free * Software Foundation; either version 3 of the License, or (at your option) * any later version. * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, see http://www.gnu.org/licenses/ */ package com.bc.ceres.swing.figure; import junit.framework.TestCase; import java.awt.Shape; import java.awt.geom.AffineTransform; public class AbstractFigureTest extends TestCase { public void testDefaultProperties() { Figure f = new AbstractFigureImpl(); assertNotNull(f.getChangeListeners()); assertEquals(false, f.isSelectable()); assertEquals(0, f.getChangeListeners().length); assertEquals(null, f.getFigure(null, new AffineTransform())); assertEquals(0, f.getFigureCount()); assertEquals(0, f.getMaxSelectionStage()); assertNull(f.getFigure(null, new AffineTransform())); assertNotNull(f.getFigures(null)); assertEquals(0, f.getFigures(null).length); assertNotNull(f.getFigures()); assertEquals(0, f.getFigures().length); assertEquals(0, f.getMaxSelectionStage()); assertNotNull(f.createHandles(1)); assertEquals(0, f.createHandles(1).length); } public void testThatCloneDoesNotCopyListeners() { Figure f = new AbstractFigureImpl(); f.addChangeListener(new FigureChangeListener() { @Override public void figureChanged(FigureChangeEvent event) { } }); AbstractFigure cf = (AbstractFigure) f.clone(); assertNotNull(cf.getChangeListeners()); assertEquals(0, cf.getChangeListeners().length); } public void testListeners() { AbstractFigureImpl f = new AbstractFigureImpl(); final Figure[] figureBuf = new Figure[1]; f.addChangeListener(new FigureChangeListener() { @Override public void figureChanged(FigureChangeEvent event) { figureBuf[0] = event.getSourceFigure(); } }); assertEquals(null, figureBuf[0]); f.postChangeEvent(); assertEquals(f, figureBuf[0]); } public void testDisposeRemovesListeners() { Figure f = new AbstractFigureImpl(); f.addChangeListener(new FigureChangeListener() { @Override public void figureChanged(FigureChangeEvent event) { } }); FigureChangeListener[] listeners = f.getChangeListeners(); assertNotNull(listeners); assertTrue(listeners.length >= 1); f.dispose(); listeners = f.getChangeListeners(); assertNotNull(listeners); assertEquals(0, listeners.length); } public void testGeometricOperationsAreNotSupported() { Figure f = new AbstractFigureImpl(); try { f.move(0, 0); fail("IllegalStateException expected!"); } catch (IllegalStateException e) { // ok } try { f.rotate(null, 0); fail("IllegalStateException expected!"); } catch (IllegalStateException e) { // ok } try { f.scale(null, 0, 0); fail("IllegalStateException expected!"); } catch (IllegalStateException e) { // ok } } public void testThatChildrenAreNotSupported() { Figure f = new AbstractFigureImpl(); try { f.addFigure(new TestFigure()); fail("IllegalStateException expected!"); } catch (IllegalStateException e) { // ok } try { f.addFigure(0, new TestFigure()); fail("IllegalStateException expected!"); } catch (IllegalStateException e) { // ok } try { f.addFigures(new TestFigure(), new TestFigure()); fail("IllegalStateException expected!"); } catch (IllegalStateException e) { // ok } try { f.getFigure(0); fail("IllegalStateException expected!"); } catch (IllegalStateException e) { // ok } try { f.removeFigure(new TestFigure()); fail("IllegalStateException expected!"); } catch (IllegalStateException e) { // ok } } }