Newer
Older
piccolo2d.java / swt / src / test / java / edu / umd / cs / piccolox / swt / PSWTHandleTest.java
package edu.umd.cs.piccolox.swt;

import junit.framework.TestCase;
import edu.umd.cs.piccolo.PNode;
import edu.umd.cs.piccolo.event.PInputEventListener;
import edu.umd.cs.piccolox.util.PBoundsLocator;
import edu.umd.cs.piccolox.util.PLocator;

public class PSWTHandleTest extends TestCase {
    private PNode node;
    private PSWTHandle handle;
    private PBoundsLocator locator;

    public void setUp() throws Exception {
        node = new PNode();
        locator = PBoundsLocator.createEastLocator(node);
        handle = new PSWTHandle(locator);
        node.setBounds(0, 0, 100, 100);
        node.addChild(handle);
    }

    public void testDefaultsAreCorrect() {
        assertEquals(PSWTHandle.DEFAULT_COLOR, handle.getPaint());
        assertEquals(PSWTHandle.DEFAULT_HANDLE_SIZE + 2 /** for border pen */
        , handle.getHeight(), Float.MIN_VALUE);
    }

    public void testLocatorPersists() {
        assertSame(locator, handle.getLocator());

        PLocator newLocator = PBoundsLocator.createWestLocator(node);
        handle.setLocator(newLocator);
        assertSame(newLocator, handle.getLocator());
    }

    public void testHandleHasDragHandlerInstalled() {
        PInputEventListener dragHandler = handle.getHandleDraggerHandler();
        assertNotNull(dragHandler);

        PInputEventListener[] installedListeners = handle.getInputEventListeners();
        assertEquals(1, installedListeners.length);
        assertSame(dragHandler, installedListeners[0]);
    }

    public void testChangingParentDoesNotChangeLocatorNode() {
        handle.relocateHandle();
        PNode newParent = new PNode();
        newParent.setBounds(50, 50, 100, 100);

        final double originalX = handle.getX();
        handle.setParent(newParent);

        final double newX = handle.getX();

        assertEquals(newX, originalX, Double.MIN_VALUE);
    }
}