@@ -1972,6 +1972,78 @@ describe('q', function() {
1972
1972
} ) ;
1973
1973
} ) ;
1974
1974
1975
+ describe ( 'race (array)' , function ( ) {
1976
+ it ( 'should do nothing if given an empty array' , function ( ) {
1977
+ q . race ( [ ] ) . then ( success ( ) , error ( ) ) ;
1978
+ expect ( mockNextTick . queue . length ) . toBe ( 0 ) ;
1979
+ expect ( logStr ( ) ) . toBe ( '' ) ;
1980
+ } ) ;
1981
+
1982
+ it ( 'should resolve as soon as the first promise is settled by resolution' , function ( ) {
1983
+ var deferred1 = defer ( ) ,
1984
+ deferred2 = defer ( ) ;
1985
+
1986
+ q . race ( [ promise , deferred1 . promise , deferred2 . promise ] ) . then ( success ( ) , error ( ) ) ;
1987
+ expect ( logStr ( ) ) . toBe ( '' ) ;
1988
+ syncResolve ( deferred1 , 'hi' ) ;
1989
+ expect ( logStr ( ) ) . toBe ( 'success(hi)->hi' ) ;
1990
+ syncResolve ( deferred2 , 'cau' ) ;
1991
+ expect ( logStr ( ) ) . toBe ( 'success(hi)->hi' ) ;
1992
+ syncReject ( deferred , 'hola' ) ;
1993
+ expect ( logStr ( ) ) . toBe ( 'success(hi)->hi' ) ;
1994
+ } ) ;
1995
+
1996
+ it ( 'should reject as soon as the first promise is settled by rejection' , function ( ) {
1997
+ var deferred1 = defer ( ) ,
1998
+ deferred2 = defer ( ) ;
1999
+
2000
+ q . race ( [ promise , deferred1 . promise , deferred2 . promise ] ) . then ( success ( ) , error ( ) ) ;
2001
+ expect ( logStr ( ) ) . toBe ( '' ) ;
2002
+ syncReject ( deferred1 , 'hi' ) ;
2003
+ expect ( logStr ( ) ) . toBe ( 'error(hi)->reject(hi)' ) ;
2004
+ syncResolve ( deferred2 , 'cau' ) ;
2005
+ expect ( logStr ( ) ) . toBe ( 'error(hi)->reject(hi)' ) ;
2006
+ syncReject ( deferred , 'hola' ) ;
2007
+ expect ( logStr ( ) ) . toBe ( 'error(hi)->reject(hi)' ) ;
2008
+ } ) ;
2009
+ } ) ;
2010
+
2011
+ describe ( 'race (hash)' , function ( ) {
2012
+ it ( 'should do nothing if given an empty array' , function ( ) {
2013
+ q . race ( { } ) . then ( success ( ) , error ( ) ) ;
2014
+ expect ( mockNextTick . queue . length ) . toBe ( 0 ) ;
2015
+ expect ( logStr ( ) ) . toBe ( '' ) ;
2016
+ } ) ;
2017
+
2018
+ it ( 'should resolve as soon as the first promise is settled by resolution' , function ( ) {
2019
+ var deferred1 = defer ( ) ,
2020
+ deferred2 = defer ( ) ;
2021
+
2022
+ q . race ( { a : promise , b : deferred1 . promise , c : deferred2 . promise } ) . then ( success ( ) , error ( ) ) ;
2023
+ expect ( logStr ( ) ) . toBe ( '' ) ;
2024
+ syncResolve ( deferred1 , 'hi' ) ;
2025
+ expect ( logStr ( ) ) . toBe ( 'success(hi)->hi' ) ;
2026
+ syncResolve ( deferred2 , 'cau' ) ;
2027
+ expect ( logStr ( ) ) . toBe ( 'success(hi)->hi' ) ;
2028
+ syncReject ( deferred , 'hola' ) ;
2029
+ expect ( logStr ( ) ) . toBe ( 'success(hi)->hi' ) ;
2030
+ } ) ;
2031
+
2032
+ it ( 'should reject as soon as the first promise is settled by rejection' , function ( ) {
2033
+ var deferred1 = defer ( ) ,
2034
+ deferred2 = defer ( ) ;
2035
+
2036
+ q . race ( { a : promise , b : deferred1 . promise , c : deferred2 . promise } ) . then ( success ( ) , error ( ) ) ;
2037
+ expect ( logStr ( ) ) . toBe ( '' ) ;
2038
+ syncReject ( deferred1 , 'hi' ) ;
2039
+ expect ( logStr ( ) ) . toBe ( 'error(hi)->reject(hi)' ) ;
2040
+ syncResolve ( deferred2 , 'cau' ) ;
2041
+ expect ( logStr ( ) ) . toBe ( 'error(hi)->reject(hi)' ) ;
2042
+ syncReject ( deferred , 'hola' ) ;
2043
+ expect ( logStr ( ) ) . toBe ( 'error(hi)->reject(hi)' ) ;
2044
+ } ) ;
2045
+ } ) ;
2046
+
1975
2047
describe ( 'exception logging' , function ( ) {
1976
2048
var mockExceptionLogger = {
1977
2049
log : [ ] ,
0 commit comments