import 'package:test/test.dart'; import 'package:xterm/core.dart'; void main() { group('Terminal.inputHandler', () { test('can be set to null', () { final terminal = Terminal(inputHandler: null); expect(() => terminal.keyInput(TerminalKey.keyA), returnsNormally); }); test('can be changed', () { final handler1 = _TestInputHandler(); final handler2 = _TestInputHandler(); final terminal = Terminal(inputHandler: handler1); terminal.keyInput(TerminalKey.keyA); expect(handler1.events, isNotEmpty); terminal.inputHandler = handler2; terminal.keyInput(TerminalKey.keyA); expect(handler2.events, isNotEmpty); }); }); group('Terminal.mouseInput', () { test('can handle mouse events', () { final output = []; final terminal = Terminal(onOutput: output.add); terminal.mouseInput( TerminalMouseButton.left, TerminalMouseButtonState.down, CellOffset(10, 10), ); expect(output, isEmpty); // enable mouse reporting terminal.write('\x1b[?1000h'); terminal.mouseInput( TerminalMouseButton.left, TerminalMouseButtonState.down, CellOffset(10, 10), ); expect(output, ['\x1B[M +,']); }); }); } class _TestInputHandler implements TerminalInputHandler { final events = []; @override String? call(TerminalInputEvent event) { events.add(event); return null; } }