34 lines
970 B
JavaScript
34 lines
970 B
JavaScript
import { getTestRunner } from './mod.ts';
|
|
import Ansi, { KeyCommand, readKey } from './ansi.ts';
|
|
|
|
getTestRunner().then((t) => {
|
|
t.test('Ansi.moveCursor', () => {
|
|
t.assertEquals(Ansi.moveCursor(1, 2), '\x1b[2;3H');
|
|
});
|
|
|
|
t.test('Ansi.moveCursorForward', () => {
|
|
t.assertEquals(Ansi.moveCursorForward(2), '\x1b[2C');
|
|
});
|
|
|
|
t.test('Ansi.moveCursorDown', () => {
|
|
t.assertEquals(Ansi.moveCursorDown(7), '\x1b[7B');
|
|
});
|
|
|
|
t.test('readKey', () => {
|
|
// Ignore unhandled escape sequences
|
|
t.assertEquals(readKey('\x1b[]'), '\x1b[]');
|
|
|
|
// Pass explicitly mapped values right through
|
|
t.assertEquals(readKey(KeyCommand.ArrowUp), KeyCommand.ArrowUp);
|
|
t.assertEquals(readKey(KeyCommand.Home), KeyCommand.Home);
|
|
|
|
['\x1bOH', '\x1b[7~', '\x1b[1~', '\x1b[H'].forEach((code) => {
|
|
t.assertEquals(readKey(code), KeyCommand.Home);
|
|
});
|
|
|
|
['\x1bOF', '\x1b[8~', '\x1b[4~', '\x1b[F'].forEach((code) => {
|
|
t.assertEquals(readKey(code), KeyCommand.End);
|
|
});
|
|
});
|
|
});
|