From b5ecd7dedcd167e7c1506edbeab0cb15503c5d84 Mon Sep 17 00:00:00 2001 From: Vincent Chan Date: Wed, 10 Aug 2022 17:58:01 +0800 Subject: [PATCH] test: next runes --- .../lib/src/document/text_delta.dart | 4 +-- .../flowy_editor/test/delta_test.dart | 34 ++++++++++++++++--- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/frontend/app_flowy/packages/flowy_editor/lib/src/document/text_delta.dart b/frontend/app_flowy/packages/flowy_editor/lib/src/document/text_delta.dart index b1e6525c49..6cbc015569 100644 --- a/frontend/app_flowy/packages/flowy_editor/lib/src/document/text_delta.dart +++ b/frontend/app_flowy/packages/flowy_editor/lib/src/document/text_delta.dart @@ -477,7 +477,7 @@ class Delta extends Iterable { int prevRunePosition(int pos) { if (pos == 0) { - return pos; + return pos - 1; } _rawString ??= _operations.whereType().map((op) => op.content).join(); @@ -498,7 +498,7 @@ class Delta extends Iterable { } } - return pos; + return stringContent.length; } String toRawString() { diff --git a/frontend/app_flowy/packages/flowy_editor/test/delta_test.dart b/frontend/app_flowy/packages/flowy_editor/test/delta_test.dart index 2b0d529414..3114de8dd7 100644 --- a/frontend/app_flowy/packages/flowy_editor/test/delta_test.dart +++ b/frontend/app_flowy/packages/flowy_editor/test/delta_test.dart @@ -279,9 +279,35 @@ void main() { expect(delta, expected); }); }); - test("stringIndexes", () { - final indexes = stringIndexes('😊'); - expect(indexes[0], 0); - expect(indexes[1], 0); + group('runes', () { + test("stringIndexes", () { + final indexes = stringIndexes('😊'); + expect(indexes[0], 0); + expect(indexes[1], 0); + }); + test("next rune 1", () { + final delta = Delta()..insert('😊'); + expect(delta.nextRunePosition(0), 2); + }); + test("next rune 2", () { + final delta = Delta()..insert('😊a'); + expect(delta.nextRunePosition(0), 2); + }); + test("next rune 3", () { + final delta = Delta()..insert('😊陈'); + expect(delta.nextRunePosition(2), 3); + }); + test("prev rune 1", () { + final delta = Delta()..insert('😊陈'); + expect(delta.prevRunePosition(2), 0); + }); + test("prev rune 2", () { + final delta = Delta()..insert('😊'); + expect(delta.prevRunePosition(2), 0); + }); + test("prev rune 3", () { + final delta = Delta()..insert('😊'); + expect(delta.prevRunePosition(0), -1); + }); }); }