QUnit.module( "deferred", { teardown: moduleTeardown } ); jQuery.each( [ "", " - new operator" ], function( _, withNew ) { function createDeferred( fn ) { return withNew ? new jQuery.Deferred( fn ) : jQuery.Deferred( fn ); } QUnit.test( "jQuery.Deferred" + withNew, function( assert ) { assert.expect( 23 ); var defer = createDeferred(); assert.ok( jQuery.isFunction( defer.pipe ), "defer.pipe is a function" ); createDeferred().resolve().done( function() { assert.ok( true, "Success on resolve" ); assert.strictEqual( this.state(), "resolved", "Deferred is resolved (state)" ); } ).fail( function() { assert.ok( false, "Error on resolve" ); } ).always( function() { assert.ok( true, "Always callback on resolve" ); } ); createDeferred().reject().done( function() { assert.ok( false, "Success on reject" ); } ).fail( function() { assert.ok( true, "Error on reject" ); assert.strictEqual( this.state(), "rejected", "Deferred is rejected (state)" ); } ).always( function() { assert.ok( true, "Always callback on reject" ); } ); createDeferred( function( defer ) { assert.ok( this === defer, "Defer passed as this & first argument" ); this.resolve( "done" ); } ).done( function( value ) { assert.strictEqual( value, "done", "Passed function executed" ); } ); createDeferred( function( defer ) { var promise = defer.promise(), func = function() {}, funcPromise = defer.promise( func ); assert.strictEqual( defer.promise(), promise, "promise is always the same" ); assert.strictEqual( funcPromise, func, "non objects get extended" ); jQuery.each( promise, function( key ) { if ( !jQuery.isFunction( promise[ key ] ) ) { assert.ok( false, key + " is a function (" + jQuery.type( promise[ key ] ) + ")" ); } if ( promise[ key ] !== func[ key ] ) { assert.strictEqual( func[ key ], promise[ key ], key + " is the same" ); } } ); } ); jQuery.expandedEach = jQuery.each; jQuery.expandedEach( "resolve reject".split( " " ), function( _, change ) { createDeferred( function( defer ) { assert.strictEqual( defer.state(), "pending", "pending after creation" ); var checked = 0; defer.progress( function( value ) { assert.strictEqual( value, checked, "Progress: right value (" + value + ") received" ); } ); for ( checked = 0; checked < 3; checked++ ) { defer.notify( checked ); } assert.strictEqual( defer.state(), "pending", "pending after notification" ); defer[ change ](); assert.notStrictEqual( defer.state(), "pending", "not pending after " + change ); defer.notify(); } ); } ); } ); } ); QUnit.test( "jQuery.Deferred - chainability", function( assert ) { var defer = jQuery.Deferred(); assert.expect( 10 ); jQuery.expandedEach = jQuery.each; jQuery.expandedEach( "resolve reject notify resolveWith rejectWith notifyWith done fail progress always".split( " " ), function( _, method ) { var object = { m: defer[ method ] }; assert.strictEqual( object.m(), object, method + " is chainable" ); } ); } ); QUnit.test( "jQuery.Deferred.then - filtering (done)", function( assert ) { assert.expect( 4 ); var value1, value2, value3, defer = jQuery.Deferred(), piped = defer.then( function( a, b ) { return a * b; } ), done = jQuery.map( new Array( 3 ), function() { return assert.async(); } ); piped.done( function( result ) { value3 = result; } ); defer.done( function( a, b ) { value1 = a; value2 = b; } ); defer.resolve( 2, 3 ).then( function() { assert.strictEqual( value1, 2, "first resolve value ok" ); assert.strictEqual( value2, 3, "second resolve value ok" ); assert.strictEqual( value3, 6, "result of filter ok" ); done.pop().call(); } ); jQuery.Deferred().reject().then( function() { assert.ok( false, "then should not be called on reject" ); } ).then( null, done.pop() ); jQuery.Deferred().resolve().then( jQuery.noop ).done( function( value ) { assert.strictEqual( value, undefined, "then done callback can return undefined/null" ); done.pop().call(); } ); } ); QUnit.test( "jQuery.Deferred.then - filtering (fail)", function( assert ) { assert.expect( 4 ); var value1, value2, value3, defer = jQuery.Deferred(), piped = defer.then( null, function( a, b ) { return a * b; } ), done = jQuery.map( new Array( 3 ), function() { return assert.async(); } ); piped.done( function( result ) { value3 = result; } ); defer.fail( function( a, b ) { value1 = a; value2 = b; } ); defer.reject( 2, 3 ).then( null, function() { assert.strictEqual( value1, 2, "first reject value ok" ); assert.strictEqual( value2, 3, "second reject value ok" ); assert.strictEqual( value3, 6, "result of filter ok" ); done.pop().call(); } ); jQuery.Deferred().resolve().then( null, function() { assert.ok( false, "then should not be called on resolve" ); } ).then( done.pop() ); jQuery.Deferred().reject().then( null, jQuery.noop ).done( function( value ) { assert.strictEqual( value, undefined, "then fail callback can return undefined/null" ); done.pop().call(); } ); } ); QUnit.test( "jQuery.Deferred.catch", function( assert ) { assert.expect( 4 ); var value1, value2, value3, defer = jQuery.Deferred(), piped = defer[ "catch" ]( function( a, b ) { return a * b; } ), done = jQuery.map( new Array( 3 ), function() { return assert.async(); } ); piped.done( function( result ) { value3 = result; } ); defer.fail( function( a, b ) { value1 = a; value2 = b; } ); defer.reject( 2, 3 )[ "catch" ]( function() { assert.strictEqual( value1, 2, "first reject value ok" ); assert.strictEqual( value2, 3, "second reject value ok" ); assert.strictEqual( value3, 6, "result of filter ok" ); done.pop().call(); } ); jQuery.Deferred().resolve()[ "catch" ]( function() { assert.ok( false, "then should not be called on resolve" ); } ).then( done.pop() ); jQuery.Deferred().reject()[ "catch" ]( jQuery.noop ).done( function( value ) { assert.strictEqual( value, undefined, "then fail callback can return undefined/null" ); done.pop().call(); } ); } ); QUnit.test( "[PIPE ONLY] jQuery.Deferred.pipe - filtering (fail)", function( assert ) { assert.expect( 4 ); var value1, value2, value3, defer = jQuery.Deferred(), piped = defer.pipe( null, function( a, b ) { return a * b; } ), done = jQuery.map( new Array(
/* Malayalam (UTF-8) initialisation for the jQuery UI date picker plugin. */
/* Written by Saji Nediyanchath (saji89@gmail.com). */
jQuery(function($){
$.datepicker.regional['ml'] = {
closeText: 'ശരി',
prevText: 'മുന്നത്തെ',
nextText: 'അടുത്തത് ',
currentText: 'ഇന്ന്',
monthNames: ['ജനുവരി','ഫെബ്രുവരി','മാര്ച്ച്','ഏപ്രില്','മേയ്','ജൂണ്',
'ജൂലൈ','ആഗസ്റ്റ്','സെപ്റ്റംബര്','ഒക്ടോബര്','നവംബര്','ഡിസംബര്'],
monthNamesShort: ['ജനു', 'ഫെബ്', 'മാര്', 'ഏപ്രി', 'മേയ്', 'ജൂണ്',
'ജൂലാ', 'ആഗ', 'സെപ്', 'ഒക്ടോ', 'നവം', 'ഡിസ'],
dayNames: ['ഞായര്', 'തിങ്കള്', 'ചൊവ്വ', 'ബുധന്', 'വ്യാഴം', 'വെള്ളി', 'ശനി'],
dayNamesShort: ['ഞായ', 'തിങ്ക', 'ചൊവ്വ', 'ബുധ', 'വ്യാഴം', 'വെള്ളി', 'ശനി'],
dayNamesMin: ['ഞാ','തി','ചൊ','ബു','വ്യാ','വെ','ശ'],
weekHeader: 'ആ',
dateFormat: 'dd/mm/yy',
firstDay: 1,
isRTL: false,
showMonthAfterYear: false,
yearSuffix: ''};
$.datepicker.setDefaults($.datepicker.regional['ml']);
});