grid programme
This commit is contained in:
+188
@@ -0,0 +1,188 @@
|
||||
( function() {
|
||||
|
||||
'use strict';
|
||||
|
||||
var utils = window.fizzyUIUtils;
|
||||
|
||||
function noop() {}
|
||||
|
||||
var fakeDrag = window.fakeDrag = function( flkty, positions ) {
|
||||
|
||||
function fakeEvent( type, pageX ) {
|
||||
return {
|
||||
type: type,
|
||||
pageX: pageX,
|
||||
pageY: 0,
|
||||
preventDefault: noop,
|
||||
target: flkty.viewport
|
||||
};
|
||||
}
|
||||
|
||||
var hasBeenDown = false;
|
||||
|
||||
function triggerEvent() {
|
||||
var position = positions.shift();
|
||||
// down or move event
|
||||
if ( !hasBeenDown ) {
|
||||
var downEvent = fakeEvent( 'mousedown', position );
|
||||
flkty._pointerDown( downEvent, downEvent );
|
||||
hasBeenDown = true;
|
||||
} else {
|
||||
var moveEvent = fakeEvent( 'mousemove', position );
|
||||
flkty._pointerMove( moveEvent, moveEvent );
|
||||
}
|
||||
|
||||
if ( positions.length ) {
|
||||
// loop next
|
||||
setTimeout( triggerEvent, 40 );
|
||||
} else {
|
||||
// up event
|
||||
var upEvent = fakeEvent( 'mouseup', position );
|
||||
flkty._pointerUp( upEvent, upEvent );
|
||||
}
|
||||
}
|
||||
|
||||
triggerEvent();
|
||||
};
|
||||
|
||||
var dragTests;
|
||||
// do each drag test one after another
|
||||
function getDoNextDragTest( done ) {
|
||||
return function doNextDragTest() {
|
||||
if ( dragTests.length ) {
|
||||
var dragTest = dragTests.shift();
|
||||
dragTest();
|
||||
} else {
|
||||
done();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
// flickity, dragPositions, index, callback, message
|
||||
function getFakeDragTest( args ) {
|
||||
var assert = args.assert;
|
||||
var flkty = args.flickity;
|
||||
var msgCell = 'slide[' + args.index + ']';
|
||||
|
||||
return function fakeDragTest() {
|
||||
var selectMsg = ( args.message ? args.message + '. ' : '' ) + 'selected ' + msgCell;
|
||||
flkty.once( 'select', function() {
|
||||
assert.equal( flkty.selectedIndex, args.index, selectMsg );
|
||||
});
|
||||
|
||||
var settleMsg = ( args.message ? args.message + '. ' : '' ) + 'settled ' + msgCell;
|
||||
var target = flkty.slides[ args.index ].target;
|
||||
flkty.once( 'settle', function() {
|
||||
assert.equal( Math.round( -flkty.x ), Math.round( target ), settleMsg );
|
||||
setTimeout( args.callback );
|
||||
});
|
||||
|
||||
fakeDrag( args.flickity, args.dragPositions );
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
||||
QUnit.test( 'drag', function( assert ) {
|
||||
// async test
|
||||
var done = assert.async();
|
||||
|
||||
var flkty = new Flickity('#drag');
|
||||
|
||||
var doNextDragTest = getDoNextDragTest( done );
|
||||
|
||||
function getDragTest( args ) {
|
||||
args = utils.extend( args, {
|
||||
assert: assert,
|
||||
flickity: flkty,
|
||||
callback: doNextDragTest
|
||||
});
|
||||
return getFakeDragTest( args );
|
||||
}
|
||||
|
||||
dragTests = [
|
||||
getDragTest({
|
||||
message: 'drag to 2nd cell',
|
||||
index: 1,
|
||||
dragPositions: [ 0, -10, -20 ]
|
||||
}),
|
||||
getDragTest({
|
||||
message: 'drag back to 1st cell',
|
||||
index: 0,
|
||||
dragPositions: [ 0, 10, 20 ]
|
||||
}),
|
||||
getDragTest({
|
||||
message: 'big flick to 3rd cell',
|
||||
index: 2,
|
||||
dragPositions: [ 0, -10, -80 ]
|
||||
}),
|
||||
// minimal movement to trigger static click
|
||||
function() {
|
||||
flkty.once( 'staticClick', function() {
|
||||
assert.ok( true, 'staticClick fired on non-drag');
|
||||
assert.equal( flkty.selectedIndex, 2, 'selected index still at 2 after click' );
|
||||
setTimeout( doNextDragTest );
|
||||
});
|
||||
fakeDrag( flkty, [ 0, 1, 0, -2, -1 ] );
|
||||
},
|
||||
// move out then back to where it started
|
||||
function() {
|
||||
flkty.once( 'settle', function() {
|
||||
assert.equal( flkty.selectedIndex, 2, 'move out then back. same cell' );
|
||||
setTimeout( doNextDragTest );
|
||||
});
|
||||
fakeDrag( flkty, [ 0, 10, 20, 30, 20 ] );
|
||||
},
|
||||
getDragTest({
|
||||
message: 'drag and try to flick past 6th cell',
|
||||
index: 5,
|
||||
dragPositions: [ 0, -10, -50, -77, -100, -125, -150, -175, -250, -350 ]
|
||||
})
|
||||
];
|
||||
|
||||
doNextDragTest();
|
||||
|
||||
});
|
||||
|
||||
QUnit.test( 'drag with wrapAround', function( assert ) {
|
||||
// async test
|
||||
var done = assert.async();
|
||||
|
||||
var flkty = new Flickity('#drag-wrap-around', {
|
||||
wrapAround: true
|
||||
});
|
||||
|
||||
var doNextDragTest = getDoNextDragTest( done );
|
||||
|
||||
function getDragTest( args ) {
|
||||
args = utils.extend( args, {
|
||||
assert: assert,
|
||||
flickity: flkty,
|
||||
callback: doNextDragTest
|
||||
});
|
||||
return getFakeDragTest( args );
|
||||
}
|
||||
|
||||
dragTests = [
|
||||
getDragTest({
|
||||
message: 'drag to last cell via wrap-around',
|
||||
index: 5,
|
||||
dragPositions: [ 0, 10, 20 ]
|
||||
}),
|
||||
getDragTest({
|
||||
message: 'drag to first cell via wrap-around',
|
||||
index: 0,
|
||||
dragPositions: [ 0, -10, -20 ]
|
||||
}),
|
||||
getDragTest({
|
||||
message: 'big flick to 5th cell via wrap-around',
|
||||
index: 4,
|
||||
dragPositions: [ 0, 10, 80 ]
|
||||
})
|
||||
];
|
||||
|
||||
doNextDragTest();
|
||||
|
||||
});
|
||||
|
||||
})();
|
||||
Reference in New Issue
Block a user