import 'package:test/test.dart'; import 'package:xterm/xterm.dart'; void main() { group('Buffer.getText()', () { test('should return the text', () { final terminal = Terminal(); terminal.write('Hello World'); expect(terminal.buffer.getText(), startsWith('Hello World')); }); test('can handle line wrap', () { final terminal = Terminal(); terminal.resize(10, 10); final line1 = 'This is a long line that should wrap'; final line2 = 'This is a short line'; final line3 = 'This is a long long long long line that should wrap'; final line4 = 'Short'; terminal.write('$line1\r\n'); terminal.write('$line2\r\n'); terminal.write('$line3\r\n'); terminal.write('$line4\r\n'); final lines = terminal.buffer.getText().split('\n'); expect(lines[0], line1); expect(lines[1], line2); expect(lines[2], line3); expect(lines[3], line4); }); test('can handle negative start', () { final terminal = Terminal(); terminal.write('Hello World'); expect( terminal.buffer.getText( BufferRangeLine(CellOffset(-100, -100), CellOffset(100, 100)), ), startsWith('Hello World'), ); }); test('can handle invalid end', () { final terminal = Terminal(); terminal.write('Hello World'); expect( terminal.buffer.getText( BufferRangeLine(CellOffset(0, 0), CellOffset(100, 100)), ), startsWith('Hello World'), ); }); test('can handle reversed range', () { final terminal = Terminal(); terminal.write('Hello World'); expect( terminal.buffer.getText( BufferRangeLine(CellOffset(5, 5), CellOffset(0, 0)), ), startsWith('Hello World'), ); }); test('can handle block range', () { final terminal = Terminal(); terminal.write('Hello World\r\n'); terminal.write('Nice to meet you\r\n'); expect( terminal.buffer.getText( BufferRangeBlock(CellOffset(2, 0), CellOffset(5, 1)), ), startsWith('llo\nce '), ); }); }); group('Buffer.resize()', () { test('should resize the buffer', () { final terminal = Terminal(); terminal.resize(10, 10); expect(terminal.viewWidth, 10); expect(terminal.viewHeight, 10); for (var i = 0; i < terminal.lines.length; i++) { final line = terminal.lines[i]; expect(line.length, 10); } terminal.resize(20, 20); expect(terminal.viewWidth, 20); expect(terminal.viewHeight, 20); for (var i = 0; i < terminal.lines.length; i++) { final line = terminal.lines[i]; expect(line.length, 20); } }); }); }