X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=test%2Funit%2Fcore.js;h=8fd060578d6e97e10261e49b2c8409d8b0a75766;hb=1ca82ccd9489f11d3a8fbdd8a32b4c164ffaf483;hp=196700745adb4a6782de617ca123d1d1388400fc;hpb=23d455b4469f2b47363c21867aad271d6930f112;p=jquery.git diff --git a/test/unit/core.js b/test/unit/core.js index 1967007..8fd0605 100644 --- a/test/unit/core.js +++ b/test/unit/core.js @@ -12,9 +12,7 @@ test("Basic requirements", function() { }); test("jQuery()", function() { - expect(24); - - strictEqual( commonJSDefined, jQuery, "CommonJS registered (Bug #7102)" ); + expect(23); // Basic constructor's behavior @@ -906,184 +904,157 @@ test("jQuery.parseJSON", function(){ }); test("jQuery._Deferred()", function() { - + expect( 10 ); - + var deferred, object, test; - + deferred = jQuery._Deferred(); - + test = false; - - deferred.then( function( value ) { + + deferred.done( function( value ) { equals( value , "value" , "Test pre-resolve callback" ); test = true; } ); - + deferred.resolve( "value" ); - + ok( test , "Test pre-resolve callbacks called right away" ); test = false; - - deferred.then( function( value ) { + + deferred.done( function( value ) { equals( value , "value" , "Test post-resolve callback" ); test = true; } ); - + ok( test , "Test post-resolve callbacks called right away" ); - + deferred.cancel(); - + test = true; - - deferred.then( function() { + + deferred.done( function() { ok( false , "Cancel was ignored" ); test = false; } ); - + ok( test , "Test cancel" ); - + deferred = jQuery._Deferred().resolve(); - + try { - deferred.then( function() { + deferred.done( function() { throw "Error"; } , function() { ok( true , "Test deferred do not cancel on exception" ); } ); } catch( e ) { strictEqual( e , "Error" , "Test deferred propagates exceptions"); - deferred.then(); + deferred.done(); } - + test = ""; - deferred = jQuery._Deferred().then( function() { - + deferred = jQuery._Deferred().done( function() { + test += "A"; - + }, function() { - + test += "B"; - + } ).resolve(); - - strictEqual( test , "AB" , "Test multiple then parameters" ); - + + strictEqual( test , "AB" , "Test multiple done parameters" ); + test = ""; - - deferred.then( function() { - - deferred.then( function() { - + + deferred.done( function() { + + deferred.done( function() { + test += "C"; - + } ); - + test += "A"; - + }, function() { - + test += "B"; } ); - - strictEqual( test , "ABC" , "Test then callbacks order" ); - + + strictEqual( test , "ABC" , "Test done callbacks order" ); + deferred = jQuery._Deferred(); - - deferred.fire( jQuery , [ document ] ).then( function( doc ) { + + deferred.fire( jQuery , [ document ] ).done( function( doc ) { ok( this === jQuery && arguments.length === 1 && doc === document , "Test fire context & args" ); }); }); test("jQuery.Deferred()", function() { - + expect( 4 ); - + jQuery.Deferred( function( defer ) { strictEqual( this , defer , "Defer passed as this & first argument" ); this.resolve( "done" ); }).then( function( value ) { strictEqual( value , "done" , "Passed function executed" ); }); - + jQuery.Deferred().resolve().then( function() { ok( true , "Success on resolve" ); - }).fail( function() { + }, function() { ok( false , "Error on resolve" ); }); - + jQuery.Deferred().reject().then( function() { ok( false , "Success on reject" ); - }).fail( function() { + }, function() { ok( true , "Error on reject" ); }); }); - -test("jQuery.isDeferred()", function() { - - expect( 11 ); - - var object1 = { then: function() { return this; } }, - object2 = { then: function() { return this; } }; - - object2.then._ = []; - - // The use case that we want to match - ok(jQuery.isDeferred(jQuery._Deferred()), "Simple deferred"); - ok(jQuery.isDeferred(jQuery.Deferred()), "Failable deferred"); - - // Some other objects - ok(!jQuery.isDeferred(object1), "Object with then & no marker"); - ok(!jQuery.isDeferred(object2), "Object with then & marker"); - - // Not objects shouldn't be matched - ok(!jQuery.isDeferred(""), "string"); - ok(!jQuery.isDeferred(0) && !jQuery.isDeferred(1), "number"); - ok(!jQuery.isDeferred(true) && !jQuery.isDeferred(false), "boolean"); - ok(!jQuery.isDeferred(null), "null"); - ok(!jQuery.isDeferred(undefined), "undefined"); - - object1 = {custom: jQuery._Deferred().then}; - - ok(!jQuery.isDeferred(object1) , "custom method name not found automagically"); - ok(jQuery.isDeferred(object1,"custom") , "custom method name"); -}); test("jQuery.when()", function() { - - expect( 5 ); - - var cache, i, deferred = { done: jQuery.Deferred().resolve( 1 ).then }; - - for( i = 1 ; i < 3 ; i++ ) { + + expect( 21 ); + + // Some other objects + jQuery.each( { + + "an empty string": "", + "a non-empty string": "some string", + "zero": 0, + "a number other than zero": 1, + "true": true, + "false": false, + "null": null, + "undefined": undefined, + "a plain object": {} + + } , function( message , value ) { + + ok( jQuery.isFunction( jQuery.when( value ).then( function( resolveValue ) { + strictEqual( resolveValue , value , "Test the promise was resolved with " + message ); + } ).promise ) , "Test " + message + " triggers the creation of a new Promise" ); + + } ); + + var cache, i; + + for( i = 1 ; i < 4 ; i++ ) { jQuery.when( cache || jQuery.Deferred( function() { this.resolve( i ); }) ).then( function( value ) { strictEqual( value , 1 , "Function executed" + ( i > 1 ? " only once" : "" ) ); cache = value; - }).fail( function() { + }, function() { ok( false , "Fail called" ); }); } - - cache = 0; - - for( i = 1 ; i < 3 ; i++ ) { - jQuery.when( cache || deferred , "done" ).done( function( value ) { - strictEqual( value , 1 , "Custom method: resolved" + ( i > 1 ? " only once" : "" ) ); - cache = value; - }).fail( function() { - ok( false , "Custom method: fail called" ); - }); - } - - stop(); - - jQuery.when( jQuery( document ) , "ready" ).then( function( test ) { - strictEqual( test , jQuery , "jQuery.fn.ready recognized as a deferred" ); - start(); - }); });