Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
89 changes: 80 additions & 9 deletions lib/web_ui/test/engine/composition_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -106,14 +106,81 @@ Future<void> testMain() async {
});

group('determine composition state', () {
test('should return new composition state - compositing middle of text', () {
const int baseOffset = 100;
test('should return editing state if extentOffset is null', () {
final EditingState editingState = EditingState(text: 'Test');

final _MockWithCompositionAwareMixin mockWithCompositionAwareMixin =
_MockWithCompositionAwareMixin();
mockWithCompositionAwareMixin.composingText = 'Test';

expect(
mockWithCompositionAwareMixin.determineCompositionState(editingState),
editingState,
);
});

test('should return editing state if composingText is null', () {
final EditingState editingState = EditingState(
text: 'Test',
baseOffset: 0,
extentOffset: 4,
);

final _MockWithCompositionAwareMixin mockWithCompositionAwareMixin =
_MockWithCompositionAwareMixin();

expect(
mockWithCompositionAwareMixin.determineCompositionState(editingState),
editingState,
);
});

test('should return editing state if text is null', () {
final EditingState editingState = EditingState(
baseOffset: 0,
extentOffset: 0,
);

final _MockWithCompositionAwareMixin mockWithCompositionAwareMixin =
_MockWithCompositionAwareMixin();
mockWithCompositionAwareMixin.composingText = 'Test';

expect(
mockWithCompositionAwareMixin.determineCompositionState(editingState),
editingState,
);
});

test(
'should return editing state if extentOffset is smaller than composingText length',
() {
const String composingText = 'composeMe';

final EditingState editingState = EditingState(
extentOffset: baseOffset,
text: 'testing',
text: 'Test',
baseOffset: 0,
extentOffset: 4,
);

final _MockWithCompositionAwareMixin mockWithCompositionAwareMixin =
_MockWithCompositionAwareMixin();
mockWithCompositionAwareMixin.composingText = composingText;

expect(
mockWithCompositionAwareMixin.determineCompositionState(editingState),
editingState,
);
});

test('should return new composition state - compositing middle of text',
() {
const int baseOffset = 7;
const String composingText = 'Test';

final EditingState editingState = EditingState(
text: 'Testing',
baseOffset: baseOffset,
extentOffset: baseOffset,
);

final _MockWithCompositionAwareMixin mockWithCompositionAwareMixin =
Expand All @@ -123,13 +190,17 @@ Future<void> testMain() async {
const int expectedComposingBase = baseOffset - composingText.length;

expect(
mockWithCompositionAwareMixin.determineCompositionState(editingState),
editingState.copyWith(
composingBaseOffset: expectedComposingBase,
composingExtentOffset: expectedComposingBase + composingText.length));
mockWithCompositionAwareMixin.determineCompositionState(editingState),
editingState.copyWith(
composingBaseOffset: expectedComposingBase,
composingExtentOffset: expectedComposingBase + composingText.length,
),
);
});

test('should return new composition state - compositing from beginning of text', () {
test(
'should return new composition state - compositing from beginning of text',
() {
const String composingText = '今日は';

final EditingState editingState = EditingState(
Expand Down