123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- import 'package:flutter_test/flutter_test.dart';
- import 'package:flowy_editor/document/text_delta.dart';
- void main() {
- TestWidgetsFlutterBinding.ensureInitialized();
- test('test delta', () {
- final delta = Delta(<TextOperation>[
- TextInsert('Gandalf', {
- 'bold': true,
- }),
- TextInsert(' the '),
- TextInsert('Grey', {
- 'color': '#ccc',
- })
- ]);
- final death = Delta().retain(12).insert("White", {
- 'color': '#fff',
- }).delete(4);
- final restores = delta.compose(death);
- expect(restores.operations, <TextOperation>[
- TextInsert('Gandalf', {'bold': true}),
- TextInsert(' the '),
- TextInsert('White', {'color': '#fff'}),
- ]);
- });
- test('compose()', () {
- final a = Delta().insert('A');
- final b = Delta().insert('B');
- final expected = Delta().insert('B').insert('A');
- expect(a.compose(b), expected);
- });
- test('insert + retain', () {
- final a = Delta().insert('A');
- final b = Delta().retain(1, {
- 'bold': true,
- 'color': 'red',
- });
- final expected = Delta().insert('A', {
- 'bold': true,
- 'color': 'red',
- });
- expect(a.compose(b), expected);
- });
- test('insert + delete', () {
- final a = Delta().insert('A');
- final b = Delta().delete(1);
- final expected = Delta();
- expect(a.compose(b), expected);
- });
- test('delete + insert', () {
- final a = Delta().delete(1);
- final b = Delta().insert('B');
- final expected = Delta().insert('B').delete(1);
- expect(a.compose(b), expected);
- });
- test('delete + retain', () {
- final a = Delta().delete(1);
- final b = Delta().retain(1, {
- 'bold': true,
- 'color': 'red',
- });
- final expected = Delta().delete(1).retain(1, {
- 'bold': true,
- 'color': 'red',
- });
- expect(a.compose(b), expected);
- });
- test('delete + delete', () {
- final a = Delta().delete(1);
- final b = Delta().delete(1);
- final expected = Delta().delete(2);
- expect(a.compose(b), expected);
- });
- test('retain + insert', () {
- final a = Delta().retain(1, {
- 'color': 'blue'
- });
- final b = Delta().insert('B');
- final expected = Delta().insert('B').retain(1, {
- 'color': 'blue',
- });
- expect(a.compose(b), expected);
- });
- test('retain + retain', () {
- final a = Delta().retain(1, {
- 'color': 'blue',
- });
- final b = Delta().retain(1, {
- 'bold': true,
- 'color': 'red',
- });
- final expected = Delta().retain(1, {
- 'bold': true,
- 'color': 'red',
- });
- expect(a.compose(b), expected);
- });
- test('retain + delete', () {
- final a = Delta().retain(1, {
- 'color': 'blue',
- });
- final b = Delta().delete(1);
- final expected = Delta().delete(1);
- expect(a.compose(b), expected);
- });
- test('insert in middle of text', () {
- final a = Delta().insert('Hello');
- final b = Delta().retain(3).insert('X');
- final expected = Delta().insert('HelXlo');
- expect(a.compose(b), expected);
- });
- test('insert and delete ordering', () {
- final a = Delta().insert('Hello');
- final b = Delta().insert('Hello');
- final insertFirst = Delta().retain(3).insert('X').delete(1);
- final deleteFirst = Delta().retain(3).delete(1).insert('X');
- final expected = Delta().insert('HelXo');
- expect(a.compose(insertFirst), expected);
- expect(b.compose(deleteFirst), expected);
- });
- test('delete entire text', () {
- final a = Delta().retain(4).insert('Hello');
- final b = Delta().delete(9);
- final expected = Delta().delete(4);
- expect(a.compose(b), expected);
- });
- test('retain more than length of text', () {
- final a = Delta().insert('Hello');
- final b = Delta().retain(10);
- final expected = Delta().insert('Hello');
- expect(a.compose(b), expected);
- });
- test('retain start optimization', () {
- final a = Delta()
- .insert('A', {'bold': true})
- .insert('B')
- .insert('C', {'bold': true})
- .delete(1);
- final b = Delta().retain(3).insert('D');
- final expected = Delta()
- .insert('A', {'bold': true})
- .insert('B')
- .insert('C', {'bold': true})
- .insert('D')
- .delete(1);
- expect(a.compose(b), expected);
- });
- test('retain end optimization', () {
- final a = Delta()
- .insert('A', {'bold': true})
- .insert('B')
- .insert('C', {'bold': true});
- final b = Delta().delete(1);
- final expected = Delta().insert('B').insert('C', {'bold': true});
- expect(a.compose(b), expected);
- });
- test('retain end optimization join', () {
- final a = Delta()
- .insert('A', {'bold': true})
- .insert('B')
- .insert('C', {'bold': true})
- .insert('D')
- .insert('E', {'bold': true})
- .insert('F');
- final b = Delta().retain(1).delete(1);
- final expected = Delta()
- .insert('AC', {'bold': true})
- .insert('D')
- .insert('E', {'bold': true})
- .insert('F');
- expect(a.compose(b), expected);
- });
- }
|