terminal_test.dart 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import 'package:test/test.dart';
  2. import 'package:xterm/core.dart';
  3. void main() {
  4. group('Terminal.inputHandler', () {
  5. test('can be set to null', () {
  6. final terminal = Terminal(inputHandler: null);
  7. expect(() => terminal.keyInput(TerminalKey.keyA), returnsNormally);
  8. });
  9. test('can be changed', () {
  10. final handler1 = _TestInputHandler();
  11. final handler2 = _TestInputHandler();
  12. final terminal = Terminal(inputHandler: handler1);
  13. terminal.keyInput(TerminalKey.keyA);
  14. expect(handler1.events, isNotEmpty);
  15. terminal.inputHandler = handler2;
  16. terminal.keyInput(TerminalKey.keyA);
  17. expect(handler2.events, isNotEmpty);
  18. });
  19. });
  20. group('Terminal.mouseInput', () {
  21. test('can handle mouse events', () {
  22. final output = <String>[];
  23. final terminal = Terminal(onOutput: output.add);
  24. terminal.mouseInput(
  25. TerminalMouseButton.left,
  26. TerminalMouseButtonState.down,
  27. CellOffset(10, 10),
  28. );
  29. expect(output, isEmpty);
  30. // enable mouse reporting
  31. terminal.write('\x1b[?1000h');
  32. terminal.mouseInput(
  33. TerminalMouseButton.left,
  34. TerminalMouseButtonState.down,
  35. CellOffset(10, 10),
  36. );
  37. expect(output, ['\x1B[M +,']);
  38. });
  39. });
  40. }
  41. class _TestInputHandler implements TerminalInputHandler {
  42. final events = <TerminalInputEvent>[];
  43. @override
  44. String? call(TerminalInputEvent event) {
  45. events.add(event);
  46. return null;
  47. }
  48. }