From 4fc5ea141dea716c85d07f17c4b345263b464ef3 Mon Sep 17 00:00:00 2001 From: gnarf Date: Wed, 18 May 2011 18:13:37 -0500 Subject: [PATCH] Unit Tests & effects.scale: Fixing bugs in effects unit tests - Particularly IE, found a bug in scale.js in the meantime. Fixes #7395 - Size based effects are breaking unit tests in IE - also leaking a global var --- tests/unit/effects/effects.html | 3 +++ tests/unit/effects/effects_core.js | 13 +++++++------ ui/jquery.effects.core.js | 2 +- ui/jquery.effects.scale.js | 20 ++++++++++++-------- 4 files changed, 23 insertions(+), 15 deletions(-) diff --git a/tests/unit/effects/effects.html b/tests/unit/effects/effects.html index 0879a98b2..84fecd9cc 100644 --- a/tests/unit/effects/effects.html +++ b/tests/unit/effects/effects.html @@ -38,10 +38,13 @@ .test { background: #000; border: 0; + width: 100px; + height: 100px; } .testAddBorder { border: 10px solid #000; } + .testChildren, .testChangeBackground { background: #fff; } diff --git a/tests/unit/effects/effects_core.js b/tests/unit/effects/effects_core.js index 8d2e8f8df..ed9fbf9ba 100644 --- a/tests/unit/effects/effects_core.js +++ b/tests/unit/effects/effects_core.js @@ -77,12 +77,12 @@ asyncTest( "animateClass works with colors", function() { count = 0; expect(2); test.toggleClass("testChangeBackground", duration, function() { - present( test.css("backgroundColor"), [ "#ffffff", "rgb(255, 255, 255)" ], "Color is final" ); + present( test.css("backgroundColor"), [ "#ffffff", "#fff", "rgb(255, 255, 255)" ], "Color is final" ); start(); }); setTimeout(function() { var color = test.css("backgroundColor"); - notPresent( color, [ "#000000", "#ffffff", "rgb(0, 0, 0)", "rgb(255,255,255)" ], + notPresent( color, [ "#000000", "#ffffff", "#000", "#fff", "rgb(0, 0, 0)", "rgb(255,255,255)" ], "Color is not endpoints in middle." ); }, mid); }); @@ -92,19 +92,20 @@ asyncTest( "animateClass works with children", function() { h2 = test.find("h2"); expect(4); + setTimeout(function() { + notPresent( h2.css("fontSize"), ["10px","20px"], "Font size is neither endpoint when in middle."); + }, mid); test.toggleClass("testChildren", { children: true, duration: duration, complete: function() { equal( h2.css("fontSize"), "20px", "Text size is final during complete"); test.toggleClass("testChildren", duration, function() { equal( h2.css("fontSize"), "10px", "Text size revertted after class removed"); + start(); }); setTimeout(function() { - equal( h2.css("fontSize"), "20px", "Text size unchanged with children: undefined" ); + equal( h2.css("fontSize"), "20px", "Text size unchanged during animate with children: undefined" ); }, mid); }}); - setTimeout(function() { - notPresent( h2.css("fontSize"), ["10px","20px"], "Font size is neither endpoint when in middle."); - }, mid); }); })(jQuery); diff --git a/ui/jquery.effects.core.js b/ui/jquery.effects.core.js index 638119579..7650aa8f4 100644 --- a/ui/jquery.effects.core.js +++ b/ui/jquery.effects.core.js @@ -451,7 +451,7 @@ $.extend( $.effects, { setTransition: function( element, list, factor, value ) { value = value || {}; $.each( list, function(i, x){ - unit = element.cssUnit( x ); + var unit = element.cssUnit( x ); if ( unit[ 0 ] > 0 ) value[ x ] = unit[ 0 ] * factor + unit[ 1 ]; }); return value; diff --git a/ui/jquery.effects.scale.js b/ui/jquery.effects.scale.js index 843aa2241..b5c49ce7c 100644 --- a/ui/jquery.effects.scale.js +++ b/ui/jquery.effects.scale.js @@ -115,11 +115,15 @@ $.effects.effect.size = function( o ) { restore = o.restore || false, scale = o.scale || 'both', origin = o.origin, - original = { - height: el.height(), - width: el.width() - }, - baseline, factor; + original, baseline, factor; + + if ( mode === "show" ) { + el.show(); + } + original = { + height: el.height(), + width: el.width() + }; el.from = o.from || original; el.to = o.to || original; @@ -149,14 +153,14 @@ $.effects.effect.size = function( o ) { if ( scale == 'box' || scale == 'both' ) { // Vertical props scaling - if ( factor.from.y != factor.to.y ) { + if ( factor.from.y !== factor.to.y ) { props = props.concat( vProps ); el.from = $.effects.setTransition( el, vProps, factor.from.y, el.from ); el.to = $.effects.setTransition( el, vProps, factor.to.y, el.to ); }; // Horizontal props scaling - if ( factor.from.x != factor.to.x ) { + if ( factor.from.x !== factor.to.x ) { props = props.concat( hProps ); el.from = $.effects.setTransition( el, hProps, factor.from.x, el.from ); el.to = $.effects.setTransition( el, hProps, factor.to.x, el.to ); @@ -167,7 +171,7 @@ $.effects.effect.size = function( o ) { if ( scale == 'content' || scale == 'both' ) { // Vertical props scaling - if ( factor.from.y != factor.to.y ) { + if ( factor.from.y !== factor.to.y ) { props = props.concat( cProps ); el.from = $.effects.setTransition( el, cProps, factor.from.y, el.from ); el.to = $.effects.setTransition( el, cProps, factor.to.y, el.to );