MouseTracker Original Events in Handlers

MouseTracker Unit Tests
This commit is contained in:
Mark Salsbery 2013-09-20 09:17:48 -07:00
parent 56ef12e850
commit 4adeacdc5e
2 changed files with 106 additions and 22 deletions

View File

@ -61,19 +61,49 @@
} ); } );
// ---------- // ----------
asyncTest( 'canvas-drag canvas-release canvas-click', function () { asyncTest( 'MouseTracker, EventHandler canvas-drag canvas-release canvas-click', function () {
var dragCount = 10, var $canvas = $( viewer.element ).find( '.openseadragon-canvas' ).not( '.navigator .openseadragon-canvas' ),
dragMovesHandled = 0, mouseTracker = null,
releasesHandled = 0, userData = { item1: 'Test user data', item2: Math.random() },
releasesExpected = 1; originalUserData = { item1: userData.item1, item2: userData.item2 },
dragCount = 10,
dragsHandledEventHandler = 0,
releasesHandledEventHandler = 0,
clicksHandledEventHandler = 0,
eventsHandledMouseTracker = 0,
originalEventsPassedMouseTracker = 0,
releasesExpected = 1,
clicksExpected = 1;
var openHandler = function ( eventSender, eventData ) { var onOpen = function ( eventSender, eventData ) {
viewer.removeHandler( 'open', openHandler ); viewer.removeHandler( 'open', onOpen );
viewer.addHandler( 'canvas-drag', canvasDragHandler ); viewer.addHandler( 'canvas-drag', onEventHandlerDrag );
viewer.addHandler( 'canvas-release', canvasReleaseHandler ); viewer.addHandler( 'canvas-release', onEventHandlerRelease );
viewer.addHandler( 'canvas-click', canvasClickHandler ); viewer.addHandler( 'canvas-click', onEventHandlerClick );
mouseTracker = new OpenSeadragon.MouseTracker( {
element: $canvas[0],
userData: userData,
clickTimeThreshold: OpenSeadragon.DEFAULT_SETTINGS.clickTimeThreshold,
clickDistThreshold: OpenSeadragon.DEFAULT_SETTINGS.clickDistThreshold,
focusHandler: onMouseTrackerFocus,
blurHandler: onMouseTrackerBlur,
enterHandler: onMouseTrackerEnter,
pressHandler: onMouseTrackerPress,
moveHandler: onMouseTrackerMove,
dragHandler: onMouseTrackerDrag,
releaseHandler: onMouseTrackerRelease,
clickHandler: onMouseTrackerClick,
exitHandler: onMouseTrackerExit
} ).setTracking( true );
var event = {
clientX:1,
clientY:1
};
$canvas.simulate( 'focus', event );
Util.simulateViewerClickWithDrag( { Util.simulateViewerClickWithDrag( {
viewer: viewer, viewer: viewer,
widthFactor: 0.25, widthFactor: 0.25,
@ -82,27 +112,80 @@
dragDx: 1, dragDx: 1,
dragDy: 1 dragDy: 1
} ); } );
$canvas.simulate( 'blur', event );
}; };
var canvasDragHandler = function ( eventSender, eventData ) { var onEventHandlerDrag = function ( eventSender, eventData ) {
dragMovesHandled++; dragsHandledEventHandler++;
}; };
var canvasReleaseHandler = function ( eventSender, eventData ) { var onEventHandlerRelease = function ( eventSender, eventData ) {
releasesHandled++; releasesHandledEventHandler++;
}; };
var canvasClickHandler = function ( eventSender, eventData ) { var onEventHandlerClick = function ( eventSender, eventData ) {
viewer.removeHandler( 'canvas-drag', canvasDragHandler ); clicksHandledEventHandler++;
viewer.removeHandler( 'canvas-release', canvasReleaseHandler ); };
viewer.removeHandler( 'canvas-click', canvasClickHandler );
equal( dragMovesHandled, dragCount, "'canvas-drag' event count matches 'mousemove' event count (" + dragCount + ")" ); var checkOriginalEventReceived = function ( eventData ) {
equal( releasesHandled, releasesExpected, "'canvas-release' event count matches expected (" + releasesExpected + ")" ); eventsHandledMouseTracker++;
if ( eventData && eventData.originalEvent ) {
originalEventsPassedMouseTracker++;
}
};
var onMouseTrackerFocus = function ( tracker, eventData ) {
checkOriginalEventReceived( eventData );
};
var onMouseTrackerBlur = function ( tracker, eventData ) {
checkOriginalEventReceived( eventData );
};
var onMouseTrackerEnter = function ( tracker, eventData ) {
checkOriginalEventReceived( eventData );
};
var onMouseTrackerPress = function ( tracker, eventData ) {
checkOriginalEventReceived( eventData );
};
var onMouseTrackerMove = function ( tracker, eventData ) {
checkOriginalEventReceived( eventData );
};
var onMouseTrackerDrag = function ( tracker, eventData ) {
checkOriginalEventReceived( eventData );
};
var onMouseTrackerRelease = function ( tracker, eventData ) {
checkOriginalEventReceived( eventData );
};
var onMouseTrackerClick = function ( tracker, eventData ) {
checkOriginalEventReceived( eventData );
};
var onMouseTrackerExit = function ( tracker, eventData ) {
checkOriginalEventReceived( eventData );
mouseTracker.destroy();
viewer.removeHandler( 'canvas-drag', onEventHandlerDrag );
viewer.removeHandler( 'canvas-release', onEventHandlerRelease );
viewer.removeHandler( 'canvas-click', onEventHandlerClick );
equal( dragsHandledEventHandler, dragCount, "'canvas-drag' event count matches 'mousemove' event count (" + dragCount + ")" );
equal( releasesHandledEventHandler, releasesExpected, "'canvas-release' event count matches expected (" + releasesExpected + ")" );
equal( clicksHandledEventHandler, releasesExpected, "'canvas-click' event count matches expected (" + releasesExpected + ")" );
equal( originalEventsPassedMouseTracker, eventsHandledMouseTracker, "Original event received count matches expected (" + eventsHandledMouseTracker + ")" );
deepEqual( eventData.userData, originalUserData, 'MouseTracker userData was untouched' );
viewer.close(); viewer.close();
start(); start();
}; };
viewer.addHandler( 'open', openHandler ); viewer.addHandler( 'open', onOpen );
viewer.open( '/test/data/testpattern.dzi' ); viewer.open( '/test/data/testpattern.dzi' );
} ); } );

View File

@ -46,7 +46,8 @@
.simulate( "mousemove", event ); .simulate( "mousemove", event );
} }
$canvas $canvas
.simulate( 'mouseup', event ); .simulate( 'mouseup', event )
.simulate( 'mouseout', event );
}, },
initializeTestDOM: function () { initializeTestDOM: function () {