scroll/src/common/ansi_test.ts

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);
});
});
});