@@ -7,7 +7,6 @@ import { DcsParser, DcsHandler } from 'common/parser/DcsParser';
77import { IDcsHandler , IParams , IFunctionIdentifier } from 'common/parser/Types' ;
88import { utf32ToString , StringToUtf32 } from 'common/input/TextDecoder' ;
99import { Params } from 'common/parser/Params' ;
10- import { PAYLOAD_LIMIT } from 'common/parser/Constants' ;
1110
1211function toUtf32 ( s : string ) : Uint32Array {
1312 const utf32 = new Uint32Array ( s . length ) ;
@@ -176,6 +175,21 @@ describe('DcsParser', () => {
176175 } ) ;
177176 } ) ;
178177 describe ( 'DcsHandlerFactory' , ( ) => {
178+ const TEST_PAYLOAD_LIMIT = 100 ;
179+ const CHUNK_SIZE = 10 ;
180+ let originalPayloadLimit : number ;
181+
182+ beforeEach ( ( ) => {
183+ const handlerConstructor = DcsHandler as unknown as { _payloadLimit : number } ;
184+ originalPayloadLimit = handlerConstructor . _payloadLimit ;
185+ handlerConstructor . _payloadLimit = TEST_PAYLOAD_LIMIT ;
186+ } ) ;
187+
188+ afterEach ( ( ) => {
189+ const handlerConstructor = DcsHandler as unknown as { _payloadLimit : number } ;
190+ handlerConstructor . _payloadLimit = originalPayloadLimit ;
191+ } ) ;
192+
179193 it ( 'should be called once on end(true)' , ( ) => {
180194 parser . registerHandler ( identifier ( { intermediates : '+' , final : 'p' } ) , new DcsHandler ( ( data , params ) => { reports . push ( [ params . toArray ( ) , data ] ) ; return true ; } ) ) ;
181195 parser . hook ( identifier ( { intermediates : '+' , final : 'p' } ) , Params . fromArray ( [ 1 , 2 , 3 ] ) ) ;
@@ -230,19 +244,19 @@ describe('DcsParser', () => {
230244 this . timeout ( 30000 ) ;
231245 parser . registerHandler ( identifier ( { intermediates : '+' , final : 'p' } ) , new DcsHandler ( ( data , params ) => { reports . push ( [ params . toArray ( ) , data ] ) ; return true ; } ) ) ;
232246 parser . hook ( identifier ( { intermediates : '+' , final : 'p' } ) , Params . fromArray ( [ 1 , 2 , 3 ] ) ) ;
233- const data = toUtf32 ( 'A' . repeat ( 1000 ) ) ;
234- for ( let i = 0 ; i < PAYLOAD_LIMIT ; i += 1000 ) {
247+ const data = toUtf32 ( 'A' . repeat ( CHUNK_SIZE ) ) ;
248+ for ( let i = 0 ; i < TEST_PAYLOAD_LIMIT ; i += CHUNK_SIZE ) {
235249 parser . put ( data , 0 , data . length ) ;
236250 }
237251 parser . unhook ( true ) ;
238- assert . deepEqual ( reports , [ [ [ 1 , 2 , 3 ] , 'A' . repeat ( PAYLOAD_LIMIT ) ] ] ) ;
252+ assert . deepEqual ( reports , [ [ [ 1 , 2 , 3 ] , 'A' . repeat ( TEST_PAYLOAD_LIMIT ) ] ] ) ;
239253 } ) ;
240254 it ( 'should abort for payload limit +1' , function ( ) : void {
241255 this . timeout ( 30000 ) ;
242256 parser . registerHandler ( identifier ( { intermediates : '+' , final : 'p' } ) , new DcsHandler ( ( data , params ) => { reports . push ( [ params . toArray ( ) , data ] ) ; return true ; } ) ) ;
243257 parser . hook ( identifier ( { intermediates : '+' , final : 'p' } ) , Params . fromArray ( [ 1 , 2 , 3 ] ) ) ;
244- let data = toUtf32 ( 'A' . repeat ( 1000 ) ) ;
245- for ( let i = 0 ; i < PAYLOAD_LIMIT ; i += 1000 ) {
258+ let data = toUtf32 ( 'A' . repeat ( CHUNK_SIZE ) ) ;
259+ for ( let i = 0 ; i < TEST_PAYLOAD_LIMIT ; i += CHUNK_SIZE ) {
246260 parser . put ( data , 0 , data . length ) ;
247261 }
248262 data = toUtf32 ( 'A' ) ;
0 commit comments