(function($) { var grid; var el, offsetBefore, offsetAfter, dragged; var drag = function(handle, dx, dy) { offsetBefore = el.offset(); $(handle).simulate("drag", { dx: dx || 0, dy: dy || 0 }); dragged = { dx: dx, dy: dy }; offsetAfter = el.offset(); } var moved = function (dx, dy, msg) { msg = msg ? msg + "." : ""; var actual = { left: offsetAfter.left, top: offsetAfter.top }; var expected = { left: offsetBefore.left + dx, top: offsetBefore.top + dy }; same(actual, expected, 'dragged[' + dragged.dx + ', ' + dragged.dy + '] ' + msg); } var ROWS = 500, COLS = 10; var data = [], row; for (var i=0; i