@@ -90,6 +90,35 @@ describe('The Media Track Object', () => {
9090 expect ( track . clips . at ( 1 ) ?. state ) . toBe ( 'ATTACHED' ) ;
9191 } ) ;
9292
93+ it ( 'removes silences twice' , async ( ) => {
94+ const clip = new MockMediaClip ( [ new Timestamp ( 10000 ) , new Timestamp ( 20000 ) ] , [
95+ {
96+ start : new Timestamp ( 0 ) ,
97+ stop : new Timestamp ( 500 ) ,
98+ } ,
99+ {
100+ start : new Timestamp ( 11000 ) ,
101+ stop : new Timestamp ( 15000 ) ,
102+ } ,
103+ {
104+ start : new Timestamp ( 19000 ) ,
105+ stop : new Timestamp ( 30500 ) ,
106+ } ,
107+ ] , new Audio ( ) ) ;
108+ await track . add ( clip ) ;
109+ expect ( clip . source ) . toBeDefined ( ) ;
110+ await track . removeSilences ( ) ;
111+ await track . removeSilences ( ) ;
112+ expect ( track . clips . length ) . toBe ( 2 ) ;
113+ expect ( track . clips . at ( 0 ) ?. id ) . not . toBe ( clip . id ) ;
114+ expect ( track . clips . at ( 0 ) ?. range [ 0 ] . millis ) . toBe ( 10000 ) ;
115+ expect ( track . clips . at ( 0 ) ?. range [ 1 ] . millis ) . toBe ( 11000 ) ;
116+ expect ( track . clips . at ( 1 ) ?. range [ 0 ] . millis ) . toBe ( 15000 ) ;
117+ expect ( track . clips . at ( 1 ) ?. range [ 1 ] . millis ) . toBe ( 19000 ) ;
118+ expect ( track . clips . at ( 0 ) ?. state ) . toBe ( 'ATTACHED' ) ;
119+ expect ( track . clips . at ( 1 ) ?. state ) . toBe ( 'ATTACHED' ) ;
120+ } ) ;
121+
93122 it ( 'should propagate a seek call' , async ( ) => {
94123 const clip = new MediaClip ( ) ;
95124 clip . element = new Audio ( ) ;
0 commit comments