package greenfoot.mouse;
import greenfoot.Actor;
import greenfoot.MouseInfo;
import greenfoot.TestObject;
import greenfoot.TestUtilDelegate;
import greenfoot.World;
import greenfoot.WorldCreator;
import greenfoot.WorldVisitor;
import greenfoot.core.Simulation;
import greenfoot.gui.input.mouse.MousePollingManager;
import greenfoot.gui.input.mouse.WorldLocator;
import greenfoot.util.GreenfootUtil;
import java.awt.event.MouseEvent;
import java.util.Collection;
import javafx.scene.input.MouseButton;
import javax.swing.JPanel;
import junit.framework.TestCase;
| Tests of the implementation of the Greenfoot mouse support.
| TODO drags on boundaries
| TODO things happening outside actors
| TODO buffering events until new ones arrive
|
| Note that Swing(/OS?) generates mouse drag events with no nominated button.
| These tests reflect that.
|
| @author Poul Henriksen
|
public class MousePollTest
extends TestCase{
private MousePollingManager mouseMan;
| Panel used to simulate events on
|
private JPanel panel = new JPanel();
private World world;
private TestObject actorAtClick;
private TestObject actorOutsideClick;
@Override
protected void setUp()
{
GreenfootUtil.initialise(new TestUtilDelegate());
Simulation.initialize();
world = WorldCreator.createWorld(200, 200, 1);
actorAtClick = new TestObject(10,10);
world.addObject(actorAtClick, 5,5);
actorOutsideClick = new TestObject(10,10);
world.addObject(actorOutsideClick, 50,50);
mouseMan = new MousePollingManager(new WorldLocator() {
public Actor getTopMostActorAt(int worldPixelPositionX, int worldPixelPositionY)
{
Collection<?> actors = WorldVisitor.getObjectsAtPixel(world,
worldPixelPositionX, worldPixelPositionY);
if (actors.isEmpty())
{
return null;
}
return (Actor) actors.iterator().next();
}
public int getTranslatedX(int x)
{
return WorldVisitor.toCellFloor(world, x);
}
public int getTranslatedY(int y)
{
return WorldVisitor.toCellFloor(world, y);
}
});
}
private void dispatch(MouseEvent e)
{
int x = e.getX();
int y = e.getY();
MouseButton button = MouseButton.values()[e.getButton()];
int clickCount = e.getClickCount();
switch (e.getID())
{
case MouseEvent.MOUSE_CLICKED:
mouseMan.mouseClicked(x, y, button, clickCount);
break;
case MouseEvent.MOUSE_PRESSED:
mouseMan.mousePressed(x, y, button);
break;
case MouseEvent.MOUSE_DRAGGED:
mouseMan.mouseDragged(x, y, button);
break;
case MouseEvent.MOUSE_RELEASED:
mouseMan.mouseReleased(x, y, button);
break;
case MouseEvent.MOUSE_MOVED:
mouseMan.mouseMoved(x, y);
break;
case MouseEvent.MOUSE_EXITED:
mouseMan.mouseExited();
break;
}
}
| Asserts mouseMan has isMouse.. events all returning false
|
private void assertBlank()
{
for (Object obj : new Object[] {actorAtClick, actorOutsideClick, null
})
{
assertFalse(mouseMan.isMouseClicked(obj));
assertFalse(mouseMan.isMouseDragEnded(obj));
assertFalse(mouseMan.isMouseDragged(obj));
assertFalse(mouseMan.isMouseMoved(obj));
assertFalse(mouseMan.isMousePressed(obj));
}
MouseInfo info = mouseMan.getMouseInfo();
if (info != null)
{
assertEquals(0, info.getClickCount());
assertEquals(0, info.getButton());
assertNull(info.getActor());
}
}
| Test that a click was on a specific actor and no other actors.
|
public void testSingleLeftClickOnActor()
{
mouseMan.newActStarted();
assertBlank();
MouseEvent event = new MouseEvent(panel, MouseEvent.MOUSE_PRESSED, System.currentTimeMillis(), 0, 5, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_RELEASED, System.currentTimeMillis(), 0, 5, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_CLICKED, System.currentTimeMillis(), 0, 5, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
assertBlank();
mouseMan.newActStarted();
assertTrue(mouseMan.isMousePressed(actorAtClick));
assertTrue(mouseMan.isMousePressed(null));
assertTrue(mouseMan.isMouseClicked(actorAtClick));
assertTrue(mouseMan.isMouseClicked(null));
assertFalse(mouseMan.isMouseClicked(actorOutsideClick));
assertTrue(mouseMan.isMouseClicked(actorAtClick));
MouseInfo mouseInfo = mouseMan.getMouseInfo();
assertEquals(1, mouseInfo.getButton());
assertEquals(1, mouseInfo.getClickCount());
mouseMan.newActStarted();
assertBlank();
mouseInfo = mouseMan.getMouseInfo();
assertEquals(0, mouseInfo.getClickCount());
}
| Test holding mouse down for one frame then releasing
|
public void testLongLeftClickOnActor()
{
mouseMan.newActStarted();
assertBlank();
MouseEvent event = new MouseEvent(panel, MouseEvent.MOUSE_PRESSED, System.currentTimeMillis(), 0, 5, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
assertBlank();
mouseMan.newActStarted();
assertTrue(mouseMan.isMousePressed(actorAtClick));
assertFalse(mouseMan.isMouseClicked(actorAtClick));
assertFalse(mouseMan.isMousePressed(actorOutsideClick));
assertFalse(mouseMan.isMousePressed(world));
assertTrue(mouseMan.isMousePressed(null));
assertFalse(mouseMan.isMouseClicked(null));
assertTrue(mouseMan.isMousePressed(actorAtClick));
MouseInfo mouseInfo = mouseMan.getMouseInfo();
assertEquals(1, mouseInfo.getButton());
assertEquals(0, mouseInfo.getClickCount());
event = new MouseEvent(panel, MouseEvent.MOUSE_RELEASED, System.currentTimeMillis(), 0, 5, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_CLICKED, System.currentTimeMillis(), 0, 5, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
mouseMan.newActStarted();
assertFalse(mouseMan.isMousePressed(actorAtClick));
assertFalse(mouseMan.isMousePressed(null));
assertTrue(mouseMan.isMouseClicked(actorAtClick));
assertTrue(mouseMan.isMouseClicked(null));
}
| Test mouse dragging within one act
|
public void testSimpleMouseDraggedOnActor()
{
mouseMan.newActStarted();
MouseEvent event = new MouseEvent(panel, MouseEvent.MOUSE_PRESSED, System.currentTimeMillis(), 0, 5, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_DRAGGED, System.currentTimeMillis(), 0, 6, 6, 1, false, 0);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_RELEASED, System.currentTimeMillis(), 0, 7, 8, 1, false, MouseEvent.BUTTON1);
dispatch(event);
assertBlank();
mouseMan.newActStarted();
assertTrue(mouseMan.isMouseDragEnded(actorAtClick));
assertFalse(mouseMan.isMouseDragged(actorAtClick));
assertTrue(mouseMan.isMousePressed(actorAtClick));
assertTrue(mouseMan.isMouseClicked(actorAtClick));
MouseInfo info = mouseMan.getMouseInfo();
assertEquals(7, info.getX());
assertEquals(8, info.getY());
mouseMan.newActStarted();
assertBlank();
}
public void testLongMouseDraggedOnActor()
{
mouseMan.newActStarted();
MouseEvent event = new MouseEvent(panel, MouseEvent.MOUSE_PRESSED, System.currentTimeMillis(), 0, 5, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
assertBlank();
mouseMan.newActStarted();
assertTrue(mouseMan.isMousePressed(actorAtClick));
mouseMan.newActStarted();
assertFalse(mouseMan.isMousePressed(actorAtClick));
assertNotNull(mouseMan.getMouseInfo());
event = new MouseEvent(panel, MouseEvent.MOUSE_DRAGGED, System.currentTimeMillis(), 0, 6, 6, 1, false, 0);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_DRAGGED, System.currentTimeMillis(), 0, 7, 7, 1, false, 0);
dispatch(event);
mouseMan.newActStarted();
assertTrue(mouseMan.isMouseDragged(actorAtClick));
assertTrue(mouseMan.getMouseInfo().getX() == 7 && mouseMan.getMouseInfo().getY() == 7);
event = new MouseEvent(panel, MouseEvent.MOUSE_DRAGGED, System.currentTimeMillis(), 0, 8, 8, 1, false, 0);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_DRAGGED, System.currentTimeMillis(), 0, 9, 9, 1, false, 0);
dispatch(event);
mouseMan.newActStarted();
assertTrue(mouseMan.isMouseDragged(actorAtClick));
assertTrue(mouseMan.getMouseInfo().getX() == 9 && mouseMan.getMouseInfo().getY() == 9);
mouseMan.newActStarted();
assertFalse(mouseMan.isMousePressed(actorAtClick));
assertFalse(mouseMan.isMouseDragged(actorAtClick));
assertNotNull(mouseMan.getMouseInfo());
event = new MouseEvent(panel, MouseEvent.MOUSE_RELEASED, System.currentTimeMillis(), 0, 14, 14, 1, false, MouseEvent.BUTTON1);
dispatch(event);
mouseMan.newActStarted();
assertTrue(mouseMan.getMouseInfo().getX() == 14 && mouseMan.getMouseInfo().getY() == 14);
assertTrue(mouseMan.isMouseDragEnded(actorAtClick));
assertFalse(mouseMan.isMouseClicked(actorAtClick));
}
| Test mouse dragging across act boundaries
|
public void testLongMouseMovedOnActor()
{
mouseMan.newActStarted();
MouseEvent event = new MouseEvent(panel, MouseEvent.MOUSE_MOVED, System.currentTimeMillis(), 0, 5, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
mouseMan.newActStarted();
assertTrue(mouseMan.isMouseMoved(actorAtClick));
assertTrue(mouseMan.isMouseMoved(null));
assertFalse(mouseMan.isMouseMoved(actorOutsideClick));
assertFalse(mouseMan.isMouseMoved(world));
mouseMan.newActStarted();
assertFalse(mouseMan.isMouseMoved(actorAtClick));
event = new MouseEvent(panel, MouseEvent.MOUSE_MOVED, System.currentTimeMillis(), 0, 6, 6, 1, false, MouseEvent.BUTTON1);
dispatch(event);
mouseMan.newActStarted();
assertTrue(mouseMan.isMouseMoved(actorAtClick));
assertFalse(mouseMan.isMouseClicked(actorAtClick));
}
| Tests behaviour when several buttons are pressed and dragged at the same
| time. We just want to ensure that nothing crashes or produces exceptions.
| Otherwise the behaviour is undefined.
|
public void testMultipleButtons()
{
Exception exception = null;
try {
MouseEvent event = new MouseEvent(panel, MouseEvent.MOUSE_PRESSED, System.currentTimeMillis(), 0, 5, 5, 1,
false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_DRAGGED, System.currentTimeMillis(), 0, 6, 6, 1, false,
0);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_PRESSED, System.currentTimeMillis(), 0, 5, 5, 1, false,
MouseEvent.BUTTON2);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_DRAGGED, System.currentTimeMillis(), 0, 6, 6, 1, false,
0);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_DRAGGED, System.currentTimeMillis(), 0, 6, 6, 1, false,
0);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_RELEASED, System.currentTimeMillis(), 0, 7, 7, 1, false,
MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_DRAGGED, System.currentTimeMillis(), 0, 6, 6, 1, false,
0);
dispatch(event);
mouseMan.newActStarted();
mouseMan.isMouseClicked(null);
mouseMan.isMousePressed(null);
mouseMan.isMouseMoved(null);
mouseMan.isMouseDragged(null);
mouseMan.isMouseDragEnded(null);
MouseInfo info = mouseMan.getMouseInfo();
info.getActor();
info.getX();
info.getButton();
}
catch (Exception e) {
exception = e;
}
assertNull(exception);
}
public void testButton2()
{
MouseEvent event = new MouseEvent(panel, MouseEvent.MOUSE_PRESSED, System.currentTimeMillis(), 0, 5, 5, 1, false, MouseEvent.BUTTON2);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_DRAGGED, System.currentTimeMillis(), 0, 6, 6, 0, false, MouseEvent.BUTTON2);
dispatch(event);
mouseMan.newActStarted();
assertNotNull(mouseMan.getMouseInfo());
mouseMan.newActStarted();
event = new MouseEvent(panel, MouseEvent.MOUSE_DRAGGED, System.currentTimeMillis(), 0, 5, 5, 0, false, 0);
dispatch(event);
mouseMan.newActStarted();
assertNotNull(mouseMan.getMouseInfo());
event = new MouseEvent(panel, MouseEvent.MOUSE_DRAGGED, System.currentTimeMillis(), 0, 8, 8, 0, false, 0);
dispatch(event);
mouseMan.newActStarted();
assertNotNull(mouseMan.getMouseInfo());
event = new MouseEvent(panel, MouseEvent.MOUSE_RELEASED, System.currentTimeMillis(), 0, 7, 7, 1, false, MouseEvent.BUTTON2);
dispatch(event);
mouseMan.newActStarted();
assertTrue(mouseMan.isMouseDragEnded(actorAtClick));
}
| Test a world that has a cell size bigger than 1x1
|
public void testBigCellSize()
{
final World world = WorldCreator.createWorld(20, 20, 10);
mouseMan = new MousePollingManager(new WorldLocator() {
public Actor getTopMostActorAt(int worldPixelPositionX, int worldPixelPositionY)
{
Collection<?> actors = WorldVisitor.getObjectsAtPixel(world,
worldPixelPositionX, worldPixelPositionY);
if (actors.isEmpty())
{
return null;
}
return (Actor) actors.iterator().next();
}
public int getTranslatedX(int x)
{
return WorldVisitor.toCellFloor(world, x);
}
public int getTranslatedY(int y)
{
return WorldVisitor.toCellFloor(world, y);
}
});
MouseEvent event = new MouseEvent(panel, MouseEvent.MOUSE_MOVED, System.currentTimeMillis(), 0, 5, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
mouseMan.newActStarted();
assertTrue(mouseMan.isMouseMoved(null));
event = new MouseEvent(panel, MouseEvent.MOUSE_MOVED, System.currentTimeMillis(), 0, 55, 75, 1, false, MouseEvent.BUTTON1);
dispatch(event);
mouseMan.newActStarted();
assertTrue(mouseMan.isMouseMoved(null));
MouseInfo info = mouseMan.getMouseInfo();
assertEquals(5, info.getX());
assertEquals(7, info.getY());
}
| Test priorities between different mouse events.
|
| Priorities with highest priority first::
| <ul>
| <li> dragEnd </li>
| <li> click </li>
| <li> press </li>
| <li> drag </li>
| <li> move </li>
| </ul>
|
| In general only one event can happen in a frame, the only exception is
| click and press which could happen in the same frame if a mouse is
| clicked in one frame.
| If several of the same type of event happens, then the last one is used.
|
|
public void testDragEndPriorities()
{
MouseEvent event = new MouseEvent(panel, MouseEvent.MOUSE_MOVED, System.currentTimeMillis(), 0, 1, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_PRESSED, System.currentTimeMillis(), 0, 2, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_RELEASED, System.currentTimeMillis(), 0, 3, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_CLICKED, System.currentTimeMillis(), 0, 4, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_PRESSED, System.currentTimeMillis(), 0, 5, 2, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_DRAGGED, System.currentTimeMillis(), 0, 6, 3, 1, false, 0);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_RELEASED, System.currentTimeMillis(), 0, 7, 8, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_MOVED, System.currentTimeMillis(), 0, 8, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_PRESSED, System.currentTimeMillis(), 0, 9, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_RELEASED, System.currentTimeMillis(), 0, 1, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_CLICKED, System.currentTimeMillis(), 0, 2, 4, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_PRESSED, System.currentTimeMillis(), 0, 3, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_DRAGGED, System.currentTimeMillis(), 0, 4, 5, 1, false, 0);
dispatch(event);
mouseMan.newActStarted();
MouseInfo info = mouseMan.getMouseInfo();
assertEquals(7, info.getX());
assertEquals(8, info.getY());
assertTrue(mouseMan.isMouseDragEnded(actorAtClick));
assertTrue(mouseMan.isMouseClicked(actorAtClick));
assertFalse(mouseMan.isMouseMoved(actorAtClick));
assertFalse(mouseMan.isMouseDragged(actorAtClick));
assertTrue(mouseMan.isMousePressed(actorAtClick));
event = new MouseEvent(panel, MouseEvent.MOUSE_PRESSED, System.currentTimeMillis(), 0, 5, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_DRAGGED, System.currentTimeMillis(), 0, 5, 5, 1, false, 0);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_RELEASED, System.currentTimeMillis(), 0, 6, 6, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_PRESSED, System.currentTimeMillis(), 0, 5, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_DRAGGED, System.currentTimeMillis(), 0, 5, 5, 1, false, 0);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_RELEASED, System.currentTimeMillis(), 0, 3, 3, 1, false, MouseEvent.BUTTON1);
dispatch(event);
mouseMan.newActStarted();
assertTrue(mouseMan.isMouseDragEnded(actorAtClick));
info = mouseMan.getMouseInfo();
assertEquals(3, info.getX());
assertEquals(3, info.getY());
assertFalse(mouseMan.isMouseMoved(actorAtClick));
assertFalse(mouseMan.isMouseDragged(actorAtClick));
assertTrue(mouseMan.isMousePressed(actorAtClick));
assertTrue(mouseMan.isMouseClicked(actorAtClick));
}
public void testClickPriorities()
{
MouseEvent event = new MouseEvent(panel, MouseEvent.MOUSE_MOVED, System.currentTimeMillis(), 0, 5, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_PRESSED, System.currentTimeMillis(), 0, 5, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_RELEASED, System.currentTimeMillis(), 0, 5, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_CLICKED, System.currentTimeMillis(), 0, 8, 8, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_MOVED, System.currentTimeMillis(), 0, 5, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_PRESSED, System.currentTimeMillis(), 0, 5, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_DRAGGED, System.currentTimeMillis(), 0, 5, 5, 1, false, 0);
dispatch(event);
mouseMan.newActStarted();
assertTrue(mouseMan.isMouseClicked(actorAtClick));
MouseInfo info = mouseMan.getMouseInfo();
assertEquals(8, info.getX());
assertEquals(8, info.getY());
assertFalse(mouseMan.isMouseMoved(actorAtClick));
assertFalse(mouseMan.isMouseDragged(actorAtClick));
assertTrue(mouseMan.isMousePressed(actorAtClick));
assertFalse(mouseMan.isMouseDragEnded(actorAtClick));
event = new MouseEvent(panel, MouseEvent.MOUSE_PRESSED, System.currentTimeMillis(), 0, 1, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_RELEASED, System.currentTimeMillis(), 0, 2, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_CLICKED, System.currentTimeMillis(), 0, 3, 7, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_PRESSED, System.currentTimeMillis(), 0, 4, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_RELEASED, System.currentTimeMillis(), 0, 5, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_CLICKED, System.currentTimeMillis(), 0, 6, 4, 1, false, MouseEvent.BUTTON1);
dispatch(event);
mouseMan.newActStarted();
info = mouseMan.getMouseInfo();
assertEquals(6, info.getX());
assertEquals(4, info.getY());
assertTrue(mouseMan.isMouseClicked(actorAtClick));
assertFalse(mouseMan.isMouseMoved(actorAtClick));
assertFalse(mouseMan.isMouseDragged(actorAtClick));
assertTrue(mouseMan.isMousePressed(actorAtClick));
assertFalse(mouseMan.isMouseDragEnded(actorAtClick));
}
public void testPressPriorities()
{
MouseEvent event = new MouseEvent(panel, MouseEvent.MOUSE_MOVED, System.currentTimeMillis(), 0, 5, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_RELEASED, System.currentTimeMillis(), 0, 5, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_PRESSED, System.currentTimeMillis(), 0, 8, 8, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_RELEASED, System.currentTimeMillis(), 0, 5, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_DRAGGED, System.currentTimeMillis(), 0, 5, 5, 1, false, 0);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_MOVED, System.currentTimeMillis(), 0, 5, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
mouseMan.newActStarted();
assertTrue(mouseMan.isMousePressed(actorAtClick));
MouseInfo info = mouseMan.getMouseInfo();
assertEquals(8, info.getX());
assertEquals(8, info.getY());
assertFalse(mouseMan.isMouseMoved(actorAtClick));
assertFalse(mouseMan.isMouseDragged(actorAtClick));
assertFalse(mouseMan.isMouseClicked(actorAtClick));
assertFalse(mouseMan.isMouseDragEnded(actorAtClick));
event = new MouseEvent(panel, MouseEvent.MOUSE_PRESSED, System.currentTimeMillis(), 0, 1, 6, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_RELEASED, System.currentTimeMillis(), 0, 2, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_MOVED, System.currentTimeMillis(), 0, 3, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_PRESSED, System.currentTimeMillis(), 0, 4, 3, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_RELEASED, System.currentTimeMillis(), 0, 5, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
mouseMan.newActStarted();
info = mouseMan.getMouseInfo();
assertEquals(4, info.getX());
assertEquals(3, info.getY());
assertTrue(mouseMan.isMousePressed(actorAtClick));
assertFalse(mouseMan.isMouseMoved(actorAtClick));
assertFalse(mouseMan.isMouseDragged(actorAtClick));
assertFalse(mouseMan.isMouseClicked(actorAtClick));
assertFalse(mouseMan.isMouseDragEnded(actorAtClick));
}
public void testDontKeepDataTillFirstClick()
{
MouseEvent event = new MouseEvent(panel, MouseEvent.MOUSE_MOVED, System.currentTimeMillis(), 0, 5, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_PRESSED, System.currentTimeMillis(), 0, 5, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_RELEASED, System.currentTimeMillis(), 0, 5, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_CLICKED, System.currentTimeMillis(), 0, 5, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
mouseMan.newActStarted();
mouseMan.newActStarted();
assertBlank();
mouseMan.newActStarted();
assertBlank();
}
public void testMoveClickWithinActor()
{
MouseEvent event = new MouseEvent(panel, MouseEvent.MOUSE_MOVED, System.currentTimeMillis(), 0, 5, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_PRESSED, System.currentTimeMillis(), 0, 5, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_DRAGGED, System.currentTimeMillis(), 0, 6, 6, 1, false, 0);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_RELEASED, System.currentTimeMillis(), 0, 6, 6, 1, false, MouseEvent.BUTTON1);
dispatch(event);
mouseMan.newActStarted();
assertTrue(mouseMan.isMouseDragEnded(actorAtClick));
assertTrue(mouseMan.isMouseClicked(actorAtClick));
assertTrue(mouseMan.isMousePressed(actorAtClick));
event = new MouseEvent(panel, MouseEvent.MOUSE_MOVED, System.currentTimeMillis(), 0, 5, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_PRESSED, System.currentTimeMillis(), 0, 5, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_DRAGGED, System.currentTimeMillis(), 0, 26, 26, 1, false, 0);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_RELEASED, System.currentTimeMillis(), 0, 26, 26, 1, false, MouseEvent.BUTTON1);
dispatch(event);
mouseMan.newActStarted();
assertTrue(mouseMan.isMouseDragEnded(actorAtClick));
assertFalse(mouseMan.isMouseClicked(actorAtClick));
assertTrue(mouseMan.isMousePressed(actorAtClick));
event = new MouseEvent(panel, MouseEvent.MOUSE_MOVED, System.currentTimeMillis(), 0, 25, 25, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_PRESSED, System.currentTimeMillis(), 0, 25, 25, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_DRAGGED, System.currentTimeMillis(), 0, 6, 6, 1, false, 0);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_RELEASED, System.currentTimeMillis(), 0, 6, 6, 1, false, MouseEvent.BUTTON1);
dispatch(event);
mouseMan.newActStarted();
assertFalse(mouseMan.isMouseDragEnded(actorAtClick));
assertFalse(mouseMan.isMouseClicked(actorAtClick));
assertFalse(mouseMan.isMousePressed(actorAtClick));
}
public void testNullPressDragClickOnActorBounds()
{
MouseEvent event = new MouseEvent(panel, MouseEvent.MOUSE_MOVED, System.currentTimeMillis(), 0, 5, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_PRESSED, System.currentTimeMillis(), 0, 5, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_DRAGGED, System.currentTimeMillis(), 0, 26, 26, 1, false, 0);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_RELEASED, System.currentTimeMillis(), 0, 26, 26, 1, false, MouseEvent.BUTTON1);
dispatch(event);
mouseMan.newActStarted();
assertTrue(mouseMan.isMouseDragEnded(null));
assertTrue(mouseMan.isMouseClicked(null));
assertTrue(mouseMan.isMousePressed(null));
event = new MouseEvent(panel, MouseEvent.MOUSE_MOVED, System.currentTimeMillis(), 0, 25, 25, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_PRESSED, System.currentTimeMillis(), 0, 25, 25, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_DRAGGED, System.currentTimeMillis(), 0, 6, 6, 1, false, 0);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_RELEASED, System.currentTimeMillis(), 0, 6, 6, 1, false, MouseEvent.BUTTON1);
dispatch(event);
mouseMan.newActStarted();
assertFalse(mouseMan.isMouseMoved(null));
assertTrue(mouseMan.isMouseDragEnded(null));
assertTrue(mouseMan.isMouseClicked(null));
assertTrue(mouseMan.isMousePressed(null));
assertTrue(mouseMan.isMousePressed(world));
assertTrue(mouseMan.isMouseDragEnded(world));
assertFalse(mouseMan.isMouseClicked(world));
assertFalse(mouseMan.isMousePressed(actorAtClick));
assertFalse(mouseMan.isMouseDragEnded(actorAtClick));
assertFalse(mouseMan.isMouseClicked(actorAtClick));
assertFalse(mouseMan.isMousePressed(actorAtClick));
}
public void testMultipleDragsInFrame()
{
MouseEvent event = new MouseEvent(panel, MouseEvent.MOUSE_MOVED, System.currentTimeMillis(), 0, 5, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_PRESSED, System.currentTimeMillis(), 0, 5, 5, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_DRAGGED, System.currentTimeMillis(), 0, 26, 26, 1, false, 0);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_RELEASED, System.currentTimeMillis(), 0, 26, 26, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_MOVED, System.currentTimeMillis(), 0, 25, 25, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_PRESSED, System.currentTimeMillis(), 0, 25, 25, 1, false, MouseEvent.BUTTON1);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_DRAGGED, System.currentTimeMillis(), 0, 6, 6, 1, false, 0);
dispatch(event);
event = new MouseEvent(panel, MouseEvent.MOUSE_RELEASED, System.currentTimeMillis(), 0, 6, 6, 1, false, MouseEvent.BUTTON1);
dispatch(event);
mouseMan.newActStarted();
assertFalse(mouseMan.isMouseMoved(null));
assertTrue(mouseMan.isMouseDragEnded(null));
assertTrue(mouseMan.isMouseClicked(null));
assertTrue(mouseMan.isMousePressed(null));
assertTrue(mouseMan.isMousePressed(world));
assertTrue(mouseMan.isMouseDragEnded(world));
assertFalse(mouseMan.isMouseClicked(world));
assertFalse(mouseMan.isMousePressed(actorAtClick));
assertFalse(mouseMan.isMouseDragEnded(actorAtClick));
assertFalse(mouseMan.isMouseClicked(actorAtClick));
assertFalse(mouseMan.isMousePressed(actorAtClick));
}
}
top,
use,
map,
class MousePollTest
. setUp
. getTopMostActorAt
. getTranslatedX
. getTranslatedY
. dispatch
. assertBlank
. testSingleLeftClickOnActor
. testLongLeftClickOnActor
. testSimpleMouseDraggedOnActor
. testLongMouseDraggedOnActor
. testLongMouseMovedOnActor
. testMultipleButtons
. testButton2
. testBigCellSize
. getTopMostActorAt
. getTranslatedX
. getTranslatedY
. testDragEndPriorities
. testClickPriorities
. testPressPriorities
. testDontKeepDataTillFirstClick
. testMoveClickWithinActor
. testNullPressDragClickOnActorBounds
. testMultipleDragsInFrame
905 neLoCode
+ 32 LoComm