Skip to content

Commit 554ad47

Browse files
Masashi Hiranotargos
authored andcommitted
test: improve coverage for readline.Interface
Add tests in parallel/test-readline-interface to increase coverage PR-URL: #20704 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
1 parent b0023d7 commit 554ad47

1 file changed

Lines changed: 171 additions & 0 deletions

File tree

‎test/parallel/test-readline-interface.js‎

Lines changed: 171 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -613,6 +613,43 @@ function isWarned(emitter) {
613613
rli.close();
614614
}
615615

616+
{
617+
// Back and Forward one character
618+
constfi=newFakeInput();
619+
constrli=newreadline.Interface({
620+
input: fi,
621+
output: fi,
622+
prompt: '',
623+
terminal: terminal
624+
});
625+
fi.emit('data','the quick brown fox');
626+
letcursorPos=rli._getCursorPos();
627+
assert.strictEqual(cursorPos.rows,0);
628+
assert.strictEqual(cursorPos.cols,19);
629+
630+
// Back one character
631+
fi.emit('keypress','.',{ctrl: true,name: 'b'});
632+
cursorPos=rli._getCursorPos();
633+
assert.strictEqual(cursorPos.rows,0);
634+
assert.strictEqual(cursorPos.cols,18);
635+
// Back one character
636+
fi.emit('keypress','.',{ctrl: true,name: 'b'});
637+
cursorPos=rli._getCursorPos();
638+
assert.strictEqual(cursorPos.rows,0);
639+
assert.strictEqual(cursorPos.cols,17);
640+
// Forward one character
641+
fi.emit('keypress','.',{ctrl: true,name: 'f'});
642+
cursorPos=rli._getCursorPos();
643+
assert.strictEqual(cursorPos.rows,0);
644+
assert.strictEqual(cursorPos.cols,18);
645+
// Forward one character
646+
fi.emit('keypress','.',{ctrl: true,name: 'f'});
647+
cursorPos=rli._getCursorPos();
648+
assert.strictEqual(cursorPos.rows,0);
649+
assert.strictEqual(cursorPos.cols,19);
650+
rli.close();
651+
}
652+
616653
{
617654
// `wordLeft` and `wordRight`
618655
constfi=newFakeInput();
@@ -728,6 +765,117 @@ function isWarned(emitter) {
728765
});
729766
}
730767

768+
// deleteLeft
769+
{
770+
constfi=newFakeInput();
771+
constrli=newreadline.Interface({
772+
input: fi,
773+
output: fi,
774+
prompt: '',
775+
terminal: terminal
776+
});
777+
fi.emit('data','the quick brown fox');
778+
letcursorPos=rli._getCursorPos();
779+
assert.strictEqual(cursorPos.rows,0);
780+
assert.strictEqual(cursorPos.cols,19);
781+
782+
// Delete left character
783+
fi.emit('keypress','.',{ctrl: true,name: 'h'});
784+
cursorPos=rli._getCursorPos();
785+
assert.strictEqual(cursorPos.rows,0);
786+
assert.strictEqual(cursorPos.cols,18);
787+
rli.on('line',common.mustCall((line)=>{
788+
assert.strictEqual(line,'the quick brown fo');
789+
}));
790+
fi.emit('data','\n');
791+
rli.close();
792+
}
793+
794+
// deleteRight
795+
{
796+
constfi=newFakeInput();
797+
constrli=newreadline.Interface({
798+
input: fi,
799+
output: fi,
800+
prompt: '',
801+
terminal: terminal
802+
});
803+
fi.emit('data','the quick brown fox');
804+
805+
// Go to the start of the line
806+
fi.emit('keypress','.',{ctrl: true,name: 'a'});
807+
letcursorPos=rli._getCursorPos();
808+
assert.strictEqual(cursorPos.rows,0);
809+
assert.strictEqual(cursorPos.cols,0);
810+
811+
// Delete right character
812+
fi.emit('keypress','.',{ctrl: true,name: 'd'});
813+
cursorPos=rli._getCursorPos();
814+
assert.strictEqual(cursorPos.rows,0);
815+
assert.strictEqual(cursorPos.cols,0);
816+
rli.on('line',common.mustCall((line)=>{
817+
assert.strictEqual(line,'he quick brown fox');
818+
}));
819+
fi.emit('data','\n');
820+
rli.close();
821+
}
822+
823+
824+
// deleteLineLeft
825+
{
826+
constfi=newFakeInput();
827+
constrli=newreadline.Interface({
828+
input: fi,
829+
output: fi,
830+
prompt: '',
831+
terminal: terminal
832+
});
833+
fi.emit('data','the quick brown fox');
834+
letcursorPos=rli._getCursorPos();
835+
assert.strictEqual(cursorPos.rows,0);
836+
assert.strictEqual(cursorPos.cols,19);
837+
838+
// Delete from current to start of line
839+
fi.emit('keypress','.',{ctrl: true,shift: true,name: 'backspace'});
840+
cursorPos=rli._getCursorPos();
841+
assert.strictEqual(cursorPos.rows,0);
842+
assert.strictEqual(cursorPos.cols,0);
843+
rli.on('line',common.mustCall((line)=>{
844+
assert.strictEqual(line,'');
845+
}));
846+
fi.emit('data','\n');
847+
rli.close();
848+
}
849+
850+
// deleteLineRight
851+
{
852+
constfi=newFakeInput();
853+
constrli=newreadline.Interface({
854+
input: fi,
855+
output: fi,
856+
prompt: '',
857+
terminal: terminal
858+
});
859+
fi.emit('data','the quick brown fox');
860+
861+
// Go to the start of the line
862+
fi.emit('keypress','.',{ctrl: true,name: 'a'});
863+
letcursorPos=rli._getCursorPos();
864+
assert.strictEqual(cursorPos.rows,0);
865+
assert.strictEqual(cursorPos.cols,0);
866+
867+
// Delete from current to end of line
868+
fi.emit('keypress','.',{ctrl: true,shift: true,name: 'delete'});
869+
cursorPos=rli._getCursorPos();
870+
assert.strictEqual(cursorPos.rows,0);
871+
assert.strictEqual(cursorPos.cols,0);
872+
rli.on('line',common.mustCall((line)=>{
873+
assert.strictEqual(line,'');
874+
}));
875+
fi.emit('data','\n');
876+
rli.close();
877+
}
878+
731879
// multi-line cursor position
732880
{
733881
constfi=newFakeInput();
@@ -742,6 +890,29 @@ function isWarned(emitter) {
742890
constcursorPos=rli._getCursorPos();
743891
assert.strictEqual(cursorPos.rows,1);
744892
assert.strictEqual(cursorPos.cols,5);
893+
rli.close();
894+
}
895+
896+
// Clear the whole screen
897+
{
898+
constfi=newFakeInput();
899+
constrli=newreadline.Interface({
900+
input: fi,
901+
output: fi,
902+
prompt: '',
903+
terminal: terminal
904+
});
905+
constlines=['line 1','line 2','line 3'];
906+
fi.emit('data',lines.join('\n'));
907+
fi.emit('keypress','.',{ctrl: true,name: 'l'});
908+
constcursorPos=rli._getCursorPos();
909+
assert.strictEqual(cursorPos.rows,0);
910+
assert.strictEqual(cursorPos.cols,6);
911+
rli.on('line',common.mustCall((line)=>{
912+
assert.strictEqual(line,'line 3');
913+
}));
914+
fi.emit('data','\n');
915+
rli.close();
745916
}
746917
}
747918

0 commit comments

Comments
 (0)