reflow_test.dart 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import 'package:test/test.dart';
  2. import 'package:xterm/src/terminal.dart';
  3. void main() {
  4. test('reflow() can reflow a single line', () {
  5. final terminal = Terminal();
  6. terminal.write('1234567890abcdefg');
  7. terminal.resize(10, 10);
  8. expect(terminal.buffer.lines[0].toString(), '1234567890');
  9. expect(terminal.buffer.lines[1].toString(), 'abcdefg');
  10. expect(terminal.buffer.lines[0].isWrapped, isFalse);
  11. expect(terminal.buffer.lines[1].isWrapped, isTrue);
  12. terminal.resize(13, 10);
  13. expect(terminal.buffer.lines[0].toString(), '1234567890abc');
  14. expect(terminal.buffer.lines[1].toString(), 'defg');
  15. expect(terminal.buffer.lines[0].isWrapped, isFalse);
  16. expect(terminal.buffer.lines[1].isWrapped, isTrue);
  17. terminal.resize(20, 10);
  18. expect(terminal.buffer.lines[0].toString(), '1234567890abcdefg');
  19. expect(terminal.buffer.lines[0].isWrapped, isFalse);
  20. });
  21. test('reflow() can reflow a single line to multiple lines', () {
  22. final terminal = Terminal();
  23. terminal.write('1234567890abcdefg');
  24. terminal.resize(5, 10);
  25. expect(terminal.buffer.lines[0].toString(), '12345');
  26. expect(terminal.buffer.lines[1].toString(), '67890');
  27. expect(terminal.buffer.lines[2].toString(), 'abcde');
  28. expect(terminal.buffer.lines[3].toString(), 'fg');
  29. expect(terminal.buffer.lines[0].isWrapped, isFalse);
  30. expect(terminal.buffer.lines[1].isWrapped, isTrue);
  31. expect(terminal.buffer.lines[2].isWrapped, isTrue);
  32. expect(terminal.buffer.lines[3].isWrapped, isTrue);
  33. terminal.resize(6, 10);
  34. expect(terminal.buffer.lines[0].toString(), '123456');
  35. expect(terminal.buffer.lines[1].toString(), '7890ab');
  36. expect(terminal.buffer.lines[2].toString(), 'cdefg');
  37. expect(terminal.buffer.lines[0].isWrapped, isFalse);
  38. expect(terminal.buffer.lines[1].isWrapped, isTrue);
  39. expect(terminal.buffer.lines[2].isWrapped, isTrue);
  40. });
  41. test('reflow() can reflow wide characters', () {
  42. final terminal = Terminal();
  43. terminal.write('床前明月光疑是地上霜');
  44. terminal.resize(10, 10);
  45. expect(terminal.buffer.lines[0].toString(), '床前明月光');
  46. expect(terminal.buffer.lines[1].toString(), '疑是地上霜');
  47. terminal.resize(9, 10);
  48. expect(terminal.buffer.lines[0].toString(), '床前明月');
  49. expect(terminal.buffer.lines[1].toString(), '光疑是地');
  50. expect(terminal.buffer.lines[2].toString(), '上霜');
  51. terminal.resize(11, 10);
  52. expect(terminal.buffer.lines[0].toString(), '床前明月光');
  53. expect(terminal.buffer.lines[1].toString(), '疑是地上霜');
  54. terminal.resize(13, 10);
  55. expect(terminal.buffer.lines[0].toString(), '床前明月光疑');
  56. expect(terminal.buffer.lines[1].toString(), '是地上霜');
  57. });
  58. }