@@ -568,6 +568,35 @@ describe('EventEmitter', function tests() {
568568 } ) ;
569569 } ) ;
570570
571+ describe ( 'EventEmitter#removeListenersByContext' , function ( ) {
572+ it ( 'removes all listeners for the specified context' , function ( ) {
573+ var e = new EventEmitter ( ) ;
574+ var ctx1 = { } ;
575+ var ctx2 = { } ;
576+ var ctx3 = { } ;
577+
578+ e . on ( 'aaa' , function ( ) { throw new Error ( 'oops' ) ; } , ctx1 ) ;
579+ e . on ( 'bbb' , function ( ) { throw new Error ( 'oops' ) ; } , ctx1 ) ;
580+ e . on ( 'aaa' , function ( ) { throw new Error ( 'oops' ) ; } , ctx2 ) ;
581+ e . on ( 'bbb' , function ( ) { throw new Error ( 'oops' ) ; } , ctx3 ) ;
582+
583+ assume ( e . removeListenersByContext ( ctx1 ) ) . equals ( e ) ;
584+ assume ( e . listeners ( 'aaa' ) . length ) . equals ( 1 ) ;
585+ assume ( e . listeners ( 'bbb' ) . length ) . equals ( 1 ) ;
586+ assume ( e . _eventsCount ) . equals ( 2 ) ;
587+
588+ assume ( e . removeListenersByContext ( ctx2 ) ) . equals ( e ) ;
589+ assume ( e . listeners ( 'aaa' ) . length ) . equals ( 0 ) ;
590+ assume ( e . listeners ( 'bbb' ) . length ) . equals ( 1 ) ;
591+ assume ( e . _eventsCount ) . equals ( 1 ) ;
592+
593+ assume ( e . removeListenersByContext ( ctx3 ) ) . equals ( e ) ;
594+ assume ( e . listeners ( 'aaa' ) . length ) . equals ( 0 ) ;
595+ assume ( e . listeners ( 'bbb' ) . length ) . equals ( 0 ) ;
596+ assume ( e . _eventsCount ) . equals ( 0 ) ;
597+ } ) ;
598+ } ) ;
599+
571600 describe ( 'EventEmitter#eventNames' , function ( ) {
572601 it ( 'returns an empty array when there are no events' , function ( ) {
573602 var e = new EventEmitter ( ) ;
0 commit comments