@@ -438,6 +438,37 @@ describe('InputHandler', () => {
438438 inputHandler . eraseInLine ( Params . fromArray ( [ 2 ] ) ) ;
439439 assert . equal ( bufferService . buffer . lines . get ( 2 ) ! . isWrapped , false ) ;
440440 } ) ;
441+ it ( 'ED2 with scrollOnEraseInDisplay turned on' , async ( ) => {
442+ const inputHandler = new TestInputHandler (
443+ bufferService ,
444+ new MockCharsetService ( ) ,
445+ new MockCoreService ( ) ,
446+ new MockLogService ( ) ,
447+ new MockOptionsService ( { scrollOnEraseInDisplay : true } ) ,
448+ new MockOscLinkService ( ) ,
449+ new MockCoreMouseService ( ) ,
450+ new MockUnicodeService ( )
451+ ) ;
452+ const aLine = Array ( bufferService . cols + 1 ) . join ( 'a' ) ;
453+ // add 2 full lines of text.
454+ await inputHandler . parseP ( aLine ) ;
455+ await inputHandler . parseP ( aLine ) ;
456+
457+ inputHandler . eraseInDisplay ( Params . fromArray ( [ 2 ] ) ) ;
458+ // those 2 lines should have been pushed to scrollback.
459+ assert . equal ( bufferService . rows + 2 , bufferService . buffer . lines . length ) ;
460+ assert . equal ( bufferService . buffer . ybase , 2 ) ;
461+ assert . equal ( bufferService . buffer . lines . get ( 0 ) ?. translateToString ( ) , aLine ) ;
462+ assert . equal ( bufferService . buffer . lines . get ( 1 ) ?. translateToString ( ) , aLine ) ;
463+
464+ // Move to last line and add more text.
465+ bufferService . buffer . y = bufferService . rows - 1 ;
466+ bufferService . buffer . x = 0 ;
467+ await inputHandler . parseP ( aLine ) ;
468+ inputHandler . eraseInDisplay ( Params . fromArray ( [ 2 ] ) ) ;
469+ // Screen should have been scrolled by a full screen size.
470+ assert . equal ( bufferService . rows * 2 + 2 , bufferService . buffer . lines . length ) ;
471+ } ) ;
441472 it ( 'eraseInDisplay' , async ( ) => {
442473 const bufferService = new MockBufferService ( 80 , 7 ) ;
443474 const inputHandler = new TestInputHandler (
0 commit comments