reflow_test.dart 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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. print('-----------');
  52. terminal.resize(11, 10);
  53. expect(terminal.buffer.lines[0].toString(), '床前明月光');
  54. expect(terminal.buffer.lines[1].toString(), '疑是地上霜');
  55. terminal.resize(13, 10);
  56. expect(terminal.buffer.lines[0].toString(), '床前明月光疑');
  57. expect(terminal.buffer.lines[1].toString(), '是地上霜');
  58. });
  59. }