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(