line_test.dart 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. import 'package:test/test.dart';
  2. import 'package:xterm/xterm.dart';
  3. void main() {
  4. group('BufferLine.getText()', () {
  5. test('should return the text', () {
  6. final terminal = Terminal();
  7. terminal.write('Hello World');
  8. expect(terminal.buffer.lines[0].getText(), 'Hello World');
  9. });
  10. test('getText() should support wide characters', () {
  11. final text = '😀😁😂🤣😃';
  12. final terminal = Terminal();
  13. terminal.write(text);
  14. expect(terminal.buffer.lines[0].getText(), equals(text));
  15. });
  16. test('can specify a range', () {
  17. final terminal = Terminal();
  18. terminal.write('Hello World');
  19. expect(terminal.buffer.lines[0].getText(0, 5), 'Hello');
  20. });
  21. test('can handle invalid ranges', () {
  22. final terminal = Terminal();
  23. terminal.write('Hello World');
  24. expect(terminal.buffer.lines[0].getText(0, 100), 'Hello World');
  25. });
  26. test('can handle negative ranges', () {
  27. final terminal = Terminal();
  28. terminal.write('Hello World');
  29. expect(terminal.buffer.lines[0].getText(-100, 100), 'Hello World');
  30. });
  31. test('can handle reversed ranges', () {
  32. final terminal = Terminal();
  33. terminal.write('Hello World');
  34. expect(terminal.buffer.lines[0].getText(5, 0), '');
  35. });
  36. });
  37. group('BufferLine.getTrimmedLength()', () {
  38. test('can get trimmed length', () {
  39. final line = BufferLine(10);
  40. final text = 'ABCDEF';
  41. for (var i = 0; i < text.length; i++) {
  42. line.setCodePoint(i, text.codeUnitAt(i));
  43. }
  44. expect(line.getTrimmedLength(), equals(text.length));
  45. });
  46. test('can get trimmed length with wide characters', () {
  47. final terminal = Terminal();
  48. final text = '😀😁😂🤣😃';
  49. terminal.write(text);
  50. expect(terminal.buffer.lines[0].getTrimmedLength(), equals(text.length));
  51. });
  52. test('can handle length larger than the line', () {
  53. final line = BufferLine(10);
  54. final text = 'ABCDEF';
  55. for (var i = 0; i < text.length; i++) {
  56. line.setCodePoint(i, text.codeUnitAt(i));
  57. }
  58. expect(line.getTrimmedLength(1000), equals(text.length));
  59. });
  60. test('can handle negative start', () {
  61. final line = BufferLine(10);
  62. final text = 'ABCDEF';
  63. for (var i = 0; i < text.length; i++) {
  64. line.setCodePoint(i, text.codeUnitAt(i));
  65. }
  66. expect(line.getTrimmedLength(-1000), equals(0));
  67. });
  68. });
  69. group('BufferLine.resize', () {
  70. test('can resize', () {
  71. final line = BufferLine(10);
  72. final text = 'ABCDEF';
  73. for (var i = 0; i < text.length; i++) {
  74. line.setCodePoint(i, text.codeUnitAt(i));
  75. }
  76. line.resize(20);
  77. expect(line.length, equals(20));
  78. });
  79. });
  80. group('Buffer.createAnchor', () {
  81. test('works', () {
  82. final terminal = Terminal();
  83. final line = terminal.buffer.lines[3];
  84. final anchor = line.createAnchor(5);
  85. terminal.insertLines(5);
  86. expect(anchor.x, 5);
  87. expect(anchor.y, 8);
  88. terminal.buffer.clear();
  89. expect(line.attached, false);
  90. expect(anchor.attached, false);
  91. });
  92. });
  93. }