@@ -61,6 +61,25 @@ describe('streaming-channel sink', () => {
6161 expect ( sink . buffer . length ) . toBe ( 0 )
6262 } )
6363
64+ it . each ( [
65+ { replayWindow : 1 , retained : [ 5 ] } ,
66+ { replayWindow : 3 , retained : [ 3 , 4 , 5 ] } ,
67+ { replayWindow : 0.5 , retained : [ 5 ] } ,
68+ { replayWindow : 2.5 , retained : [ 3 , 4 , 5 ] } ,
69+ { replayWindow : Number . POSITIVE_INFINITY , retained : [ 1 , 2 , 3 , 4 , 5 ] } ,
70+ { replayWindow : Number . NaN , retained : [ ] } ,
71+ ] ) ( 'preserves replay entries and buffer identity with window $replayWindow' , ( { replayWindow, retained } ) => {
72+ const sink = createStreamSink < number > ( { replayWindow } )
73+ const buffer = sink . buffer
74+ for ( let chunk = 1 ; chunk <= 5 ; chunk ++ )
75+ sink . write ( chunk )
76+
77+ expect ( sink . buffer ) . toBe ( buffer )
78+ expect ( buffer ) . toEqual ( retained . map ( chunk => ( { seq : chunk , chunk } ) ) )
79+ expect ( sink . lastSeq ) . toBe ( 5 )
80+ sink . close ( )
81+ } )
82+
6483 it ( 'aborts signal on close so handlers can short-circuit' , ( ) => {
6584 const sink = createStreamSink < string > ( )
6685 expect ( sink . signal . aborted ) . toBe ( false )
0 commit comments