buffer_test.dart 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. import 'package:test/test.dart';
  2. import 'package:xterm/xterm.dart';
  3. void main() {
  4. group('Buffer.getText()', () {
  5. test('should return the text', () {
  6. final terminal = Terminal();
  7. terminal.write('Hello World');
  8. expect(terminal.buffer.getText(), startsWith('Hello World'));
  9. });
  10. test('can handle line wrap', () {
  11. final terminal = Terminal();
  12. terminal.resize(10, 10);
  13. final line1 = 'This is a long line that should wrap';
  14. final line2 = 'This is a short line';
  15. final line3 = 'This is a long long long long line that should wrap';
  16. final line4 = 'Short';
  17. terminal.write('$line1\r\n');
  18. terminal.write('$line2\r\n');
  19. terminal.write('$line3\r\n');
  20. terminal.write('$line4\r\n');
  21. final lines = terminal.buffer.getText().split('\n');
  22. expect(lines[0], line1);
  23. expect(lines[1], line2);
  24. expect(lines[2], line3);
  25. expect(lines[3], line4);
  26. });
  27. test('can handle negative start', () {
  28. final terminal = Terminal();
  29. terminal.write('Hello World');
  30. expect(
  31. terminal.buffer.getText(
  32. BufferRangeLine(CellOffset(-100, -100), CellOffset(100, 100)),
  33. ),
  34. startsWith('Hello World'),
  35. );
  36. });
  37. test('can handle invalid end', () {
  38. final terminal = Terminal();
  39. terminal.write('Hello World');
  40. expect(
  41. terminal.buffer.getText(
  42. BufferRangeLine(CellOffset(0, 0), CellOffset(100, 100)),
  43. ),
  44. startsWith('Hello World'),
  45. );
  46. });
  47. test('can handle reversed range', () {
  48. final terminal = Terminal();
  49. terminal.write('Hello World');
  50. expect(
  51. terminal.buffer.getText(
  52. BufferRangeLine(CellOffset(5, 5), CellOffset(0, 0)),
  53. ),
  54. startsWith('Hello World'),
  55. );
  56. });
  57. test('can handle block range', () {
  58. final terminal = Terminal();
  59. terminal.write('Hello World\r\n');
  60. terminal.write('Nice to meet you\r\n');
  61. expect(
  62. terminal.buffer.getText(
  63. BufferRangeBlock(CellOffset(2, 0), CellOffset(5, 1)),
  64. ),
  65. startsWith('llo\nce '),
  66. );
  67. });
  68. });
  69. group('Buffer.resize()', () {
  70. test('should resize the buffer', () {
  71. final terminal = Terminal();
  72. terminal.resize(10, 10);
  73. expect(terminal.viewWidth, 10);
  74. expect(terminal.viewHeight, 10);
  75. for (var i = 0; i < terminal.lines.length; i++) {
  76. final line = terminal.lines[i];
  77. expect(line.length, 10);
  78. }
  79. terminal.resize(20, 20);
  80. expect(terminal.viewWidth, 20);
  81. expect(terminal.viewHeight, 20);
  82. for (var i = 0; i < terminal.lines.length; i++) {
  83. final line = terminal.lines[i];
  84. expect(line.length, 20);
  85. }
  86. });
  87. });
  88. }