Increase test coverage
This commit is contained in:
parent
3d98eefc65
commit
a7f5fed9a3
@ -5,6 +5,7 @@ import Editor from './editor.ts';
|
|||||||
import Row from './row.ts';
|
import Row from './row.ts';
|
||||||
import { getTestRunner } from './runtime.ts';
|
import { getTestRunner } from './runtime.ts';
|
||||||
import { defaultTerminalSize } from './termios.ts';
|
import { defaultTerminalSize } from './termios.ts';
|
||||||
|
import { Position } from './types.ts';
|
||||||
import * as Util from './utils.ts';
|
import * as Util from './utils.ts';
|
||||||
|
|
||||||
const {
|
const {
|
||||||
@ -39,6 +40,16 @@ testSuite({
|
|||||||
assertEquals(readKey(KeyCommand.Home), KeyCommand.Home);
|
assertEquals(readKey(KeyCommand.Home), KeyCommand.Home);
|
||||||
assertEquals(readKey(KeyCommand.Delete), KeyCommand.Delete);
|
assertEquals(readKey(KeyCommand.Delete), KeyCommand.Delete);
|
||||||
},
|
},
|
||||||
|
'readKey Esc': () => {
|
||||||
|
['\x1b', Util.ctrlKey('l')].forEach((code) => {
|
||||||
|
assertEquals(readKey(code), KeyCommand.Escape);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
'readKey Backspace': () => {
|
||||||
|
[Util.ctrlKey('h'), String.fromCodePoint(127)].forEach((code) => {
|
||||||
|
assertEquals(readKey(code), KeyCommand.Backspace);
|
||||||
|
});
|
||||||
|
},
|
||||||
'readKey Home': () => {
|
'readKey Home': () => {
|
||||||
['\x1b[1~', '\x1b[7~', '\x1b[H', '\x1bOH'].forEach((code) => {
|
['\x1b[1~', '\x1b[7~', '\x1b[H', '\x1bOH'].forEach((code) => {
|
||||||
assertEquals(readKey(code), KeyCommand.Home);
|
assertEquals(readKey(code), KeyCommand.Home);
|
||||||
@ -103,6 +114,29 @@ testSuite({
|
|||||||
assertFalse(doc.isEmpty());
|
assertFalse(doc.isEmpty());
|
||||||
assertInstanceOf(doc.row(0), Row);
|
assertInstanceOf(doc.row(0), Row);
|
||||||
},
|
},
|
||||||
|
'Document.insert': () => {
|
||||||
|
const doc = Document.empty();
|
||||||
|
assertFalse(doc.dirty);
|
||||||
|
doc.insert(Position.at(0, 0), 'foobar');
|
||||||
|
assertEquals(doc.numRows, 1);
|
||||||
|
assertTrue(doc.dirty);
|
||||||
|
|
||||||
|
doc.insert(Position.at(2, 0), 'baz');
|
||||||
|
assertEquals(doc.numRows, 1);
|
||||||
|
assertTrue(doc.dirty);
|
||||||
|
|
||||||
|
doc.insert(Position.at(9, 0), 'buzz');
|
||||||
|
assertEquals(doc.numRows, 1);
|
||||||
|
assertTrue(doc.dirty);
|
||||||
|
const row0 = doc.row(0);
|
||||||
|
assertEquals(row0?.toString(), 'foobazbarbuzz');
|
||||||
|
assertEquals(row0?.rstring(), 'foobazbarbuzz');
|
||||||
|
assertEquals(row0?.rsize, 13);
|
||||||
|
|
||||||
|
doc.insert(Position.at(0, 1), 'Lorem Ipsum');
|
||||||
|
assertEquals(doc.numRows, 2);
|
||||||
|
assertTrue(doc.dirty);
|
||||||
|
},
|
||||||
},
|
},
|
||||||
Editor: {
|
Editor: {
|
||||||
'new Editor': () => {
|
'new Editor': () => {
|
||||||
@ -110,19 +144,43 @@ testSuite({
|
|||||||
assertInstanceOf(e, Editor);
|
assertInstanceOf(e, Editor);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
Position: {
|
||||||
|
'default': () => {
|
||||||
|
const p = Position.default();
|
||||||
|
assertEquals(p.x, 0);
|
||||||
|
assertEquals(p.y, 0);
|
||||||
|
},
|
||||||
|
'at': () => {
|
||||||
|
const p = Position.at(5, 7);
|
||||||
|
assertEquals(p.x, 5);
|
||||||
|
assertEquals(p.y, 7);
|
||||||
|
},
|
||||||
|
},
|
||||||
Row: {
|
Row: {
|
||||||
'new Row': () => {
|
'new Row': () => {
|
||||||
const row = new Row();
|
const row = new Row();
|
||||||
assertEquals(row.toString(), '');
|
assertEquals(row.toString(), '');
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'Util::Misc fns': {
|
'Util misc fns': {
|
||||||
'noop fn': () => {
|
'noop fn': () => {
|
||||||
assertExists(Util.noop);
|
assertExists(Util.noop);
|
||||||
assertEquals(Util.noop(), undefined);
|
assertEquals(Util.noop(), undefined);
|
||||||
},
|
},
|
||||||
|
'posSub()': () => {
|
||||||
|
assertEquals(Util.posSub(14, 15), 0);
|
||||||
|
assertEquals(Util.posSub(15, 1), 14);
|
||||||
|
},
|
||||||
|
'minSub()': () => {
|
||||||
|
assertEquals(Util.minSub(13, 25, -1), -1);
|
||||||
|
assertEquals(Util.minSub(25, 13, 0), 12);
|
||||||
|
},
|
||||||
|
'maxAdd()': () => {
|
||||||
|
assertEquals(Util.maxAdd(99, 99, 75), 75);
|
||||||
|
assertEquals(Util.maxAdd(25, 74, 101), 99);
|
||||||
|
},
|
||||||
},
|
},
|
||||||
'Util::String fns': {
|
'Util string fns': {
|
||||||
'ord()': () => {
|
'ord()': () => {
|
||||||
// Invalid output
|
// Invalid output
|
||||||
assertEquals(Util.ord(''), 256);
|
assertEquals(Util.ord(''), 256);
|
||||||
|
@ -75,7 +75,7 @@ export function readKey(parsed: string): string {
|
|||||||
case '\x1b':
|
case '\x1b':
|
||||||
return KeyCommand.Escape;
|
return KeyCommand.Escape;
|
||||||
|
|
||||||
case ctrlKey('H'):
|
case ctrlKey('h'):
|
||||||
case String.fromCodePoint(127):
|
case String.fromCodePoint(127):
|
||||||
return KeyCommand.Backspace;
|
return KeyCommand.Backspace;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user