| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233 | 
							- import 'package:flutter_test/flutter_test.dart';
 
- import 'package:flowy_editor/src/document/text_delta.dart';
 
- void main() {
 
-   group('compose', () {
 
-     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);
 
-     });
 
-   });
 
-   group('invert', () {
 
-     test('insert', () {
 
-       final delta = Delta().retain(2).insert('A');
 
-       final base = Delta().insert('12346');
 
-       final expected = Delta().retain(2).delete(1);
 
-       final inverted = delta.invert(base);
 
-       expect(expected, inverted);
 
-       expect(base.compose(delta).compose(inverted), base);
 
-     });
 
-     test('delete', () {
 
-       final delta = Delta().retain(2).delete(3);
 
-       final base = Delta().insert('123456');
 
-       final expected = Delta().retain(2).insert('345');
 
-       final inverted = delta.invert(base);
 
-       expect(expected, inverted);
 
-       expect(base.compose(delta).compose(inverted), base);
 
-     });
 
-     // test('retain', () {
 
-     //   final delta = Delta().retain(2).retain(3, {'bold': true});
 
-     //   final base = Delta().insert('123456');
 
-     //   final expected = Delta().retain(2).retain(3, {'bold': null});
 
-     //   final inverted = delta.invert(base);
 
-     //   expect(expected, inverted);
 
-     //   expect(base.compose(delta).compose(inverted), base);
 
-     // });
 
-   });
 
-   group('json', () {
 
-     test('toJson()', () {
 
-       final delta = Delta().retain(2).insert('A').delete(3);
 
-       expect(delta.toJson(), [
 
-         {'retain': 2},
 
-         {'insert': 'A'},
 
-         {'delete': 3}
 
-       ]);
 
-     });
 
-     test('attributes', () {
 
-       final delta =
 
-           Delta().retain(2, {'bold': true}).insert('A', {'italic': true});
 
-       expect(delta.toJson(), [
 
-         {
 
-           'retain': 2,
 
-           'attributes': {'bold': true},
 
-         },
 
-         {
 
-           'insert': 'A',
 
-           'attributes': {'italic': true},
 
-         },
 
-       ]);
 
-     });
 
-     test('fromJson()', () {
 
-       final delta = Delta.fromJson([
 
-         {'retain': 2},
 
-         {'insert': 'A'},
 
-         {'delete': 3},
 
-       ]);
 
-       final expected = Delta().retain(2).insert('A').delete(3);
 
-       expect(delta, expected);
 
-     });
 
-   });
 
- }
 
 
  |