1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- import 'dart:collection';
- import 'package:flowy_editor/document/node.dart';
- import 'package:flutter_test/flutter_test.dart';
- import 'package:flowy_editor/operation/operation.dart';
- import 'package:flowy_editor/operation/transaction_builder.dart';
- import 'package:flowy_editor/editor_state.dart';
- import 'package:flowy_editor/document/state_tree.dart';
- import 'package:flowy_editor/render/render_plugins.dart';
- void main() {
- 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(path: [
- 0,
- 1
- ], value: Node(type: "node", attributes: {}, children: LinkedList())),
- InsertOperation(
- path: [0, 1],
- value:
- Node(type: "node", attributes: {}, children: LinkedList())));
- expect(t.path, [0, 2]);
- });
- test('delete + delete', () {
- final t = transformOperation(
- DeleteOperation(
- path: [0, 1],
- removedValue:
- Node(type: "node", attributes: {}, children: LinkedList())),
- DeleteOperation(
- path: [0, 2],
- removedValue:
- 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), renderPlugins: RenderPlugins());
- 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]);
- });
- }
|