@teaui/core
Version:
A high-level terminal UI library for Node
52 lines • 1.28 kB
JavaScript
import { TestTerminal } from './TestTerminal.js';
/**
* A headless Program for testing. Wraps a TestTerminal for output assertions,
* and allows pushing events programmatically via sendEvent().
*/
export class TestProgram {
#terminal;
#eventListener;
constructor({ cols, rows }) {
this.#terminal = new TestTerminal({ cols, rows });
}
get terminal() {
return this.#terminal;
}
// --- SGRTerminal interface ---
get cols() {
return this.#terminal.cols;
}
get rows() {
return this.#terminal.rows;
}
move(x, y) {
this.#terminal.move(x, y);
}
write(str) {
this.#terminal.write(str);
}
flush() {
this.#terminal.flush();
}
// --- Program lifecycle ---
setup() { }
teardown() { }
// --- Events ---
onEvents(listener) {
this.#eventListener = listener;
return () => {
this.#eventListener = undefined;
};
}
onResize(_listener) {
// No resize in tests — return no-op unsubscribe
return () => { };
}
/**
* Push a system event into the Screen's event pipeline.
*/
sendEvent(event) {
this.#eventListener?.(event);
}
}
//# sourceMappingURL=TestProgram.js.map