| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 | 
							- import 'dart:collection';
 
- import 'package:flowy_editor/src/document/node.dart';
 
- import 'package:flutter_test/flutter_test.dart';
 
- import 'package:flowy_editor/src/operation/operation.dart';
 
- import 'package:flowy_editor/src/operation/transaction_builder.dart';
 
- import 'package:flowy_editor/src/editor_state.dart';
 
- import 'package:flowy_editor/src/document/state_tree.dart';
 
- void main() {
 
-   TestWidgetsFlutterBinding.ensureInitialized();
 
-   group('transform path', () {
 
-     test('transform path changed', () {
 
-       expect(transformPath([0, 1], [0, 1]), [0, 2]);
 
-       expect(transformPath([0, 1], [0, 2]), [0, 3]);
 
-       expect(transformPath([0, 1], [0, 2, 7, 8, 9]), [0, 3, 7, 8, 9]);
 
-       expect(transformPath([0, 1, 2], [0, 0, 7, 8, 9]), [0, 0, 7, 8, 9]);
 
-     });
 
-     test("transform path not changed", () {
 
-       expect(transformPath([0, 1, 2], [0, 0, 7, 8, 9]), [0, 0, 7, 8, 9]);
 
-       expect(transformPath([0, 1, 2], [0, 1]), [0, 1]);
 
-       expect(transformPath([1, 1], [1, 0]), [1, 0]);
 
-     });
 
-     test("transform path delta", () {
 
-       expect(transformPath([0, 1], [0, 1], 5), [0, 6]);
 
-     });
 
-   });
 
-   group('transform operation', () {
 
-     test('insert + insert', () {
 
-       final t = transformOperation(
 
-           InsertOperation([0, 1],
 
-               [Node(type: "node", attributes: {}, children: LinkedList())]),
 
-           InsertOperation([0, 1],
 
-               [Node(type: "node", attributes: {}, children: LinkedList())]));
 
-       expect(t.path, [0, 2]);
 
-     });
 
-     test('delete + delete', () {
 
-       final t = transformOperation(
 
-           DeleteOperation([0, 1],
 
-               [Node(type: "node", attributes: {}, children: LinkedList())]),
 
-           DeleteOperation([0, 2],
 
-               [Node(type: "node", attributes: {}, children: LinkedList())]));
 
-       expect(t.path, [0, 1]);
 
-     });
 
-   });
 
-   test('transform transaction builder', () {
 
-     final item1 = Node(type: "node", attributes: {}, children: LinkedList());
 
-     final item2 = Node(type: "node", attributes: {}, children: LinkedList());
 
-     final item3 = Node(type: "node", attributes: {}, children: LinkedList());
 
-     final root = Node(
 
-         type: "root",
 
-         attributes: {},
 
-         children: LinkedList()
 
-           ..addAll([
 
-             item1,
 
-             item2,
 
-             item3,
 
-           ]));
 
-     final state = EditorState(document: StateTree(root: root));
 
-     expect(item1.path, [0]);
 
-     expect(item2.path, [1]);
 
-     expect(item3.path, [2]);
 
-     final tb = TransactionBuilder(state);
 
-     tb.deleteNode(item1);
 
-     tb.deleteNode(item2);
 
-     tb.deleteNode(item3);
 
-     final transaction = tb.finish();
 
-     expect(transaction.operations[0].path, [0]);
 
-     expect(transaction.operations[1].path, [0]);
 
-     expect(transaction.operations[2].path, [0]);
 
-   });
 
-   group("toJson", () {
 
-     test("insert", () {
 
-       final root = Node(type: "root", attributes: {}, children: LinkedList());
 
-       final state = EditorState(document: StateTree(root: root));
 
-       final item1 = Node(type: "node", attributes: {}, children: LinkedList());
 
-       final tb = TransactionBuilder(state);
 
-       tb.insertNode([0], item1);
 
-       final transaction = tb.finish();
 
-       expect(transaction.toJson(), {
 
-         "operations": [
 
-           {
 
-             "type": "insert-operation",
 
-             "path": [0],
 
-             "nodes": [item1.toJson()],
 
-           }
 
-         ]
 
-       });
 
-     });
 
-     test("delete", () {
 
-       final item1 = Node(type: "node", attributes: {}, children: LinkedList());
 
-       final root = Node(
 
-           type: "root",
 
-           attributes: {},
 
-           children: LinkedList()
 
-             ..addAll([
 
-               item1,
 
-             ]));
 
-       final state = EditorState(document: StateTree(root: root));
 
-       final tb = TransactionBuilder(state);
 
-       tb.deleteNode(item1);
 
-       final transaction = tb.finish();
 
-       expect(transaction.toJson(), {
 
-         "operations": [
 
-           {
 
-             "type": "delete-operation",
 
-             "path": [0],
 
-             "nodes": [item1.toJson()],
 
-           }
 
-         ],
 
-       });
 
-     });
 
-   });
 
- }
 
 
  |