mirror of
https://github.com/jquery/jquery.git
synced 2026-04-20 03:01:22 -04:00
$.Callbacks, $.Topic and notify/progress on $.Deferred.
This commit is contained in:
@@ -16,7 +16,9 @@
|
||||
#positionTest { position: absolute; }
|
||||
</style>
|
||||
<script src="../../../src/core.js"></script>
|
||||
<script src="../../../src/callbacks.js"></script>
|
||||
<script src="../../../src/deferred.js"></script>
|
||||
<script src="../../../src/topic.js"></script>
|
||||
<script src="../../../src/support.js"></script>
|
||||
<script src="../../../src/sizzle/sizzle.js"></script>
|
||||
<script src="../../../src/sizzle-jquery.js"></script>
|
||||
|
||||
@@ -9,7 +9,9 @@
|
||||
#marker { position: absolute; border: 2px solid #000; width: 50px; height: 50px; background: #ccc; }
|
||||
</style>
|
||||
<script src="../../../src/core.js"></script>
|
||||
<script src="../../../src/callbacks.js"></script>
|
||||
<script src="../../../src/deferred.js"></script>
|
||||
<script src="../../../src/topic.js"></script>
|
||||
<script src="../../../src/support.js"></script>
|
||||
<script src="../../../src/sizzle/sizzle.js"></script>
|
||||
<script src="../../../src/sizzle-jquery.js"></script>
|
||||
|
||||
@@ -13,7 +13,9 @@
|
||||
#marker { position: absolute; border: 2px solid #000; width: 50px; height: 50px; background: #ccc; }
|
||||
</style>
|
||||
<script src="../../../src/core.js"></script>
|
||||
<script src="../../../src/callbacks.js"></script>
|
||||
<script src="../../../src/deferred.js"></script>
|
||||
<script src="../../../src/topic.js"></script>
|
||||
<script src="../../../src/support.js"></script>
|
||||
<script src="../../../src/sizzle/sizzle.js"></script>
|
||||
<script src="../../../src/sizzle-jquery.js"></script>
|
||||
|
||||
@@ -11,7 +11,9 @@
|
||||
#marker { position: absolute; border: 2px solid #000; width: 50px; height: 50px; background: #ccc; }
|
||||
</style>
|
||||
<script src="../../../src/core.js"></script>
|
||||
<script src="../../../src/callbacks.js"></script>
|
||||
<script src="../../../src/deferred.js"></script>
|
||||
<script src="../../../src/topic.js"></script>
|
||||
<script src="../../../src/support.js"></script>
|
||||
<script src="../../../src/sizzle/sizzle.js"></script>
|
||||
<script src="../../../src/sizzle-jquery.js"></script>
|
||||
|
||||
@@ -14,7 +14,9 @@
|
||||
#marker { position: absolute; border: 2px solid #000; width: 50px; height: 50px; background: #ccc; }
|
||||
</style>
|
||||
<script src="../../../src/core.js"></script>
|
||||
<script src="../../../src/callbacks.js"></script>
|
||||
<script src="../../../src/deferred.js"></script>
|
||||
<script src="../../../src/topic.js"></script>
|
||||
<script src="../../../src/support.js"></script>
|
||||
<script src="../../../src/sizzle/sizzle.js"></script>
|
||||
<script src="../../../src/sizzle-jquery.js"></script>
|
||||
|
||||
@@ -11,7 +11,9 @@
|
||||
#marker { position: absolute; border: 2px solid #000; width: 50px; height: 50px; background: #ccc; }
|
||||
</style>
|
||||
<script src="../../../src/core.js"></script>
|
||||
<script src="../../../src/callbacks.js"></script>
|
||||
<script src="../../../src/deferred.js"></script>
|
||||
<script src="../../../src/topic.js"></script>
|
||||
<script src="../../../src/support.js"></script>
|
||||
<script src="../../../src/sizzle/sizzle.js"></script>
|
||||
<script src="../../../src/sizzle-jquery.js"></script>
|
||||
|
||||
@@ -11,7 +11,9 @@
|
||||
#marker { position: absolute; border: 2px solid #000; width: 50px; height: 50px; background: #ccc; }
|
||||
</style>
|
||||
<script src="../../../src/core.js"></script>
|
||||
<script src="../../../src/callbacks.js"></script>
|
||||
<script src="../../../src/deferred.js"></script>
|
||||
<script src="../../../src/topic.js"></script>
|
||||
<script src="../../../src/support.js"></script>
|
||||
<script src="../../../src/sizzle/sizzle.js"></script>
|
||||
<script src="../../../src/sizzle-jquery.js"></script>
|
||||
|
||||
@@ -11,7 +11,9 @@
|
||||
<body>
|
||||
<div>
|
||||
<script src="../../../src/core.js"></script>
|
||||
<script src="../../../src/callbacks.js"></script>
|
||||
<script src="../../../src/deferred.js"></script>
|
||||
<script src="../../../src/topic.js"></script>
|
||||
<script src="../../../src/support.js"></script>
|
||||
<script src="../../../src/data.js"></script>
|
||||
<script src="../../../src/queue.js"></script>
|
||||
|
||||
@@ -2,7 +2,9 @@
|
||||
<html>
|
||||
<body>
|
||||
<script src="../../../src/core.js"></script>
|
||||
<script src="../../../src/callbacks.js"></script>
|
||||
<script src="../../../src/deferred.js"></script>
|
||||
<script src="../../../src/topic.js"></script>
|
||||
<script src="../../../src/support.js"></script>
|
||||
<script src="../../../src/data.js"></script>
|
||||
<script src="../../../src/queue.js"></script>
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
<html>
|
||||
<head>
|
||||
<script src="../../../src/core.js"></script>
|
||||
<script src="../../../src/callbacks.js"></script>
|
||||
<script src="../../../src/deferred.js"></script>
|
||||
<script src="../../../src/topic.js"></script>
|
||||
<script src="../../../src/support.js"></script>
|
||||
<script src="../../../src/data.js"></script>
|
||||
<script src="../../../src/queue.js"></script>
|
||||
|
||||
@@ -9,7 +9,9 @@
|
||||
<script src="data/testinit.js"></script>
|
||||
|
||||
<script src="../src/core.js"></script>
|
||||
<script src="../src/callbacks.js"></script>
|
||||
<script src="../src/deferred.js"></script>
|
||||
<script src="../src/topic.js"></script>
|
||||
<script src="../src/support.js"></script>
|
||||
<script src="../src/data.js"></script>
|
||||
<script src="../src/queue.js"></script>
|
||||
@@ -35,7 +37,9 @@
|
||||
|
||||
<script src="unit/core.js"></script>
|
||||
<script src="unit/support.js"></script>
|
||||
<script src="unit/callbacks.js"></script>
|
||||
<script src="unit/deferred.js"></script>
|
||||
<script src="unit/topic.js"></script>
|
||||
<script src="unit/data.js"></script>
|
||||
<script src="unit/queue.js"></script>
|
||||
<script src="unit/attributes.js"></script>
|
||||
|
||||
194
test/unit/callbacks.js
Normal file
194
test/unit/callbacks.js
Normal file
@@ -0,0 +1,194 @@
|
||||
module("callbacks", { teardown: moduleTeardown });
|
||||
|
||||
(function() {
|
||||
|
||||
var output,
|
||||
addToOutput = function( string ) {
|
||||
return function() {
|
||||
output += string;
|
||||
};
|
||||
},
|
||||
outputA = addToOutput( "A" ),
|
||||
outputB = addToOutput( "B" ),
|
||||
outputC = addToOutput( "C" ),
|
||||
tests = {
|
||||
"": "XABC X XABCABCC X XBB X XABA X",
|
||||
"once": "XABC X X X X X XABA X",
|
||||
"memory": "XABC XABC XABCABCCC XA XBB XB XABA XC",
|
||||
"unique": "XABC X XABCA X XBB X XAB X",
|
||||
"relocate": "XABC X XAABC X XBB X XBA X",
|
||||
"stopOnFalse": "XABC X XABCABCC X XBB X XA X",
|
||||
"addAfterFire": "XAB X XABCAB X XBB X XABA X",
|
||||
"queue": "XA X XB X XB X XA X",
|
||||
"once memory": "XABC XABC X XA X XA XABA XC",
|
||||
"once unique": "XABC X X X X X XAB X",
|
||||
"once relocate": "XABC X X X X X XBA X",
|
||||
"once stopOnFalse": "XABC X X X X X XA X",
|
||||
"once addAfterFire": "XAB X X X X X XABA X",
|
||||
"memory unique": "XABC XA XABCA XA XBB XB XAB XC",
|
||||
"memory relocate": "XABC XB XAABC XA XBB XB XBA XC",
|
||||
"memory stopOnFalse": "XABC XABC XABCABCCC XA XBB XB XA X",
|
||||
"memory addAfterFire": "XAB XAB XABCABC XA XBB XB XABA XC",
|
||||
"unique relocate": "XABC X XAABC X XBB X XBA X",
|
||||
"unique stopOnFalse": "XABC X XABCA X XBB X XA X",
|
||||
"unique addAfterFire": "XAB X XABCA X XBB X XAB X",
|
||||
"relocate stopOnFalse": "XABC X XAABC X XBB X X X",
|
||||
"relocate addAfterFire": "XAB X XAA X XBB X XBA X",
|
||||
"stopOnFalse addAfterFire": "XAB X XABCAB X XBB X XA X"
|
||||
},
|
||||
filters = {
|
||||
"no filter": undefined,
|
||||
"filter": function( fn ) {
|
||||
return function() {
|
||||
return fn.apply( this, arguments );
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
jQuery.each( tests, function( flags, resultString ) {
|
||||
|
||||
jQuery.each( filters, function( filterLabel, filter ) {
|
||||
|
||||
test( "jQuery.Callbacks( \"" + flags + "\" ) - " + filterLabel, function() {
|
||||
|
||||
expect( 19 );
|
||||
|
||||
// Give qunit a little breathing room
|
||||
stop();
|
||||
setTimeout( start, 0 );
|
||||
|
||||
var cblist;
|
||||
results = resultString.split( /\s+/ );
|
||||
|
||||
// Basic binding and firing
|
||||
output = "X";
|
||||
cblist = jQuery.Callbacks( flags );
|
||||
cblist.add(function( str ) {
|
||||
output += str;
|
||||
});
|
||||
cblist.fire( "A" );
|
||||
strictEqual( output, "XA", "Basic binding and firing" );
|
||||
output = "X";
|
||||
cblist.disable();
|
||||
cblist.add(function( str ) {
|
||||
output += str;
|
||||
});
|
||||
strictEqual( output, "X", "Adding a callback after disabling" );
|
||||
cblist.fire( "A" );
|
||||
strictEqual( output, "X", "Firing after disabling" );
|
||||
|
||||
// Basic binding and firing (context, arguments)
|
||||
output = "X";
|
||||
cblist = jQuery.Callbacks( flags );
|
||||
cblist.add(function() {
|
||||
equals( this, window, "Basic binding and firing (context)" );
|
||||
output += Array.prototype.join.call( arguments, "" );
|
||||
});
|
||||
cblist.fireWith( window, [ "A", "B" ] );
|
||||
strictEqual( output, "XAB", "Basic binding and firing (arguments)" );
|
||||
|
||||
// fireWith with no arguments
|
||||
output = "";
|
||||
cblist = jQuery.Callbacks( flags );
|
||||
cblist.add(function() {
|
||||
equals( this, window, "fireWith with no arguments (context is window)" );
|
||||
strictEqual( arguments.length, 0, "fireWith with no arguments (no arguments)" );
|
||||
});
|
||||
cblist.fireWith();
|
||||
|
||||
// Basic binding, removing and firing
|
||||
output = "X";
|
||||
cblist = jQuery.Callbacks( flags );
|
||||
cblist.add( outputA, outputB, outputC );
|
||||
cblist.remove( outputB, outputC );
|
||||
cblist.fire();
|
||||
strictEqual( output, "XA", "Basic binding, removing and firing" );
|
||||
|
||||
// Empty
|
||||
output = "X";
|
||||
cblist = jQuery.Callbacks( flags );
|
||||
cblist.add( outputA );
|
||||
cblist.add( outputB );
|
||||
cblist.add( outputC );
|
||||
cblist.empty();
|
||||
cblist.fire();
|
||||
strictEqual( output, "X", "Empty" );
|
||||
|
||||
// Locking
|
||||
output = "X";
|
||||
cblist = jQuery.Callbacks( flags );
|
||||
cblist.add( function( str ) {
|
||||
output += str;
|
||||
});
|
||||
cblist.lock();
|
||||
cblist.add( function( str ) {
|
||||
output += str;
|
||||
});
|
||||
cblist.fire( "A" );
|
||||
cblist.add( function( str ) {
|
||||
output += str;
|
||||
});
|
||||
strictEqual( output, "X", "Lock early" );
|
||||
|
||||
// Ordering
|
||||
output = "X";
|
||||
cblist = jQuery.Callbacks( flags );
|
||||
cblist.add( function() {
|
||||
cblist.add( outputC );
|
||||
outputA();
|
||||
}, outputB );
|
||||
cblist.fire();
|
||||
strictEqual( output, results.shift(), "Proper ordering" );
|
||||
|
||||
// Add and fire again
|
||||
output = "X";
|
||||
cblist.add( function() {
|
||||
cblist.add( outputC );
|
||||
outputA();
|
||||
}, outputB );
|
||||
strictEqual( output, results.shift(), "Add after fire" );
|
||||
|
||||
output = "X";
|
||||
cblist.fire();
|
||||
strictEqual( output, results.shift(), "Fire again" );
|
||||
|
||||
// Multiple fire
|
||||
output = "X";
|
||||
cblist = jQuery.Callbacks( flags );
|
||||
cblist.add( function( str ) {
|
||||
output += str;
|
||||
} );
|
||||
cblist.fire( "A" );
|
||||
strictEqual( output, "XA", "Multiple fire (first fire)" );
|
||||
output = "X";
|
||||
cblist.add( function( str ) {
|
||||
output += str;
|
||||
} );
|
||||
strictEqual( output, results.shift(), "Multiple fire (first new callback)" );
|
||||
output = "X";
|
||||
cblist.fire( "B" );
|
||||
strictEqual( output, results.shift(), "Multiple fire (second fire)" );
|
||||
output = "X";
|
||||
cblist.add( function( str ) {
|
||||
output += str;
|
||||
} );
|
||||
strictEqual( output, results.shift(), "Multiple fire (second new callback)" );
|
||||
|
||||
// Return false
|
||||
output = "X";
|
||||
cblist = jQuery.Callbacks( flags );
|
||||
cblist.add( outputA, function() { return false; }, outputB );
|
||||
cblist.add( outputA );
|
||||
cblist.fire();
|
||||
strictEqual( output, results.shift(), "Callback returning false" );
|
||||
|
||||
// Add another callback (to control lists with memory do not fire anymore)
|
||||
output = "X";
|
||||
cblist.add( outputC );
|
||||
strictEqual( output, results.shift(), "Adding a callback after one returned false" );
|
||||
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
})();
|
||||
@@ -1,111 +1,5 @@
|
||||
module("deferred", { teardown: moduleTeardown });
|
||||
|
||||
jQuery.each( [ "", " - new operator" ], function( _, withNew ) {
|
||||
|
||||
function createDeferred() {
|
||||
return withNew ? new jQuery._Deferred() : jQuery._Deferred();
|
||||
}
|
||||
|
||||
test("jQuery._Deferred" + withNew, function() {
|
||||
|
||||
expect( 11 );
|
||||
|
||||
var deferred,
|
||||
object,
|
||||
test;
|
||||
|
||||
deferred = createDeferred();
|
||||
|
||||
test = false;
|
||||
|
||||
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.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.done( function() {
|
||||
ok( false , "Cancel was ignored" );
|
||||
test = false;
|
||||
} );
|
||||
|
||||
ok( test , "Test cancel" );
|
||||
|
||||
deferred = createDeferred().resolve();
|
||||
|
||||
try {
|
||||
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.done();
|
||||
}
|
||||
|
||||
test = "";
|
||||
deferred = createDeferred().done( function() {
|
||||
|
||||
test += "A";
|
||||
|
||||
}, function() {
|
||||
|
||||
test += "B";
|
||||
|
||||
} ).resolve();
|
||||
|
||||
strictEqual( test , "AB" , "Test multiple done parameters" );
|
||||
|
||||
test = "";
|
||||
|
||||
deferred.done( function() {
|
||||
|
||||
deferred.done( function() {
|
||||
|
||||
test += "C";
|
||||
|
||||
} );
|
||||
|
||||
test += "A";
|
||||
|
||||
}, function() {
|
||||
|
||||
test += "B";
|
||||
} );
|
||||
|
||||
strictEqual( test , "ABC" , "Test done callbacks order" );
|
||||
|
||||
deferred = createDeferred();
|
||||
|
||||
deferred.resolveWith( jQuery , [ document ] ).done( function( doc ) {
|
||||
ok( this === jQuery && arguments.length === 1 && doc === document , "Test fire context & args" );
|
||||
});
|
||||
|
||||
// #8421
|
||||
deferred = createDeferred();
|
||||
deferred.resolveWith().done(function() {
|
||||
ok( true, "Test resolveWith can be called with no argument" );
|
||||
});
|
||||
});
|
||||
} );
|
||||
|
||||
jQuery.each( [ "", " - new operator" ], function( _, withNew ) {
|
||||
|
||||
function createDeferred( fn ) {
|
||||
@@ -114,7 +8,7 @@ jQuery.each( [ "", " - new operator" ], function( _, withNew ) {
|
||||
|
||||
test("jQuery.Deferred" + withNew, function() {
|
||||
|
||||
expect( 8 );
|
||||
expect( 14 );
|
||||
|
||||
createDeferred().resolve().then( function() {
|
||||
ok( true , "Success on resolve" );
|
||||
@@ -140,6 +34,20 @@ jQuery.each( [ "", " - new operator" ], function( _, withNew ) {
|
||||
}).then( function( value ) {
|
||||
strictEqual( value , "done" , "Passed function executed" );
|
||||
});
|
||||
|
||||
jQuery.each( "resolve reject".split( " " ), function( _, change ) {
|
||||
createDeferred( function( defer ) {
|
||||
var checked = 0;
|
||||
defer.progress(function( value ) {
|
||||
strictEqual( value, checked, "Progress: right value (" + value + ") received" );
|
||||
});
|
||||
for( checked = 0; checked < 3 ; checked++ ) {
|
||||
defer.notify( checked );
|
||||
}
|
||||
defer[ change ]();
|
||||
defer.notify();
|
||||
});
|
||||
});
|
||||
});
|
||||
} );
|
||||
|
||||
@@ -215,6 +123,34 @@ test( "jQuery.Deferred.pipe - filtering (fail)", function() {
|
||||
});
|
||||
});
|
||||
|
||||
test( "jQuery.Deferred.pipe - filtering (progress)", function() {
|
||||
|
||||
expect(3);
|
||||
|
||||
var defer = jQuery.Deferred(),
|
||||
piped = defer.pipe( null, null, function( a, b ) {
|
||||
return a * b;
|
||||
} ),
|
||||
value1,
|
||||
value2,
|
||||
value3;
|
||||
|
||||
piped.progress(function( result ) {
|
||||
value3 = result;
|
||||
});
|
||||
|
||||
defer.progress(function( a, b ) {
|
||||
value1 = a;
|
||||
value2 = b;
|
||||
});
|
||||
|
||||
defer.notify( 2, 3 );
|
||||
|
||||
strictEqual( value1, 2, "first progress value ok" );
|
||||
strictEqual( value2, 3, "second progress value ok" );
|
||||
strictEqual( value3, 6, "result of filter ok" );
|
||||
});
|
||||
|
||||
test( "jQuery.Deferred.pipe - deferred (done)", function() {
|
||||
|
||||
expect(3);
|
||||
@@ -275,6 +211,36 @@ test( "jQuery.Deferred.pipe - deferred (fail)", function() {
|
||||
strictEqual( value3, 6, "result of filter ok" );
|
||||
});
|
||||
|
||||
test( "jQuery.Deferred.pipe - deferred (progress)", function() {
|
||||
|
||||
expect(3);
|
||||
|
||||
var defer = jQuery.Deferred(),
|
||||
piped = defer.pipe( null, null, function( a, b ) {
|
||||
return jQuery.Deferred(function( defer ) {
|
||||
defer.resolve( a * b );
|
||||
});
|
||||
} ),
|
||||
value1,
|
||||
value2,
|
||||
value3;
|
||||
|
||||
piped.done(function( result ) {
|
||||
value3 = result;
|
||||
});
|
||||
|
||||
defer.progress(function( a, b ) {
|
||||
value1 = a;
|
||||
value2 = b;
|
||||
});
|
||||
|
||||
defer.notify( 2, 3 );
|
||||
|
||||
strictEqual( value1, 2, "first progress value ok" );
|
||||
strictEqual( value2, 3, "second progress value ok" );
|
||||
strictEqual( value3, 6, "result of filter ok" );
|
||||
});
|
||||
|
||||
test( "jQuery.Deferred.pipe - context", function() {
|
||||
|
||||
expect(4);
|
||||
@@ -301,7 +267,6 @@ test( "jQuery.Deferred.pipe - context", function() {
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
test( "jQuery.when" , function() {
|
||||
|
||||
expect( 23 );
|
||||
@@ -345,36 +310,54 @@ test( "jQuery.when" , function() {
|
||||
|
||||
test("jQuery.when - joined", function() {
|
||||
|
||||
expect(25);
|
||||
expect(53);
|
||||
|
||||
var deferreds = {
|
||||
value: 1,
|
||||
success: jQuery.Deferred().resolve( 1 ),
|
||||
error: jQuery.Deferred().reject( 0 ),
|
||||
futureSuccess: jQuery.Deferred(),
|
||||
futureError: jQuery.Deferred()
|
||||
futureSuccess: jQuery.Deferred().notify( true ),
|
||||
futureError: jQuery.Deferred().notify( true ),
|
||||
notify: jQuery.Deferred().notify( true )
|
||||
},
|
||||
willSucceed = {
|
||||
value: true,
|
||||
success: true,
|
||||
error: false,
|
||||
futureSuccess: true
|
||||
},
|
||||
willError = {
|
||||
error: true,
|
||||
futureError: true
|
||||
},
|
||||
willNotify = {
|
||||
futureSuccess: true,
|
||||
futureError: false
|
||||
futureError: true,
|
||||
notify: true
|
||||
};
|
||||
|
||||
jQuery.each( deferreds, function( id1, defer1 ) {
|
||||
jQuery.each( deferreds, function( id2, defer2 ) {
|
||||
var shouldResolve = willSucceed[ id1 ] && willSucceed[ id2 ],
|
||||
shouldError = willError[ id1 ] || willError[ id2 ],
|
||||
shouldNotify = willNotify[ id1 ] || willNotify[ id2 ],
|
||||
expected = shouldResolve ? [ 1, 1 ] : [ 0, undefined ],
|
||||
code = id1 + "/" + id2;
|
||||
jQuery.when( defer1, defer2 ).done(function( a, b ) {
|
||||
expectedNotify = shouldNotify && [ willNotify[ id1 ], willNotify[ id2 ] ],
|
||||
code = id1 + "/" + id2;
|
||||
|
||||
var promise = jQuery.when( defer1, defer2 ).done(function( a, b ) {
|
||||
if ( shouldResolve ) {
|
||||
same( [ a, b ], expected, code + " => resolve" );
|
||||
} else {
|
||||
ok( false , code + " => resolve" );
|
||||
}
|
||||
}).fail(function( a, b ) {
|
||||
if ( !shouldResolve ) {
|
||||
same( [ a, b ], expected, code + " => resolve" );
|
||||
if ( shouldError ) {
|
||||
same( [ a, b ], expected, code + " => reject" );
|
||||
} else {
|
||||
ok( false , code + " => reject" );
|
||||
}
|
||||
}).progress(function progress( a, b ) {
|
||||
same( [ a, b ], expectedNotify, code + " => progress" );
|
||||
});
|
||||
} );
|
||||
} );
|
||||
|
||||
68
test/unit/topic.js
Normal file
68
test/unit/topic.js
Normal file
@@ -0,0 +1,68 @@
|
||||
module("topic", { teardown: moduleTeardown });
|
||||
|
||||
test( "jQuery.Topic - Anonymous Topic", function() {
|
||||
|
||||
expect( 4 );
|
||||
|
||||
var topic = jQuery.Topic(),
|
||||
count = 0;
|
||||
|
||||
function firstCallback( value ) {
|
||||
strictEqual( count, 1, "Callback called when needed" );
|
||||
strictEqual( value, "test", "Published value received" );
|
||||
}
|
||||
|
||||
count++;
|
||||
topic.subscribe( firstCallback );
|
||||
topic.publish( "test" );
|
||||
topic.unsubscribe( firstCallback );
|
||||
count++;
|
||||
topic.subscribe(function( value ) {
|
||||
strictEqual( count, 2, "Callback called when needed" );
|
||||
strictEqual( value, "test", "Published value received" );
|
||||
});
|
||||
topic.publish( "test" );
|
||||
|
||||
});
|
||||
|
||||
test( "jQuery.Topic - Named Topic", function() {
|
||||
|
||||
expect( 2 );
|
||||
|
||||
function callback( value ) {
|
||||
ok( true, "Callback called" );
|
||||
strictEqual( value, "test", "Proper value received" );
|
||||
}
|
||||
|
||||
jQuery.Topic( "test" ).subscribe( callback );
|
||||
jQuery.Topic( "test" ).publish( "test" );
|
||||
jQuery.Topic( "test" ).unsubscribe( callback );
|
||||
jQuery.Topic( "test" ).publish( "test" );
|
||||
});
|
||||
|
||||
test( "jQuery.Topic - Helpers", function() {
|
||||
|
||||
expect( 4 );
|
||||
|
||||
function callback( value ) {
|
||||
ok( true, "Callback called" );
|
||||
strictEqual( value, "test", "Proper value received" );
|
||||
}
|
||||
|
||||
jQuery.subscribe( "test", callback );
|
||||
jQuery.publish( "test" , "test" );
|
||||
jQuery.unsubscribe( "test", callback );
|
||||
jQuery.publish( "test" , "test" );
|
||||
|
||||
|
||||
var test = true,
|
||||
subscription = jQuery.subscribe( "test", function() {
|
||||
ok( test, "first callback called" );
|
||||
}, function() {
|
||||
ok( test, "second callback called" );
|
||||
});
|
||||
jQuery.publish( "test" );
|
||||
test = false;
|
||||
jQuery.unsubscribe( subscription );
|
||||
jQuery.publish( "test" );
|
||||
});
|
||||
Reference in New Issue
Block a user