Add more tests for CompositionAwareMixin (#44717)
Adds missing tests for `CompositionAwareMixin`. Check https://github.com/flutter/engine/pull/44139#discussion_r1288733128 and https://github.com/flutter/engine/pull/44139#discussion_r1288009016
[C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
diff --git a/lib/web_ui/test/engine/composition_test.dart b/lib/web_ui/test/engine/composition_test.dart
index 31e9726..dcfc100 100644
--- a/lib/web_ui/test/engine/composition_test.dart
+++ b/lib/web_ui/test/engine/composition_test.dart
@@ -106,14 +106,81 @@
});
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 =
@@ -123,13 +190,17 @@
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(