@@ -906,6 +906,40 @@ exports['parallel'] = function(test){
906906 } ) ;
907907} ;
908908
909+ exports [ 'parallel with reflect' ] = function ( test ) {
910+ var call_order = [ ] ;
911+ async . parallel ( [
912+ async . reflect ( function ( callback ) {
913+ setTimeout ( function ( ) {
914+ call_order . push ( 1 ) ;
915+ callback ( null , 1 ) ;
916+ } , 50 ) ;
917+ } ) ,
918+ async . reflect ( function ( callback ) {
919+ setTimeout ( function ( ) {
920+ call_order . push ( 2 ) ;
921+ callback ( null , 2 ) ;
922+ } , 100 ) ;
923+ } ) ,
924+ async . reflect ( function ( callback ) {
925+ setTimeout ( function ( ) {
926+ call_order . push ( 3 ) ;
927+ callback ( null , 3 , 3 ) ;
928+ } , 25 ) ;
929+ } )
930+ ] ,
931+ function ( err , results ) {
932+ test . ok ( err === null , err + " passed instead of 'null'" ) ;
933+ test . same ( call_order , [ 3 , 1 , 2 ] ) ;
934+ test . same ( results , [
935+ { value : 1 } ,
936+ { value : 2 } ,
937+ { value : [ 3 , 3 ] }
938+ ] ) ;
939+ test . done ( ) ;
940+ } ) ;
941+ } ;
942+
909943exports [ 'parallel empty array' ] = function ( test ) {
910944 async . parallel ( [ ] , function ( err , results ) {
911945 test . ok ( err === null , err + " passed instead of 'null'" ) ;
@@ -929,6 +963,29 @@ exports['parallel error'] = function(test){
929963 setTimeout ( test . done , 100 ) ;
930964} ;
931965
966+ exports [ 'parallel error with reflect' ] = function ( test ) {
967+ async . parallel ( [
968+ async . reflect ( function ( callback ) {
969+ callback ( 'error' , 1 ) ;
970+ } ) ,
971+ async . reflect ( function ( callback ) {
972+ callback ( 'error2' , 2 ) ;
973+ } ) ,
974+ async . reflect ( function ( callback ) {
975+ callback ( null , 2 ) ;
976+ } )
977+ ] ,
978+ function ( err , results ) {
979+ test . ok ( err === null , err + " passed instead of 'null'" ) ;
980+ test . same ( results , [
981+ { error : 'error' } ,
982+ { error : 'error2' } ,
983+ { value : 2 }
984+ ] ) ;
985+ test . done ( ) ;
986+ } ) ;
987+ } ;
988+
932989exports [ 'parallel no callback' ] = function ( test ) {
933990 async . parallel ( [
934991 function ( callback ) { callback ( ) ; } ,
@@ -1155,6 +1212,40 @@ exports['series'] = {
11551212 } ) ;
11561213} ,
11571214
1215+ 'with reflect' : function ( test ) {
1216+ var call_order = [ ] ;
1217+ async . series ( [
1218+ async . reflect ( function ( callback ) {
1219+ setTimeout ( function ( ) {
1220+ call_order . push ( 1 ) ;
1221+ callback ( null , 1 ) ;
1222+ } , 25 ) ;
1223+ } ) ,
1224+ async . reflect ( function ( callback ) {
1225+ setTimeout ( function ( ) {
1226+ call_order . push ( 2 ) ;
1227+ callback ( null , 2 ) ;
1228+ } , 50 ) ;
1229+ } ) ,
1230+ async . reflect ( function ( callback ) {
1231+ setTimeout ( function ( ) {
1232+ call_order . push ( 3 ) ;
1233+ callback ( null , 3 , 3 ) ;
1234+ } , 15 ) ;
1235+ } )
1236+ ] ,
1237+ function ( err , results ) {
1238+ test . ok ( err === null , err + " passed instead of 'null'" ) ;
1239+ test . deepEqual ( results , [
1240+ { value : 1 } ,
1241+ { value : 2 } ,
1242+ { value : [ 3 , 3 ] }
1243+ ] ) ;
1244+ test . same ( call_order , [ 1 , 2 , 3 ] ) ;
1245+ test . done ( ) ;
1246+ } ) ;
1247+ } ,
1248+
11581249 'empty array' : function ( test ) {
11591250 async . series ( [ ] , function ( err , results ) {
11601251 test . equals ( err , null ) ;
@@ -1180,6 +1271,30 @@ exports['series'] = {
11801271 setTimeout ( test . done , 100 ) ;
11811272} ,
11821273
1274+ 'error with reflect' : function ( test ) {
1275+ test . expect ( 2 ) ;
1276+ async . series ( [
1277+ async . reflect ( function ( callback ) {
1278+ callback ( 'error' , 1 ) ;
1279+ } ) ,
1280+ async . reflect ( function ( callback ) {
1281+ callback ( 'error2' , 2 ) ;
1282+ } ) ,
1283+ async . reflect ( function ( callback ) {
1284+ callback ( null , 1 ) ;
1285+ } )
1286+ ] ,
1287+ function ( err , results ) {
1288+ test . ok ( err === null , err + " passed instead of 'null'" ) ;
1289+ test . deepEqual ( results , [
1290+ { error : 'error' } ,
1291+ { error : 'error2' } ,
1292+ { value : 1 }
1293+ ] ) ;
1294+ test . done ( ) ;
1295+ } ) ;
1296+ } ,
1297+
11831298 'no callback' : function ( test ) {
11841299 async . series ( [
11851300 function ( callback ) { callback ( ) ; } ,
@@ -1841,6 +1956,50 @@ exports['map'] = {
18411956 } ) ;
18421957} ,
18431958
1959+ 'with reflect' : function ( test ) {
1960+ var call_order = [ ] ;
1961+ async . map ( [ 1 , 3 , 2 ] , async . reflect ( function ( item , cb ) {
1962+ setTimeout ( function ( ) {
1963+ call_order . push ( item ) ;
1964+ cb ( null , item * 2 ) ;
1965+ } , item * 25 ) ;
1966+ } ) , function ( err , results ) {
1967+ test . ok ( err === null , err + " passed instead of 'null'" ) ;
1968+ test . same ( call_order , [ 1 , 2 , 3 ] ) ;
1969+ test . same ( results , [
1970+ { value : 2 } ,
1971+ { value : 6 } ,
1972+ { value : 4 }
1973+ ] ) ;
1974+ test . done ( ) ;
1975+ } ) ;
1976+ } ,
1977+
1978+ 'error with reflect' : function ( test ) {
1979+ var call_order = [ ] ;
1980+ async . map ( [ - 1 , 1 , 3 , 2 ] , async . reflect ( function ( item , cb ) {
1981+ setTimeout ( function ( ) {
1982+ call_order . push ( item ) ;
1983+ if ( item < 0 ) {
1984+ cb ( 'number less then zero' ) ;
1985+ } else {
1986+ cb ( null , item * 2 ) ;
1987+ }
1988+
1989+ } , item * 25 ) ;
1990+ } ) , function ( err , results ) {
1991+ test . ok ( err === null , err + " passed instead of 'null'" ) ;
1992+ test . same ( call_order , [ - 1 , 1 , 2 , 3 ] ) ;
1993+ test . same ( results , [
1994+ { error : 'number less then zero' } ,
1995+ { value : 2 } ,
1996+ { value : 6 } ,
1997+ { value : 4 }
1998+ ] ) ;
1999+ test . done ( ) ;
2000+ } ) ;
2001+ } ,
2002+
18442003 'map original untouched' : function ( test ) {
18452004 var a = [ 1 , 2 , 3 ] ;
18462005 async . map ( a , function ( x , callback ) {
0 commit comments