import 'package:flutter_test/flutter_test.dart'; import 'package:xterm/buffer/line/line.dart'; import 'package:xterm/terminal/cursor.dart'; void main() { group("BufferLine Tests", () { test("creation test", () { final line = BufferLine(); expect(line, isNotNull); }); test("set isWrapped", () { final line = BufferLine(isWrapped: false); expect(line.isWrapped, isFalse); line.isWrapped = true; expect(line.isWrapped, isTrue); line.isWrapped = false; expect(line.isWrapped, isFalse); }); test("ensure() works", () { final line = BufferLine(length: 10); expect(() => line.cellSetContent(1000, 65), throwsRangeError); line.ensure(1000); line.cellSetContent(1000, 65); }); test("insert() works", () { final line = BufferLine(length: 10); line.cellSetContent(0, 65); line.cellSetContent(1, 66); line.cellSetContent(2, 67); line.insert(1); final result = [ line.cellGetContent(0), line.cellGetContent(1), line.cellGetContent(2), line.cellGetContent(3), ]; expect(result, equals([65, 0, 66, 67])); }); test("insertN() works", () { final line = BufferLine(length: 10); line.cellSetContent(0, 65); line.cellSetContent(1, 66); line.cellSetContent(2, 67); line.insertN(1, 2); final result = [ line.cellGetContent(0), line.cellGetContent(1), line.cellGetContent(2), line.cellGetContent(3), line.cellGetContent(4), ]; expect(result, equals([65, 0, 0, 66, 67])); }); test("removeN() works", () { final line = BufferLine(length: 10); line.cellSetContent(0, 65); line.cellSetContent(1, 66); line.cellSetContent(2, 67); line.cellSetContent(3, 68); line.cellSetContent(4, 69); line.removeN(1, 2); final result = [ line.cellGetContent(0), line.cellGetContent(1), line.cellGetContent(2), line.cellGetContent(3), line.cellGetContent(4), ]; expect(result, equals([65, 68, 69, 0, 0])); }); test("clear() works", () { final line = BufferLine(length: 10); line.cellSetContent(1, 65); line.cellSetContent(2, 66); line.cellSetContent(3, 67); line.cellSetContent(4, 68); line.cellSetContent(5, 69); line.clear(); final result = [ line.cellGetContent(1), line.cellGetContent(2), line.cellGetContent(3), line.cellGetContent(4), line.cellGetContent(5), ]; expect(result, equals([0, 0, 0, 0, 0])); }); test("cellInitialize() works", () { final line = BufferLine(length: 10); line.cellInitialize( 0, content: 0x01, width: 0x02, cursor: Cursor(fg: 0x03, bg: 0x04, flags: 0x05), ); final result = [ line.cellGetContent(0), line.cellGetWidth(0), line.cellGetFgColor(0), line.cellGetBgColor(0), line.cellGetFlags(0), ]; expect(result, equals([0x01, 0x02, 0x03, 0x04, 0x05])); }); test("cellHasContent() works", () { final line = BufferLine(length: 10); line.cellSetContent(0, 0x01); expect(line.cellHasContent(0), isTrue); line.cellSetContent(0, 0x00); expect(line.cellHasContent(0), isFalse); }); test("cellGetContent() and cellSetContent() works", () { final line = BufferLine(length: 10); final content = 0x01; line.cellSetContent(0, content); expect(line.cellGetContent(0), equals(content)); }); test("cellGetFgColor() and cellSetFgColor() works", () { final line = BufferLine(length: 10); final content = 0x01; line.cellSetFgColor(0, content); expect(line.cellGetFgColor(0), equals(content)); }); test("cellGetBgColor() and cellSetBgColor() works", () { final line = BufferLine(length: 10); final content = 0x01; line.cellSetBgColor(0, content); expect(line.cellGetBgColor(0), equals(content)); }); test("cellHasFlag() and cellSetFlag() works", () { final line = BufferLine(length: 10); final flag = 0x03; line.cellSetFlag(0, flag); expect(line.cellHasFlag(0, flag), isTrue); }); test("cellGetFlags() and cellSetFlags() works", () { final line = BufferLine(length: 10); final content = 0x01; line.cellSetFlags(0, content); expect(line.cellGetFlags(0), equals(content)); }); test("cellGetWidth() and cellSetWidth() works", () { final line = BufferLine(length: 10); final content = 0x01; line.cellSetWidth(0, content); expect(line.cellGetWidth(0), equals(content)); }); test("getTrimmedLength() works", () { final line = BufferLine(length: 10); expect(line.getTrimmedLength(), equals(0)); line.cellSetContent(5, 0x01); expect(line.getTrimmedLength(), equals(5)); line.clear(); expect(line.getTrimmedLength(), equals(0)); }); test("copyCellsFrom() works", () { final line1 = BufferLine(length: 10); final line2 = BufferLine(length: 10); line1.cellSetContent(0, 123); line1.cellSetContent(1, 124); line1.cellSetContent(2, 125); line2.copyCellsFrom(line1, 1, 3, 2); expect(line2.cellGetContent(2), equals(0)); expect(line2.cellGetContent(3), equals(124)); expect(line2.cellGetContent(4), equals(125)); expect(line2.cellGetContent(5), equals(0)); }); test("removeRange() works", () { final line = BufferLine(length: 10); line.cellSetContent(0, 65); line.cellSetContent(1, 66); line.cellSetContent(2, 67); line.cellSetContent(3, 68); line.cellSetContent(4, 69); line.removeRange(1, 3); final result = [ line.cellGetContent(0), line.cellGetContent(1), line.cellGetContent(2), line.cellGetContent(3), line.cellGetContent(4), ]; expect(result, equals([65, 68, 69, 0, 0])); }); test("clearRange() works", () { final line = BufferLine(length: 10); line.cellSetContent(0, 65); line.cellSetContent(1, 66); line.cellSetContent(2, 67); line.cellSetContent(3, 68); line.cellSetContent(4, 69); line.clearRange(1, 3); final result = [ line.cellGetContent(0), line.cellGetContent(1), line.cellGetContent(2), line.cellGetContent(3), line.cellGetContent(4), ]; expect(result, equals([65, 0, 0, 68, 69])); }); }); }