Commits

Anonymous committed 48bd8b5

No ticket: speedup effects tests

  • Participants
  • Parent commits e78cfb1

Comments (0)

Files changed (3)

File test/index.html

 
 				<div id="show" class='chain-test'>show<div>show</div></div>
 				<div id="hide" class='chain-test chain-test-out'>hide<div>hide</div></div>
+				<div id="easehide" class='chain-test chain-test-out'>hide<div>hide</div></div>
 
 				<div id="togglein" class='chain-test'>togglein<div>togglein</div></div>
 				<div id="toggleout" class='chain-test chain-test-out'>toggleout<div>toggleout</div></div>
-
+				<div id="easetoggleout" class='chain-test chain-test-out'>toggleout<div>toggleout</div></div>
 
 				<div id="slideup" class='chain-test'>slideUp<div>slideUp</div></div>
 				<div id="slidedown" class='chain-test chain-test-out'>slideDown<div>slideDown</div></div>
+				<div id="easeslideup" class='chain-test'>slideUp<div>slideUp</div></div>
 
 				<div id="slidetogglein" class='chain-test'>slideToggleIn<div>slideToggleIn</div></div>
 				<div id="slidetoggleout" class='chain-test chain-test-out'>slideToggleOut<div>slideToggleOut</div></div>

File test/unit/attributes.js

 });
 
 test( "addClass(Function) with incoming value", function() {
-	expect( 48 );
+	expect( 54 );
 	var div = jQuery("div"),
 		old = div.map(function() {
 			return jQuery(this).attr("class") || "";
 });
 
 test( "removeClass(Function) with incoming value", function() {
-	expect( 48 );
+	expect( 54 );
 
 	var $divs = jQuery("div").addClass("test"), old = $divs.map(function() {
 		return jQuery( this ).attr("class");
 	});
 
 	ok( !$divs.is(".test"), "Remove Class" );
-
-	QUnit.reset();
 });
 
 test( "removeClass() removes duplicates", function() {

File test/unit/effects.js

 	});
 });
 
-jQuery.fn.saveState = function( hiddenOverflow ) {
-	var check = ["opacity", "height", "width", "display", "overflow"];
-	expect(check.length);
-
-	stop();
-	return this.each(function() {
-		var el = this;
-		el.save = {};
-		jQuery.each(check, function( i, c ) {
-			el.save[ c ] = c === "overflow" && hiddenOverflow ? "hidden" : el.style[ c ] || jQuery.css( el, c );
-		});
-	});
-};
-
-/**
- * @expose
- * @context {HTMLElement}
- */
-jQuery.checkState = function() {
-	var el = this;
-	jQuery.each(el.save, function( c, v ) {
-		var cur = el.style[ c ] || jQuery.css( el, c );
-		equal( cur, v, "Make sure that " + c + " is reset (Old: " + v + " Cur: " + cur + ")");
-	});
-
-	// Clean up
-	jQuery(el).remove();
-
-	start();
-};
-
-// Chaining Tests
-// We need to pass jQuery.support.shrinkWrapBlocks for all tests that
-// set overflow hidden (which effect.js does for all slide*() methods and
-// show()/hide() if a speed is given).
-
-test("Chain fadeOut fadeIn", function() {
-	jQuery("#fadein div").saveState().fadeOut("fast").fadeIn("fast", jQuery.checkState );
-});
-test("Chain fadeIn fadeOut", function() {
-	jQuery("#fadeout div").saveState().fadeIn("fast").fadeOut("fast", jQuery.checkState );
-});
-
-test("Chain hide show", function() {
-	jQuery("#show div").saveState( jQuery.support.shrinkWrapBlocks ).hide("fast").show("fast", jQuery.checkState );
-});
-test("Chain show hide", function() {
-	jQuery("#hide div").saveState( jQuery.support.shrinkWrapBlocks ).show("fast").hide("fast", jQuery.checkState );
-});
-test("Chain show hide with easing and callback", function() {
-	jQuery("#hide div").saveState( jQuery.support.shrinkWrapBlocks ).show("fast").hide("fast","linear", jQuery.checkState );
-});
-
-test("Chain toggle in", function() {
-	jQuery("#togglein div").saveState( jQuery.support.shrinkWrapBlocks ).toggle("fast").toggle("fast", jQuery.checkState );
-});
-test("Chain toggle out", function() {
-	jQuery("#toggleout div").saveState( jQuery.support.shrinkWrapBlocks ).toggle("fast").toggle("fast", jQuery.checkState );
-});
-test("Chain toggle out with easing and callback", function() {
-	jQuery("#toggleout div").saveState( jQuery.support.shrinkWrapBlocks ).toggle("fast").toggle("fast","linear", jQuery.checkState );
-});
-test("Chain slideDown slideUp", function() {
-	jQuery("#slidedown div").saveState( jQuery.support.shrinkWrapBlocks ).slideDown("fast").slideUp("fast", jQuery.checkState );
-});
-test("Chain slideUp slideDown", function() {
-	jQuery("#slideup div").saveState( jQuery.support.shrinkWrapBlocks ).slideUp("fast").slideDown("fast", jQuery.checkState );
-});
-test("Chain slideUp slideDown with easing and callback", function() {
-	jQuery("#slideup div").saveState( jQuery.support.shrinkWrapBlocks ).slideUp("fast").slideDown("fast","linear", jQuery.checkState );
-});
+asyncTest("Effects chaining", function() {
+	var remaining = 16,
+		shrinkwrap = jQuery.support.shrinkWrapBlocks,
+		props = [ "opacity", "height", "width", "display", "overflow" ],
+		setup = function( name, selector, hiddenOverflow ) {
+			var $el = jQuery( selector );
+			return $el.data( getProps( $el[0], hiddenOverflow ) ).data( "name", name );
+		},
+		assert = function() {
+			var data = jQuery.data( this ),
+				name = data.name;
+			delete data.name;
 
-test("Chain slideToggle in", function() {
-	jQuery("#slidetogglein div").saveState( jQuery.support.shrinkWrapBlocks ).slideToggle("fast").slideToggle("fast", jQuery.checkState );
-});
-test("Chain slideToggle out", function() {
-	jQuery("#slidetoggleout div").saveState( jQuery.support.shrinkWrapBlocks ).slideToggle("fast").slideToggle("fast", jQuery.checkState );
-});
+			deepEqual( getProps( this ), data, name );
 
-test("Chain fadeToggle in", function() {
-	jQuery("#fadetogglein div").saveState().fadeToggle("fast").fadeToggle("fast", jQuery.checkState );
-});
-test("Chain fadeToggle out", function() {
-	jQuery("#fadetoggleout div").saveState().fadeToggle("fast").fadeToggle("fast", jQuery.checkState );
-});
+			jQuery.removeData( this );
+			if ( --remaining === 0 ) {
+				start();
+			}
+		},
+		getProps = function( el, hiddenOverflow ) {
+			var obj = {};
+			jQuery.each( props, function( i, prop ) {
+				obj[ prop ] = prop === "overflow" && hiddenOverflow ? "hidden" : el.style[ prop ] || jQuery.css( el, prop );
+			});
+			return obj;
+		};
 
-test("Chain fadeTo 0.5 1.0 with easing and callback)", function() {
-	jQuery("#fadeto div").saveState().fadeTo("fast",0.5).fadeTo("fast",1.0,"linear", jQuery.checkState );
+	expect( remaining );
+
+	// We need to pass jQuery.support.shrinkWrapBlocks for all methods that
+	// set overflow hidden (slide* and show/hide with speed)
+	setup( ".fadeOut().fadeIn()", "#fadein div" ).fadeOut("fast").fadeIn( "fast", assert );
+	setup( ".fadeIn().fadeOut()", "#fadeout div" ).fadeIn("fast").fadeOut( "fast", assert );
+	setup( ".hide().show()", "#show div",  shrinkwrap ).hide("fast").show( "fast", assert );
+	setup( ".show().hide()", "#hide div",  shrinkwrap ).show("fast").hide( "fast", assert );
+	setup( ".show().hide(easing)", "#easehide div", shrinkwrap ).show("fast").hide( "fast", "linear", assert );
+	setup( ".toggle().toggle() - in", "#togglein div", shrinkwrap ).toggle("fast").toggle( "fast", assert );
+	setup( ".toggle().toggle() - out", "#toggleout div", shrinkwrap ).toggle("fast").toggle( "fast", assert );
+	setup( ".toggle().toggle(easing) - out", "#easetoggleout div", shrinkwrap ).toggle("fast").toggle( "fast", "linear", assert );
+	setup( ".slideDown().slideUp()", "#slidedown div", shrinkwrap ).slideDown("fast").slideUp( "fast", assert );
+	setup( ".slideUp().slideDown()", "#slideup div", shrinkwrap ).slideUp("fast").slideDown( "fast", assert );
+	setup( ".slideUp().slideDown(easing)", "#easeslideup div", shrinkwrap ).slideUp("fast").slideDown( "fast", "linear", assert );
+	setup( ".slideToggle().slideToggle() - in", "#slidetogglein div", shrinkwrap ).slideToggle("fast").slideToggle( "fast", assert );
+	setup( ".slideToggle().slideToggle() - out", "#slidetoggleout div", shrinkwrap ).slideToggle("fast").slideToggle( "fast", assert );
+	setup( ".fadeToggle().fadeToggle() - in", "#fadetogglein div" ).fadeToggle("fast").fadeToggle( "fast", assert );
+	setup( ".fadeToggle().fadeToggle() - out", "#fadetoggleout div" ).fadeToggle("fast").fadeToggle( "fast", assert );
+	setup( ".fadeTo(0.5).fadeTo(1.0, easing)", "#fadeto div" ).fadeTo( "fast", 0.5 ).fadeTo( "fast", 1.0, "linear", assert );
 });
 
 jQuery.makeTest = function( text ){
 jQuery.map([ "toggle", "slideToggle", "fadeToggle" ], function ( method ) {
 	// this test would look a lot better if we were using something to override
 	// the default timers
+	var duration = 1500;
 	asyncTest( "toggle state tests: " + method + " (#8685)", function() {
 		function secondToggle() {
 			var stopped = parseFloat( element.css( check ) );
 			tested = false;
 			element[ method ]({
-				duration: 5000,
+				duration: duration,
 				step: function( p, fx ) {
 					if ( fx.pos > 0.1 && fx.prop === check && !tested ) {
 						tested = true;
 		var tested,
 			original,
 			check = method === "slideToggle" ? "height" : "opacity",
-			element = jQuery( "#foo" ).height( 200 );
+			element = jQuery("#foo").height( 200 );
 
 		expect( 4 );
 
 		element[ method ]({
-			duration: 5000,
+			duration: duration,
+			easing: "linear",
 			step: function( p, fx ) {
 				if ( fx.pos > 0.1 && fx.prop === check && !tested ) {
 					tested = true;