@@ -189,4 +189,30 @@ describe("Brotli-wasm", () => {
189
189
190
190
expect ( decOutput . toString ( 'utf8' ) ) . to . equal ( s ) ;
191
191
} ) ;
192
+
193
+ it ( "streaming compressing can handle needing more output" , ( ) => {
194
+ // Suppressed currently since it requires a large file as input
195
+ return ;
196
+ // const input = fs.readFileSync('test/encLongInput.bin');
197
+ const input = Buffer . from ( "test" ) ;
198
+ const stream = new brotli . CompressStream ( ) ;
199
+ const output1 = stream . compress ( input , 1 ) ;
200
+ expect ( stream . result ( ) ) . to . equal ( brotli . BrotliStreamResult . NeedsMoreOutput ) ;
201
+ const output2 = stream . compress ( input . slice ( stream . last_input_offset ( ) ) , 1640000 ) ;
202
+ expect ( stream . result ( ) ) . to . equal ( brotli . BrotliStreamResult . NeedsMoreInput ) ;
203
+ const output3 = stream . compress ( undefined , 1640000 ) ;
204
+ expect ( stream . result ( ) ) . to . equal ( brotli . BrotliStreamResult . ResultSuccess ) ;
205
+ const output = Buffer . concat ( [ output1 , output2 , output3 ] ) ;
206
+ expect ( Buffer . from ( brotli . decompress ( output ) ) . toString ( 'base64' ) ) . to . equal ( input . toString ( 'base64' ) ) ;
207
+ } ) ;
208
+
209
+ it ( "streaming decompressing can handle needing more output" , ( ) => {
210
+ const input = Buffer . from ( 'GxoAABypU587dC0k9ianQOgqjS32iUTcCA==' , 'base64' ) ;
211
+ const stream = new brotli . DecompressStream ( ) ;
212
+ const output1 = stream . decompress ( input , 1 ) ;
213
+ expect ( stream . result ( ) ) . to . equal ( brotli . BrotliStreamResult . NeedsMoreOutput ) ;
214
+ const output2 = stream . decompress ( input . slice ( stream . last_input_offset ( ) ) , 100 ) ;
215
+ expect ( stream . result ( ) ) . to . equal ( brotli . BrotliStreamResult . ResultSuccess ) ;
216
+ expect ( Buffer . concat ( [ output1 , output2 ] ) . toString ( 'utf8' ) ) . to . equal ( 'Brotli brotli brotli brotli' ) ;
217
+ } ) ;
192
218
} ) ;
0 commit comments