Tests: Convert closeEnough() to a proper QUnit assertion

Should eventually replace with qunit-assert-close.

Ref #10119
Ref gh-1528
This commit is contained in:
Scott González 2015-03-31 16:52:28 -04:00
parent 7c896ddb85
commit 2e1c72fb59
7 changed files with 59 additions and 54 deletions

View File

@ -20,7 +20,6 @@
"globals": {
"asyncTest": false,
"closeEnough": false,
"deepEqual": false,
"define": false,
"domEqual": false,

View File

@ -40,6 +40,12 @@ QUnit.reset = ( function( reset ) {
};
} )( QUnit.reset );
// TODO: switch to qunit-assert-close plugin
QUnit.assert.close = function( actual, expected, maxDifference, message ) {
var passes = ( actual === expected ) || Math.abs( actual - expected ) <= maxDifference;
QUnit.push( passes, actual, expected, message );
};
return QUnit;
} );

View File

@ -262,83 +262,83 @@ test("height", function() {
element.remove();
});
test("maxHeight", function() {
test("maxHeight", function( assert ) {
expect(3);
var element = $("<div></div>").dialog({ maxHeight: 200 });
TestHelpers.dialog.drag(element, ".ui-resizable-s", 1000, 1000);
closeEnough(element.dialog("widget").height(), 200, 1, "maxHeight");
assert.close(element.dialog("widget").height(), 200, 1, "maxHeight");
element.remove();
element = $("<div></div>").dialog({ maxHeight: 200 });
TestHelpers.dialog.drag(element, ".ui-resizable-n", -1000, -1000);
closeEnough(element.dialog("widget").height(), 200, 1, "maxHeight");
assert.close(element.dialog("widget").height(), 200, 1, "maxHeight");
element.remove();
element = $("<div></div>").dialog({ maxHeight: 200 }).dialog("option", "maxHeight", 300);
TestHelpers.dialog.drag(element, ".ui-resizable-s", 1000, 1000);
closeEnough(element.dialog("widget").height(), 300, 1, "maxHeight");
assert.close(element.dialog("widget").height(), 300, 1, "maxHeight");
element.remove();
});
test("maxWidth", function() {
test("maxWidth", function( assert ) {
expect(3);
var element = $("<div></div>").dialog({ maxWidth: 200 });
TestHelpers.dialog.drag(element, ".ui-resizable-e", 1000, 1000);
closeEnough(element.dialog("widget").width(), 200, 1, "maxWidth");
assert.close(element.dialog("widget").width(), 200, 1, "maxWidth");
element.remove();
element = $("<div></div>").dialog({ maxWidth: 200 });
TestHelpers.dialog.drag(element, ".ui-resizable-w", -1000, -1000);
closeEnough(element.dialog("widget").width(), 200, 1, "maxWidth");
assert.close(element.dialog("widget").width(), 200, 1, "maxWidth");
element.remove();
element = $("<div></div>").dialog({ maxWidth: 200 }).dialog("option", "maxWidth", 300);
TestHelpers.dialog.drag(element, ".ui-resizable-w", -1000, -1000);
closeEnough(element.dialog("widget").width(), 300, 1, "maxWidth");
assert.close(element.dialog("widget").width(), 300, 1, "maxWidth");
element.remove();
});
test("minHeight", function() {
test("minHeight", function( assert ) {
expect(3);
var element = $("<div></div>").dialog({ minHeight: 10 });
TestHelpers.dialog.drag(element, ".ui-resizable-s", -1000, -1000);
closeEnough(element.dialog("widget").height(), 10, 1, "minHeight");
assert.close(element.dialog("widget").height(), 10, 1, "minHeight");
element.remove();
element = $("<div></div>").dialog({ minHeight: 10 });
TestHelpers.dialog.drag(element, ".ui-resizable-n", 1000, 1000);
closeEnough(element.dialog("widget").height(), 10, 1, "minHeight");
assert.close(element.dialog("widget").height(), 10, 1, "minHeight");
element.remove();
element = $("<div></div>").dialog({ minHeight: 10 }).dialog("option", "minHeight", 30);
TestHelpers.dialog.drag(element, ".ui-resizable-n", 1000, 1000);
closeEnough(element.dialog("widget").height(), 30, 1, "minHeight");
assert.close(element.dialog("widget").height(), 30, 1, "minHeight");
element.remove();
});
test("minWidth", function() {
test("minWidth", function( assert ) {
expect(3);
var element = $("<div></div>").dialog({ minWidth: 10 });
TestHelpers.dialog.drag(element, ".ui-resizable-e", -1000, -1000);
closeEnough(element.dialog("widget").width(), 10, 1, "minWidth");
assert.close(element.dialog("widget").width(), 10, 1, "minWidth");
element.remove();
element = $("<div></div>").dialog({ minWidth: 10 });
TestHelpers.dialog.drag(element, ".ui-resizable-w", 1000, 1000);
closeEnough(element.dialog("widget").width(), 10, 1, "minWidth");
assert.close(element.dialog("widget").width(), 10, 1, "minWidth");
element.remove();
element = $("<div></div>").dialog({ minWidth: 30 }).dialog("option", "minWidth", 30);
TestHelpers.dialog.drag(element, ".ui-resizable-w", 1000, 1000);
closeEnough(element.dialog("widget").width(), 30, 1, "minWidth");
assert.close(element.dialog("widget").width(), 30, 1, "minWidth");
element.remove();
});
test( "position, default center on window", function() {
test( "position, default center on window", function( assert ) {
expect( 2 );
// dialogs alter the window width and height in Firefox
@ -349,12 +349,12 @@ test( "position, default center on window", function() {
element = $("<div></div>").dialog(),
dialog = element.dialog("widget"),
offset = dialog.offset();
closeEnough( offset.left, Math.round( winWidth / 2 - dialog.outerWidth() / 2 ) + $( window ).scrollLeft(), 1, "dialog left position of center on window on initilization" );
closeEnough( offset.top, Math.round( winHeight / 2 - dialog.outerHeight() / 2 ) + $( window ).scrollTop(), 1, "dialog top position of center on window on initilization" );
assert.close( offset.left, Math.round( winWidth / 2 - dialog.outerWidth() / 2 ) + $( window ).scrollLeft(), 1, "dialog left position of center on window on initilization" );
assert.close( offset.top, Math.round( winHeight / 2 - dialog.outerHeight() / 2 ) + $( window ).scrollTop(), 1, "dialog top position of center on window on initilization" );
element.remove();
});
test( "position, right bottom at right bottom via ui.position args", function() {
test( "position, right bottom at right bottom via ui.position args", function( assert ) {
expect( 2 );
// dialogs alter the window width and height in Firefox
@ -371,12 +371,12 @@ test( "position, right bottom at right bottom via ui.position args", function()
dialog = element.dialog("widget"),
offset = dialog.offset();
closeEnough( offset.left, winWidth - dialog.outerWidth() + $( window ).scrollLeft(), 1, "dialog left position of right bottom at right bottom on initilization" );
closeEnough( offset.top, winHeight - dialog.outerHeight() + $( window ).scrollTop(), 1, "dialog top position of right bottom at right bottom on initilization" );
assert.close( offset.left, winWidth - dialog.outerWidth() + $( window ).scrollLeft(), 1, "dialog left position of right bottom at right bottom on initilization" );
assert.close( offset.top, winHeight - dialog.outerHeight() + $( window ).scrollTop(), 1, "dialog top position of right bottom at right bottom on initilization" );
element.remove();
});
test( "position, at another element", function() {
test( "position, at another element", function( assert ) {
expect( 4 );
var parent = $("<div></div>").css({
position: "absolute",
@ -398,8 +398,8 @@ test( "position, at another element", function() {
dialog = element.dialog("widget"),
offset = dialog.offset();
closeEnough( offset.left, 600, 1, "dialog left position at another element on initilization" );
closeEnough( offset.top, 400, 1, "dialog top position at another element on initilization" );
assert.close( offset.left, 600, 1, "dialog left position at another element on initilization" );
assert.close( offset.top, 400, 1, "dialog top position at another element on initilization" );
element.dialog("option", "position", {
my: "left top",
@ -410,8 +410,8 @@ test( "position, at another element", function() {
offset = dialog.offset();
closeEnough( offset.left, 610, 1, "dialog left position at another element via setting option" );
closeEnough( offset.top, 410, 1, "dialog top position at another element via setting option" );
assert.close( offset.left, 610, 1, "dialog left position at another element via setting option" );
assert.close( offset.top, 410, 1, "dialog top position at another element via setting option" );
element.remove();
parent.remove();
@ -475,17 +475,17 @@ test( "title", function() {
element.remove();
});
test("width", function() {
test("width", function( assert ) {
expect(3);
var element = $("<div></div>").dialog();
closeEnough(element.dialog("widget").width(), 300, 1, "default width");
assert.close(element.dialog("widget").width(), 300, 1, "default width");
element.remove();
element = $("<div></div>").dialog({width: 437 });
closeEnough(element.dialog("widget").width(), 437, 1, "explicit width");
assert.close(element.dialog("widget").width(), 437, 1, "explicit width");
element.dialog("option", "width", 438);
closeEnough(element.dialog("widget").width(), 438, 1, "explicit width after init");
assert.close(element.dialog("widget").width(), 438, 1, "explicit width after init");
element.remove();
});

View File

@ -6,7 +6,7 @@
module( "draggable: core" );
test( "element types", function() {
test( "element types", function( assert ) {
var typeNames = (
"p,h1,h2,h3,h4,h5,h6,blockquote,ol,ul,dl,div,form" +
",table,fieldset,address,ins,del,em,strong,q,cite,dfn,abbr" +
@ -35,8 +35,8 @@ test( "element types", function() {
// Support: FF, Chrome, and IE9,
// there are some rounding errors in so we can't say equal, we have to settle for close enough
closeEnough( offsetBefore.left, offsetAfter.left - 50, 1, "dragged[50, 50] " + "<" + typeName + ">" );
closeEnough( offsetBefore.top, offsetAfter.top - 50, 1, "dragged[50, 50] " + "<" + typeName + ">" );
assert.close( offsetBefore.left, offsetAfter.left - 50, 1, "dragged[50, 50] " + "<" + typeName + "> left" );
assert.close( offsetBefore.top, offsetAfter.top - 50, 1, "dragged[50, 50] " + "<" + typeName + "> top" );
el.draggable("destroy");
el.remove();
});

View File

@ -519,7 +519,7 @@ test( "{ containment: 'parent' }, absolute", function() {
deepEqual( offsetAfter, expected, "compare offset to parent" );
});
test( "containment, account for border", function() {
test( "containment, account for border", function( assert ) {
expect( 2 );
var el = $( "#draggable1" ).appendTo( "#scrollParent" ),
@ -544,9 +544,9 @@ test( "containment, account for border", function() {
dy: 100
});
closeEnough( el.offset().top, parentBottom - parentBorderBottom - el.height(), 1,
assert.close( el.offset().top, parentBottom - parentBorderBottom - el.height(), 1,
"The draggable should be on top of its parent's bottom border" );
closeEnough( el.offset().left, parentRight - parentBorderRight - el.width(), 1,
assert.close( el.offset().left, parentRight - parentBorderRight - el.width(), 1,
"The draggable should be to the right of its parent's right border" );
});
@ -1137,7 +1137,7 @@ test( "scroll ignores containers that are overflow: hidden", function() {
equal( scrollParent.scrollLeft(), 0, "container doesn't scroll horizontally" );
});
test( "#6817: auto scroll goes double distance when dragging", function() {
test( "#6817: auto scroll goes double distance when dragging", function( assert ) {
expect( 2 );
TestHelpers.draggable.restoreScroll( document );
@ -1149,8 +1149,8 @@ test( "#6817: auto scroll goes double distance when dragging", function() {
scroll: true,
stop: function( e, ui ) {
equal( ui.offset.top, newY, "offset of item matches pointer position after scroll" );
// TODO: fix IE8 testswarm IFRAME positioning bug so closeEnough can be turned back to equal
closeEnough( ui.offset.top - offsetBefore.top, distance, 1, "offset of item only moves expected distance after scroll" );
// TODO: fix IE8 testswarm IFRAME positioning bug so assert.close can be turned back to equal
assert.close( ui.offset.top - offsetBefore.top, distance, 1, "offset of item only moves expected distance after scroll" );
}
}),
scrollSensitivity = element.draggable( "option", "scrollSensitivity" ),
@ -1174,7 +1174,7 @@ test( "#6817: auto scroll goes double distance when dragging", function() {
TestHelpers.draggable.restoreScroll( document );
});
test( "snap, snapMode, and snapTolerance", function() {
test( "snap, snapMode, and snapTolerance", function( assert ) {
expect( 10 );
var newX, newY,
@ -1206,9 +1206,9 @@ test( "snap, snapMode, and snapTolerance", function() {
moves: 1
});
// TODO: fix IE8 testswarm IFRAME positioning bug so closeEnough can be turned back to equal
closeEnough( element.offset().left, newX, 1, "doesn't snap outside the snapTolerance" );
closeEnough( element.offset().top, newY, 1, "doesn't snap outside the snapTolerance" );
// TODO: fix IE8 testswarm IFRAME positioning bug so assert.close can be turned back to equal
assert.close( element.offset().left, newX, 1, "doesn't snap outside the snapTolerance" );
assert.close( element.offset().top, newY, 1, "doesn't snap outside the snapTolerance" );
newX += 3;
@ -1301,7 +1301,7 @@ test( "snap, snapMode, and snapTolerance", function() {
deepEqual( element.offset(), { top: newY, left: newX }, "doesn't snap on the inner snapTolerance area when snapMode is outer" );
});
test( "#8459: element can snap to an element that was removed during drag", function() {
test( "#8459: element can snap to an element that was removed during drag", function( assert ) {
expect( 2 );
var newX, newY,
@ -1337,9 +1337,9 @@ test( "#8459: element can snap to an element that was removed during drag", func
ok( true, "Opera <12.14 and Safari <6.0 report wrong values for $.contains in jQuery < 1.8" );
ok( true, "Opera <12.14 and Safari <6.0 report wrong values for $.contains in jQuery < 1.8" );
} else {
// TODO: fix IE8 testswarm IFRAME positioning bug so closeEnough can be turned back to equal
closeEnough( element.offset().left, newX, 1, "doesn't snap to a removed element" );
closeEnough( element.offset().top, newY, 1, "doesn't snap to a removed element" );
// TODO: fix IE8 testswarm IFRAME positioning bug so assert.close can be turned back to equal
assert.close( element.offset().left, newX, 1, "doesn't snap to a removed element" );
assert.close( element.offset().top, newY, 1, "doesn't snap to a removed element" );
}
});

View File

@ -3,11 +3,11 @@ module( "effect.scale: Scale" );
function run( position, v, h, vo, ho ) {
var desc = "End Position Correct: " + position + " (" + v + "," + h + ") - origin: (" + vo + "," + ho + ")";
asyncTest( desc, function() {
asyncTest( desc, function( assert ) {
expect( 2 );
function complete() {
closeEnough( parseInt( test.css( h ), 10 ), target[ h ], 1, "Horizontal Position Correct " + desc );
closeEnough( parseInt( test.css( v ), 10 ), target[ v ], 1, "Vertical Position Correct " + desc );
assert.close( parseInt( test.css( h ), 10 ), target[ h ], 1, "Horizontal Position Correct " + desc );
assert.close( parseInt( test.css( v ), 10 ), target[ v ], 1, "Vertical Position Correct " + desc );
start();
}
var test = $( ".testScale" ),

View File

@ -224,8 +224,8 @@ TestHelpers.forceScrollableWindow = function( appendTo ) {
}).appendTo( appendTo || "#qunit-fixture" );
};
// Taken from https://github.com/jquery/qunit/tree/master/addons/close-enough
window.closeEnough = function( actual, expected, maxDifference, message ) {
// TODO: switch to qunit-assert-close plugin
QUnit.assert.close = function( actual, expected, maxDifference, message ) {
var passes = ( actual === expected ) || Math.abs( actual - expected ) <= maxDifference;
QUnit.push( passes, actual, expected, message );
};