From 8024815d435ea3b10e55ded630ebe224c6df7fed Mon Sep 17 00:00:00 2001 From: suragch Date: Thu, 10 Jun 2021 15:21:23 +0800 Subject: [PATCH] cleanup and ignore certain warnings --- analysis_options.yaml | 4 +- lib/src/editing/mongol_editable_text.dart | 2 + lib/src/editing/mongol_render_editable.dart | 3 + lib/src/editing/mongol_text_field.dart | 1 - test/mongol_editable_text_test.dart | 1271 +++++++++---------- test/mongol_paragraph_test.dart | 2 + test/mongol_render_editable_test.dart | 2 + test/mongol_render_paragraph_test.dart | 657 ---------- test/mongol_text_field_test.dart | 35 +- test/rendering/mock_canvas.dart | 1 + test/rendering/recording_canvas.dart | 2 +- test/text_test.dart | 2 + test/widgets/_binding_io.dart | 1 + test/widgets/binding.dart | 1 + test/widgets/mongol_widget_tester.dart | 2 +- 15 files changed, 665 insertions(+), 1321 deletions(-) delete mode 100644 test/mongol_render_paragraph_test.dart diff --git a/analysis_options.yaml b/analysis_options.yaml index 5d95345..67685ca 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -8,4 +8,6 @@ analyzer: linter: rules: - - camel_case_types \ No newline at end of file + camel_case_types: true + todo: false + omit_local_variable_types: false \ No newline at end of file diff --git a/lib/src/editing/mongol_editable_text.dart b/lib/src/editing/mongol_editable_text.dart index e12c692..569c22a 100644 --- a/lib/src/editing/mongol_editable_text.dart +++ b/lib/src/editing/mongol_editable_text.dart @@ -22,6 +22,8 @@ import 'package:mongol/src/editing/text_selection/mongol_text_selection.dart'; import 'mongol_text_editing_action.dart'; +// ignore_for_file: todo + // The time it takes for the cursor to fade from fully opaque to fully // transparent and vice versa. A full cursor blink, from transparent to opaque // to transparent, is twice this duration. diff --git a/lib/src/editing/mongol_render_editable.dart b/lib/src/editing/mongol_render_editable.dart index ab0f69d..6de0dea 100644 --- a/lib/src/editing/mongol_render_editable.dart +++ b/lib/src/editing/mongol_render_editable.dart @@ -16,6 +16,9 @@ import 'package:flutter/services.dart'; import 'package:mongol/src/base/mongol_text_align.dart'; import 'package:mongol/src/base/mongol_text_painter.dart'; +// ignore_for_file: deprecated_member_use_from_same_package +// ignore_for_file: todo + const double _kCaretGap = 1.0; // pixels const double _kCaretWidthOffset = 2.0; // pixels diff --git a/lib/src/editing/mongol_text_field.dart b/lib/src/editing/mongol_text_field.dart index ec28e2a..14aea30 100644 --- a/lib/src/editing/mongol_text_field.dart +++ b/lib/src/editing/mongol_text_field.dart @@ -31,7 +31,6 @@ import 'package:mongol/src/base/mongol_text_align.dart'; import 'alignment.dart'; import 'mongol_editable_text.dart'; import 'mongol_input_decorator.dart'; -import '../base/mongol_text_painter.dart'; import 'text_selection/mongol_text_selection.dart'; import 'text_selection/mongol_text_selection_controls.dart'; diff --git a/test/mongol_editable_text_test.dart b/test/mongol_editable_text_test.dart index e613307..7a99595 100644 --- a/test/mongol_editable_text_test.dart +++ b/test/mongol_editable_text_test.dart @@ -5,6 +5,7 @@ // found in the LICENSE file. // ignore_for_file: omit_local_variable_types +// ignore_for_file: todo import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; @@ -3935,681 +3936,681 @@ void main() { } } - Future testTextEditing(MongolWidgetTester tester, - {required String platform}) async { - final TextEditingController controller = - TextEditingController(text: testText); - controller.selection = const TextSelection( - baseOffset: 0, - extentOffset: 0, - affinity: TextAffinity.upstream, - ); - late TextSelection selection; - late SelectionChangedCause cause; - await tester.pumpWidget(MaterialApp( - home: Align( - alignment: Alignment.topLeft, - child: SizedBox( - height: 400, - child: MongolEditableText( - maxLines: 10, - controller: controller, - showSelectionHandles: true, - autofocus: true, - focusNode: FocusNode(), - style: Typography.material2018(platform: TargetPlatform.android) - .black - .subtitle1!, - cursorColor: Colors.blue, - selectionControls: materialTextSelectionControls, - keyboardType: TextInputType.text, - textAlign: MongolTextAlign.bottom, - onSelectionChanged: - (TextSelection newSelection, SelectionChangedCause? newCause) { - selection = newSelection; - cause = newCause!; - }, - ), - ), - ), - )); - - await tester.pump(); // Wait for autofocus to take effect. - - // Select a few characters using shift right arrow - await sendKeys( - tester, - [ - LogicalKeyboardKey.arrowDown, - LogicalKeyboardKey.arrowDown, - LogicalKeyboardKey.arrowDown, - ], - shift: true, - platform: platform, - ); - - expect(cause, equals(SelectionChangedCause.keyboard), - reason: 'on $platform'); - expect( - selection, - equals( - const TextSelection( - baseOffset: 0, - extentOffset: 3, - affinity: TextAffinity.upstream, - ), - ), - reason: 'on $platform', - ); - - // Select fewer characters using shift left arrow - await sendKeys( - tester, - [ - LogicalKeyboardKey.arrowUp, - LogicalKeyboardKey.arrowUp, - LogicalKeyboardKey.arrowUp, - ], - shift: true, - platform: platform, - ); - - expect( - selection, - equals( - const TextSelection( - baseOffset: 0, - extentOffset: 0, - affinity: TextAffinity.upstream, - ), - ), - reason: 'on $platform', - ); - - // Try to select before the first character, nothing should change. - await sendKeys( - tester, - [ - LogicalKeyboardKey.arrowUp, - ], - shift: true, - platform: platform, - ); + // Future testTextEditing(MongolWidgetTester tester, + // {required String platform}) async { + // final TextEditingController controller = + // TextEditingController(text: testText); + // controller.selection = const TextSelection( + // baseOffset: 0, + // extentOffset: 0, + // affinity: TextAffinity.upstream, + // ); + // late TextSelection selection; + // late SelectionChangedCause cause; + // await tester.pumpWidget(MaterialApp( + // home: Align( + // alignment: Alignment.topLeft, + // child: SizedBox( + // height: 400, + // child: MongolEditableText( + // maxLines: 10, + // controller: controller, + // showSelectionHandles: true, + // autofocus: true, + // focusNode: FocusNode(), + // style: Typography.material2018(platform: TargetPlatform.android) + // .black + // .subtitle1!, + // cursorColor: Colors.blue, + // selectionControls: materialTextSelectionControls, + // keyboardType: TextInputType.text, + // textAlign: MongolTextAlign.bottom, + // onSelectionChanged: + // (TextSelection newSelection, SelectionChangedCause? newCause) { + // selection = newSelection; + // cause = newCause!; + // }, + // ), + // ), + // ), + // )); - expect( - selection, - equals( - const TextSelection( - baseOffset: 0, - extentOffset: 0, - affinity: TextAffinity.upstream, - ), - ), - reason: 'on $platform', - ); + // await tester.pump(); // Wait for autofocus to take effect. + + // // Select a few characters using shift right arrow + // await sendKeys( + // tester, + // [ + // LogicalKeyboardKey.arrowDown, + // LogicalKeyboardKey.arrowDown, + // LogicalKeyboardKey.arrowDown, + // ], + // shift: true, + // platform: platform, + // ); - // Select the first two words. - await sendKeys( - tester, - [ - LogicalKeyboardKey.arrowDown, - LogicalKeyboardKey.arrowDown, - ], - shift: true, - wordModifier: true, - platform: platform, - ); + // expect(cause, equals(SelectionChangedCause.keyboard), + // reason: 'on $platform'); + // expect( + // selection, + // equals( + // const TextSelection( + // baseOffset: 0, + // extentOffset: 3, + // affinity: TextAffinity.upstream, + // ), + // ), + // reason: 'on $platform', + // ); - expect( - selection, - equals( - const TextSelection( - baseOffset: 0, - extentOffset: 6, - affinity: TextAffinity.upstream, - ), - ), - reason: 'on $platform', - ); + // // Select fewer characters using shift left arrow + // await sendKeys( + // tester, + // [ + // LogicalKeyboardKey.arrowUp, + // LogicalKeyboardKey.arrowUp, + // LogicalKeyboardKey.arrowUp, + // ], + // shift: true, + // platform: platform, + // ); - // Unselect the second word. - await sendKeys( - tester, - [ - LogicalKeyboardKey.arrowUp, - ], - shift: true, - wordModifier: true, - platform: platform, - ); + // expect( + // selection, + // equals( + // const TextSelection( + // baseOffset: 0, + // extentOffset: 0, + // affinity: TextAffinity.upstream, + // ), + // ), + // reason: 'on $platform', + // ); - expect( - selection, - equals( - const TextSelection( - baseOffset: 0, - extentOffset: 4, - affinity: TextAffinity.upstream, - ), - ), - reason: 'on $platform', - ); + // // Try to select before the first character, nothing should change. + // await sendKeys( + // tester, + // [ + // LogicalKeyboardKey.arrowUp, + // ], + // shift: true, + // platform: platform, + // ); - // Select the next line. - await sendKeys( - tester, - [ - LogicalKeyboardKey.arrowRight, - ], - shift: true, - platform: platform, - ); + // expect( + // selection, + // equals( + // const TextSelection( + // baseOffset: 0, + // extentOffset: 0, + // affinity: TextAffinity.upstream, + // ), + // ), + // reason: 'on $platform', + // ); - expect( - selection, - equals( - const TextSelection( - baseOffset: 0, - extentOffset: 24, - affinity: TextAffinity.upstream, - ), - ), - reason: 'on $platform', - ); + // // Select the first two words. + // await sendKeys( + // tester, + // [ + // LogicalKeyboardKey.arrowDown, + // LogicalKeyboardKey.arrowDown, + // ], + // shift: true, + // wordModifier: true, + // platform: platform, + // ); - await sendKeys( - tester, - [ - LogicalKeyboardKey.arrowDown, - ], - platform: platform, - ); + // expect( + // selection, + // equals( + // const TextSelection( + // baseOffset: 0, + // extentOffset: 6, + // affinity: TextAffinity.upstream, + // ), + // ), + // reason: 'on $platform', + // ); - expect( - selection, - equals( - const TextSelection( - baseOffset: 24, - extentOffset: 24, - affinity: TextAffinity.downstream, - ), - ), - reason: 'on $platform', - ); + // // Unselect the second word. + // await sendKeys( + // tester, + // [ + // LogicalKeyboardKey.arrowUp, + // ], + // shift: true, + // wordModifier: true, + // platform: platform, + // ); - // Select the next line. - await sendKeys( - tester, - [ - LogicalKeyboardKey.arrowRight, - ], - shift: true, - platform: platform, - ); + // expect( + // selection, + // equals( + // const TextSelection( + // baseOffset: 0, + // extentOffset: 4, + // affinity: TextAffinity.upstream, + // ), + // ), + // reason: 'on $platform', + // ); - expect( - selection, - equals( - const TextSelection( - baseOffset: 24, - extentOffset: 40, - affinity: TextAffinity.downstream, - ), - ), - reason: 'on $platform', - ); + // // Select the next line. + // await sendKeys( + // tester, + // [ + // LogicalKeyboardKey.arrowRight, + // ], + // shift: true, + // platform: platform, + // ); - // Select to the end of the string by going down. - await sendKeys( - tester, - [ - LogicalKeyboardKey.arrowRight, - LogicalKeyboardKey.arrowRight, - LogicalKeyboardKey.arrowRight, - LogicalKeyboardKey.arrowRight, - ], - shift: true, - platform: platform, - ); + // expect( + // selection, + // equals( + // const TextSelection( + // baseOffset: 0, + // extentOffset: 24, + // affinity: TextAffinity.upstream, + // ), + // ), + // reason: 'on $platform', + // ); - expect( - selection, - equals( - const TextSelection( - baseOffset: 24, - extentOffset: testText.length, - affinity: TextAffinity.downstream, - ), - ), - reason: 'on $platform', - ); + // await sendKeys( + // tester, + // [ + // LogicalKeyboardKey.arrowDown, + // ], + // platform: platform, + // ); - // Go back left one line to set selection up to part of the last line. - await sendKeys( - tester, - [ - LogicalKeyboardKey.arrowLeft, - ], - shift: true, - platform: platform, - ); + // expect( + // selection, + // equals( + // const TextSelection( + // baseOffset: 24, + // extentOffset: 24, + // affinity: TextAffinity.downstream, + // ), + // ), + // reason: 'on $platform', + // ); - expect( - selection, - equals( - const TextSelection( - baseOffset: 24, - extentOffset: 53, - affinity: TextAffinity.downstream, - ), - ), - reason: 'on $platform', - ); + // // Select the next line. + // await sendKeys( + // tester, + // [ + // LogicalKeyboardKey.arrowRight, + // ], + // shift: true, + // platform: platform, + // ); - // Select to the end of the selection. - await sendKeys( - tester, - [ - LogicalKeyboardKey.arrowDown, - ], - lineModifier: true, - shift: true, - platform: platform, - ); + // expect( + // selection, + // equals( + // const TextSelection( + // baseOffset: 24, + // extentOffset: 40, + // affinity: TextAffinity.downstream, + // ), + // ), + // reason: 'on $platform', + // ); - expect( - selection, - equals( - const TextSelection( - baseOffset: 24, - extentOffset: 72, - affinity: TextAffinity.downstream, - ), - ), - reason: 'on $platform', - ); + // // Select to the end of the string by going down. + // await sendKeys( + // tester, + // [ + // LogicalKeyboardKey.arrowRight, + // LogicalKeyboardKey.arrowRight, + // LogicalKeyboardKey.arrowRight, + // LogicalKeyboardKey.arrowRight, + // ], + // shift: true, + // platform: platform, + // ); - // Select to the beginning of the line. - await sendKeys( - tester, - [ - LogicalKeyboardKey.arrowUp, - ], - lineModifier: true, - shift: true, - platform: platform, - ); + // expect( + // selection, + // equals( + // const TextSelection( + // baseOffset: 24, + // extentOffset: testText.length, + // affinity: TextAffinity.downstream, + // ), + // ), + // reason: 'on $platform', + // ); - expect( - selection, - equals( - const TextSelection( - baseOffset: 20, - extentOffset: 55, - affinity: TextAffinity.downstream, - ), - ), - reason: 'on $platform', - ); + // // Go back left one line to set selection up to part of the last line. + // await sendKeys( + // tester, + // [ + // LogicalKeyboardKey.arrowLeft, + // ], + // shift: true, + // platform: platform, + // ); - // Select All - await sendKeys( - tester, - [ - LogicalKeyboardKey.keyA, - ], - shortcutModifier: true, - platform: platform, - ); + // expect( + // selection, + // equals( + // const TextSelection( + // baseOffset: 24, + // extentOffset: 53, + // affinity: TextAffinity.downstream, + // ), + // ), + // reason: 'on $platform', + // ); - expect( - selection, - equals( - const TextSelection( - baseOffset: 0, - extentOffset: testText.length, - affinity: TextAffinity.downstream, - ), - ), - reason: 'on $platform', - ); + // // Select to the end of the selection. + // await sendKeys( + // tester, + // [ + // LogicalKeyboardKey.arrowDown, + // ], + // lineModifier: true, + // shift: true, + // platform: platform, + // ); - // Jump to beginning of selection. - await sendKeys( - tester, - [ - LogicalKeyboardKey.arrowUp, - ], - platform: platform, - ); + // expect( + // selection, + // equals( + // const TextSelection( + // baseOffset: 24, + // extentOffset: 72, + // affinity: TextAffinity.downstream, + // ), + // ), + // reason: 'on $platform', + // ); - expect( - selection, - equals( - const TextSelection( - baseOffset: 0, - extentOffset: 0, - affinity: TextAffinity.downstream, - ), - ), - reason: 'on $platform', - ); + // // Select to the beginning of the line. + // await sendKeys( + // tester, + // [ + // LogicalKeyboardKey.arrowUp, + // ], + // lineModifier: true, + // shift: true, + // platform: platform, + // ); - // Jump to end. - await sendKeys( - tester, - [ - LogicalKeyboardKey.arrowRight, - ], - shift: false, - lineModifier: true, - platform: platform, - ); + // expect( + // selection, + // equals( + // const TextSelection( + // baseOffset: 20, + // extentOffset: 55, + // affinity: TextAffinity.downstream, + // ), + // ), + // reason: 'on $platform', + // ); - expect( - selection, - equals( - const TextSelection.collapsed( - offset: testText.length, - affinity: TextAffinity.downstream, - ), - ), - reason: 'on $platform', - ); - expect(controller.text, equals(testText), reason: 'on $platform'); + // // Select All + // await sendKeys( + // tester, + // [ + // LogicalKeyboardKey.keyA, + // ], + // shortcutModifier: true, + // platform: platform, + // ); - // Jump to start. - await sendKeys( - tester, - [ - LogicalKeyboardKey.arrowLeft, - ], - shift: false, - lineModifier: true, - platform: platform, - ); + // expect( + // selection, + // equals( + // const TextSelection( + // baseOffset: 0, + // extentOffset: testText.length, + // affinity: TextAffinity.downstream, + // ), + // ), + // reason: 'on $platform', + // ); - expect( - selection, - equals( - const TextSelection.collapsed( - offset: 0, - affinity: TextAffinity.downstream, - ), - ), - reason: 'on $platform', - ); - expect(controller.text, equals(testText), reason: 'on $platform'); + // // Jump to beginning of selection. + // await sendKeys( + // tester, + // [ + // LogicalKeyboardKey.arrowUp, + // ], + // platform: platform, + // ); - // Move forward a few letters - await sendKeys( - tester, - [ - LogicalKeyboardKey.arrowDown, - LogicalKeyboardKey.arrowDown, - LogicalKeyboardKey.arrowDown, - ], - shift: false, - lineModifier: false, - platform: platform, - ); + // expect( + // selection, + // equals( + // const TextSelection( + // baseOffset: 0, + // extentOffset: 0, + // affinity: TextAffinity.downstream, + // ), + // ), + // reason: 'on $platform', + // ); - expect( - selection, - equals( - const TextSelection.collapsed( - offset: 3, - affinity: TextAffinity.downstream, - ), - ), - reason: 'on $platform', - ); + // // Jump to end. + // await sendKeys( + // tester, + // [ + // LogicalKeyboardKey.arrowRight, + // ], + // shift: false, + // lineModifier: true, + // platform: platform, + // ); - // Select to end. - await sendKeys( - tester, - [ - LogicalKeyboardKey.arrowRight, - ], - shift: true, - lineModifier: true, - platform: platform, - ); + // expect( + // selection, + // equals( + // const TextSelection.collapsed( + // offset: testText.length, + // affinity: TextAffinity.downstream, + // ), + // ), + // reason: 'on $platform', + // ); + // expect(controller.text, equals(testText), reason: 'on $platform'); + + // // Jump to start. + // await sendKeys( + // tester, + // [ + // LogicalKeyboardKey.arrowLeft, + // ], + // shift: false, + // lineModifier: true, + // platform: platform, + // ); - expect( - selection, - equals( - const TextSelection( - baseOffset: 3, - extentOffset: testText.length, - affinity: TextAffinity.downstream, - ), - ), - reason: 'on $platform', - ); + // expect( + // selection, + // equals( + // const TextSelection.collapsed( + // offset: 0, + // affinity: TextAffinity.downstream, + // ), + // ), + // reason: 'on $platform', + // ); + // expect(controller.text, equals(testText), reason: 'on $platform'); + + // // Move forward a few letters + // await sendKeys( + // tester, + // [ + // LogicalKeyboardKey.arrowDown, + // LogicalKeyboardKey.arrowDown, + // LogicalKeyboardKey.arrowDown, + // ], + // shift: false, + // lineModifier: false, + // platform: platform, + // ); - // Select to start, which extends the selection. - await sendKeys( - tester, - [ - LogicalKeyboardKey.arrowLeft, - ], - shift: true, - lineModifier: true, - platform: platform, - ); + // expect( + // selection, + // equals( + // const TextSelection.collapsed( + // offset: 3, + // affinity: TextAffinity.downstream, + // ), + // ), + // reason: 'on $platform', + // ); - expect( - selection, - equals( - const TextSelection( - baseOffset: testText.length, - extentOffset: 0, - affinity: TextAffinity.downstream, - ), - ), - reason: 'on $platform', - ); + // // Select to end. + // await sendKeys( + // tester, + // [ + // LogicalKeyboardKey.arrowRight, + // ], + // shift: true, + // lineModifier: true, + // platform: platform, + // ); - // Move to start again. - await sendKeys( - tester, - [ - LogicalKeyboardKey.arrowLeft, - ], - shift: false, - lineModifier: false, - platform: platform, - ); + // expect( + // selection, + // equals( + // const TextSelection( + // baseOffset: 3, + // extentOffset: testText.length, + // affinity: TextAffinity.downstream, + // ), + // ), + // reason: 'on $platform', + // ); - expect( - selection, - equals( - const TextSelection.collapsed( - offset: 0, - affinity: TextAffinity.downstream, - ), - ), - reason: 'on $platform', - ); + // // Select to start, which extends the selection. + // await sendKeys( + // tester, + // [ + // LogicalKeyboardKey.arrowLeft, + // ], + // shift: true, + // lineModifier: true, + // platform: platform, + // ); - // Jump forward three words. - await sendKeys( - tester, - [ - LogicalKeyboardKey.arrowDown, - LogicalKeyboardKey.arrowDown, - LogicalKeyboardKey.arrowDown, - ], - wordModifier: true, - platform: platform, - ); + // expect( + // selection, + // equals( + // const TextSelection( + // baseOffset: testText.length, + // extentOffset: 0, + // affinity: TextAffinity.downstream, + // ), + // ), + // reason: 'on $platform', + // ); - expect( - selection, - equals( - const TextSelection( - baseOffset: 10, - extentOffset: 10, - affinity: TextAffinity.downstream, - ), - ), - reason: 'on $platform', - ); + // // Move to start again. + // await sendKeys( + // tester, + // [ + // LogicalKeyboardKey.arrowLeft, + // ], + // shift: false, + // lineModifier: false, + // platform: platform, + // ); - // Select some characters backward. - await sendKeys( - tester, - [ - LogicalKeyboardKey.arrowUp, - LogicalKeyboardKey.arrowUp, - LogicalKeyboardKey.arrowUp, - ], - shift: true, - platform: platform, - ); + // expect( + // selection, + // equals( + // const TextSelection.collapsed( + // offset: 0, + // affinity: TextAffinity.downstream, + // ), + // ), + // reason: 'on $platform', + // ); - expect( - selection, - equals( - const TextSelection( - baseOffset: 10, - extentOffset: 7, - affinity: TextAffinity.downstream, - ), - ), - reason: 'on $platform', - ); + // // Jump forward three words. + // await sendKeys( + // tester, + // [ + // LogicalKeyboardKey.arrowDown, + // LogicalKeyboardKey.arrowDown, + // LogicalKeyboardKey.arrowDown, + // ], + // wordModifier: true, + // platform: platform, + // ); - // Select a word backward. - await sendKeys( - tester, - [ - LogicalKeyboardKey.arrowUp, - ], - shift: true, - wordModifier: true, - platform: platform, - ); + // expect( + // selection, + // equals( + // const TextSelection( + // baseOffset: 10, + // extentOffset: 10, + // affinity: TextAffinity.downstream, + // ), + // ), + // reason: 'on $platform', + // ); - expect( - selection, - equals( - const TextSelection( - baseOffset: 10, - extentOffset: 4, - affinity: TextAffinity.downstream, - ), - ), - reason: 'on $platform', - ); - expect(controller.text, equals(testText), reason: 'on $platform'); + // // Select some characters backward. + // await sendKeys( + // tester, + // [ + // LogicalKeyboardKey.arrowUp, + // LogicalKeyboardKey.arrowUp, + // LogicalKeyboardKey.arrowUp, + // ], + // shift: true, + // platform: platform, + // ); - // Cut - await sendKeys( - tester, - [ - LogicalKeyboardKey.keyX, - ], - shortcutModifier: true, - platform: platform, - ); + // expect( + // selection, + // equals( + // const TextSelection( + // baseOffset: 10, + // extentOffset: 7, + // affinity: TextAffinity.downstream, + // ), + // ), + // reason: 'on $platform', + // ); - expect( - selection, - equals( - const TextSelection( - baseOffset: 4, - extentOffset: 4, - affinity: TextAffinity.downstream, - ), - ), - reason: 'on $platform', - ); - expect( - controller.text, - equals('Now time for\n' - 'all good people\n' - 'to come to the aid\n' - 'of their country.'), - reason: 'on $platform', - ); - expect( - (await Clipboard.getData(Clipboard.kTextPlain))!.text, - equals('is the'), - reason: 'on $platform', - ); + // // Select a word backward. + // await sendKeys( + // tester, + // [ + // LogicalKeyboardKey.arrowUp, + // ], + // shift: true, + // wordModifier: true, + // platform: platform, + // ); - // Paste - await sendKeys( - tester, - [ - LogicalKeyboardKey.keyV, - ], - shortcutModifier: true, - platform: platform, - ); + // expect( + // selection, + // equals( + // const TextSelection( + // baseOffset: 10, + // extentOffset: 4, + // affinity: TextAffinity.downstream, + // ), + // ), + // reason: 'on $platform', + // ); + // expect(controller.text, equals(testText), reason: 'on $platform'); + + // // Cut + // await sendKeys( + // tester, + // [ + // LogicalKeyboardKey.keyX, + // ], + // shortcutModifier: true, + // platform: platform, + // ); - expect( - selection, - equals( - const TextSelection( - baseOffset: 10, - extentOffset: 10, - affinity: TextAffinity.downstream, - ), - ), - reason: 'on $platform', - ); - expect(controller.text, equals(testText), reason: 'on $platform'); + // expect( + // selection, + // equals( + // const TextSelection( + // baseOffset: 4, + // extentOffset: 4, + // affinity: TextAffinity.downstream, + // ), + // ), + // reason: 'on $platform', + // ); + // expect( + // controller.text, + // equals('Now time for\n' + // 'all good people\n' + // 'to come to the aid\n' + // 'of their country.'), + // reason: 'on $platform', + // ); + // expect( + // (await Clipboard.getData(Clipboard.kTextPlain))!.text, + // equals('is the'), + // reason: 'on $platform', + // ); - // Copy All - await sendKeys( - tester, - [ - LogicalKeyboardKey.keyA, - LogicalKeyboardKey.keyC, - ], - shortcutModifier: true, - platform: platform, - ); + // // Paste + // await sendKeys( + // tester, + // [ + // LogicalKeyboardKey.keyV, + // ], + // shortcutModifier: true, + // platform: platform, + // ); - expect( - selection, - equals( - const TextSelection( - baseOffset: 0, - extentOffset: testText.length, - affinity: TextAffinity.downstream, - ), - ), - reason: 'on $platform', - ); - expect(controller.text, equals(testText), reason: 'on $platform'); - expect((await Clipboard.getData(Clipboard.kTextPlain))!.text, - equals(testText)); + // expect( + // selection, + // equals( + // const TextSelection( + // baseOffset: 10, + // extentOffset: 10, + // affinity: TextAffinity.downstream, + // ), + // ), + // reason: 'on $platform', + // ); + // expect(controller.text, equals(testText), reason: 'on $platform'); + + // // Copy All + // await sendKeys( + // tester, + // [ + // LogicalKeyboardKey.keyA, + // LogicalKeyboardKey.keyC, + // ], + // shortcutModifier: true, + // platform: platform, + // ); - // Delete - await sendKeys( - tester, - [ - LogicalKeyboardKey.delete, - ], - platform: platform, - ); - expect( - selection, - equals( - const TextSelection( - baseOffset: 0, - extentOffset: 0, - affinity: TextAffinity.downstream, - ), - ), - reason: 'on $platform', - ); - expect(controller.text, isEmpty, reason: 'on $platform'); - } + // expect( + // selection, + // equals( + // const TextSelection( + // baseOffset: 0, + // extentOffset: testText.length, + // affinity: TextAffinity.downstream, + // ), + // ), + // reason: 'on $platform', + // ); + // expect(controller.text, equals(testText), reason: 'on $platform'); + // expect((await Clipboard.getData(Clipboard.kTextPlain))!.text, + // equals(testText)); + + // // Delete + // await sendKeys( + // tester, + // [ + // LogicalKeyboardKey.delete, + // ], + // platform: platform, + // ); + // expect( + // selection, + // equals( + // const TextSelection( + // baseOffset: 0, + // extentOffset: 0, + // affinity: TextAffinity.downstream, + // ), + // ), + // reason: 'on $platform', + // ); + // expect(controller.text, isEmpty, reason: 'on $platform'); + // } // TODO: get these tests to pass after I understand more about text movement @@ -7686,19 +7687,3 @@ class SkipPaintingRenderObject extends RenderProxyBox { @override void paint(PaintingContext context, Offset offset) {} } - -class _AccentColorTextEditingController extends TextEditingController { - _AccentColorTextEditingController(String text) : super(text: text); - - @override - TextSpan buildTextSpan( - {required BuildContext context, - TextStyle? style, - required bool withComposing}) { - final Color color = Theme.of(context).colorScheme.secondary; - return super.buildTextSpan( - context: context, - style: TextStyle(color: color), - withComposing: withComposing); - } -} diff --git a/test/mongol_paragraph_test.dart b/test/mongol_paragraph_test.dart index aa8c129..7faa6c5 100644 --- a/test/mongol_paragraph_test.dart +++ b/test/mongol_paragraph_test.dart @@ -5,6 +5,8 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:mongol/src/base/mongol_paragraph.dart'; import 'package:mongol/src/base/mongol_text_align.dart'; +// ignore_for_file: todo + void main() { MongolParagraph _getParagraph( String text, diff --git a/test/mongol_render_editable_test.dart b/test/mongol_render_editable_test.dart index f1b11c0..ed2dbca 100644 --- a/test/mongol_render_editable_test.dart +++ b/test/mongol_render_editable_test.dart @@ -21,6 +21,8 @@ import 'rendering/mock_canvas.dart'; import 'rendering/recording_canvas.dart'; import 'rendering/rendering_tester.dart'; +// ignore_for_file: deprecated_member_use_from_same_package + class FakeEditableTextState with TextSelectionDelegate { @override TextEditingValue textEditingValue = TextEditingValue.empty; diff --git a/test/mongol_render_paragraph_test.dart b/test/mongol_render_paragraph_test.dart deleted file mode 100644 index 8d0e857..0000000 --- a/test/mongol_render_paragraph_test.dart +++ /dev/null @@ -1,657 +0,0 @@ -// Copyright 2014 The Flutter Authors. -// Copyright 2020 Suragch. -// All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import 'dart:ui' as ui show TextBox; - -import 'package:flutter/gestures.dart'; -import 'package:flutter/rendering.dart'; -import 'package:flutter/widgets.dart'; -import 'package:flutter/services.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:mongol/mongol.dart'; -import 'package:mongol/src/text/mongol_render_paragraph.dart'; - -import 'rendering_tester.dart'; - -const String _kText = "I polished up that handle so carefullee\nThat now I am the Ruler of the Queen's Navee!"; - -// // A subclass of MongolRenderParagraph that returns an empty list in getBoxesForSelection -// // for a given TextSelection. -// // This is intended to simulate SkParagraph's implementation of Paragraph.getBoxesForRange, -// // which may return an empty list in some situations where Libtxt would return a list -// // containing an empty box. -// class RenderParagraphWithEmptySelectionBoxList extends MongolRenderParagraph { -// RenderParagraphWithEmptySelectionBoxList( -// TextSpan text, { -// required TextDirection textDirection, -// required this.emptyListSelection, -// }) : super(text); - -// TextSelection emptyListSelection; - -// @override -// List getBoxesForSelection(TextSelection selection) { -// if (selection == emptyListSelection) { -// return []; -// } -// return super.getBoxesForSelection(selection); -// } -// } - -// // A subclass of RenderParagraph that returns an empty list in getBoxesForSelection -// // for a selection representing a WidgetSpan. -// // This is intended to simulate how SkParagraph's implementation of Paragraph.getBoxesForRange -// // can return an empty list for a WidgetSpan with empty dimensions. -// class RenderParagraphWithEmptyBoxListForWidgetSpan extends RenderParagraph { -// RenderParagraphWithEmptyBoxListForWidgetSpan( -// InlineSpan text, { -// required List children, -// required TextDirection textDirection, -// }) : super(text, children: children, textDirection: textDirection); - -// @override -// List getBoxesForSelection(TextSelection selection) { -// if (text.getSpanForPosition(selection.base) is WidgetSpan) { -// return []; -// } -// return super.getBoxesForSelection(selection); -// } -// } - -void main() { - - testWidgets('MongolRenderParagraph has correct instrinsic width', - (WidgetTester tester) async { - final paragraph = MongolRenderParagraph(TextSpan(text: 'A string')); - - final textHeight = paragraph.getMaxIntrinsicHeight(double.infinity); - final oneLineTextWidth = paragraph.getMinIntrinsicWidth(double.infinity); - final constrainedHeight = textHeight * 0.9; - final wrappedTextHeight = paragraph.getMinIntrinsicHeight(double.infinity); - final twoLinesTextWidth = paragraph.getMinIntrinsicWidth(constrainedHeight); - - expect(wrappedTextHeight, greaterThan(0.0)); - expect(wrappedTextHeight, lessThan(textHeight)); - expect(oneLineTextWidth, lessThan(twoLinesTextWidth)); - expect(twoLinesTextWidth, lessThan(oneLineTextWidth * 3.0)); - expect(paragraph.getMaxIntrinsicWidth(double.infinity), - equals(oneLineTextWidth)); - expect(paragraph.getMaxIntrinsicWidth(constrainedHeight), - equals(twoLinesTextWidth)); - }); - - // test('getOffsetForCaret control test', () { - // final RenderParagraph paragraph = RenderParagraph( - // const TextSpan(text: _kText), - // textDirection: TextDirection.ltr, - // ); - // layout(paragraph); - - // const Rect caret = Rect.fromLTWH(0.0, 0.0, 2.0, 20.0); - - // final Offset offset5 = paragraph.getOffsetForCaret(const TextPosition(offset: 5), caret); - // expect(offset5.dx, greaterThan(0.0)); - - // final Offset offset25 = paragraph.getOffsetForCaret(const TextPosition(offset: 25), caret); - // expect(offset25.dx, greaterThan(offset5.dx)); - - // final Offset offset50 = paragraph.getOffsetForCaret(const TextPosition(offset: 50), caret); - // expect(offset50.dy, greaterThan(offset5.dy)); - // }); - - // test('getFullHeightForCaret control test', () { - // final RenderParagraph paragraph = RenderParagraph( - // const TextSpan(text: _kText,style: TextStyle(fontSize: 10.0)), - // textDirection: TextDirection.ltr, - // ); - // layout(paragraph); - - // final double height5 = paragraph.getFullHeightForCaret(const TextPosition(offset: 5))!; - // expect(height5, equals(10.0)); - // }); - - // test('getPositionForOffset control test', () { - // final RenderParagraph paragraph = RenderParagraph( - // const TextSpan(text: _kText), - // textDirection: TextDirection.ltr, - // ); - // layout(paragraph); - - // final TextPosition position20 = paragraph.getPositionForOffset(const Offset(20.0, 5.0)); - // expect(position20.offset, greaterThan(0.0)); - - // final TextPosition position40 = paragraph.getPositionForOffset(const Offset(40.0, 5.0)); - // expect(position40.offset, greaterThan(position20.offset)); - - // final TextPosition positionBelow = paragraph.getPositionForOffset(const Offset(5.0, 20.0)); - // expect(positionBelow.offset, greaterThan(position40.offset)); - // }, skip: isBrowser); // https://github.com/flutter/flutter/issues/61015 - - // test('getBoxesForSelection control test', () { - // final RenderParagraph paragraph = RenderParagraph( - // const TextSpan(text: _kText, style: TextStyle(fontSize: 10.0)), - // textDirection: TextDirection.ltr, - // ); - // layout(paragraph); - - // List boxes = paragraph.getBoxesForSelection( - // const TextSelection(baseOffset: 5, extentOffset: 25) - // ); - - // expect(boxes.length, equals(1)); - - // boxes = paragraph.getBoxesForSelection( - // const TextSelection(baseOffset: 25, extentOffset: 50) - // ); - - // expect(boxes.any((ui.TextBox box) => box.left == 250 && box.top == 0), isTrue); - // expect(boxes.any((ui.TextBox box) => box.right == 100 && box.top == 10), isTrue); - // }, skip: isBrowser); // https://github.com/flutter/flutter/issues/61016 - - // test('getWordBoundary control test', () { - // final RenderParagraph paragraph = RenderParagraph( - // const TextSpan(text: _kText), - // textDirection: TextDirection.ltr, - // ); - // layout(paragraph); - - // final TextRange range5 = paragraph.getWordBoundary(const TextPosition(offset: 5)); - // expect(range5.textInside(_kText), equals('polished')); - - // final TextRange range50 = paragraph.getWordBoundary(const TextPosition(offset: 50)); - // expect(range50.textInside(_kText), equals(' ')); - - // final TextRange range85 = paragraph.getWordBoundary(const TextPosition(offset: 75)); - // expect(range85.textInside(_kText), equals("Queen's")); - // }, skip: isBrowser); // https://github.com/flutter/flutter/issues/61017 - - // test('overflow test', () { - // final RenderParagraph paragraph = RenderParagraph( - // const TextSpan( - // text: 'This\n' // 4 characters * 10px font size = 40px width on the first line - // 'is a wrapping test. It should wrap at manual newlines, and if softWrap is true, also at spaces.', - // style: TextStyle(fontFamily: 'Ahem', fontSize: 10.0), - // ), - // textDirection: TextDirection.ltr, - // maxLines: 1, - // softWrap: true, - // ); - - // void relayoutWith({ - // int? maxLines, - // required bool softWrap, - // required TextOverflow overflow, - // }) { - // paragraph - // ..maxLines = maxLines - // ..softWrap = softWrap - // ..overflow = overflow; - // pumpFrame(); - // } - - // // Lay out in a narrow box to force wrapping. - // layout(paragraph, constraints: const BoxConstraints(maxWidth: 50.0)); // enough to fit "This" but not "This is" - // final double lineHeight = paragraph.size.height; - - // relayoutWith(maxLines: 3, softWrap: true, overflow: TextOverflow.clip); - // expect(paragraph.size.height, equals(3 * lineHeight)); - - // relayoutWith(maxLines: null, softWrap: true, overflow: TextOverflow.clip); - // expect(paragraph.size.height, greaterThan(5 * lineHeight)); - - // // Try again with ellipsis overflow. We can't test that the ellipsis are - // // drawn, but we can test the sizing. - // relayoutWith(maxLines: 1, softWrap: true, overflow: TextOverflow.ellipsis); - // expect(paragraph.size.height, equals(lineHeight)); - - // relayoutWith(maxLines: 3, softWrap: true, overflow: TextOverflow.ellipsis); - // expect(paragraph.size.height, equals(3 * lineHeight)); - - // // This is the one weird case. If maxLines is null, we would expect to allow - // // infinite wrapping. However, if we did, we'd never know when to append an - // // ellipsis, so this really means "append ellipsis as soon as we exceed the - // // width". - // relayoutWith(maxLines: null, softWrap: true, overflow: TextOverflow.ellipsis); - // expect(paragraph.size.height, equals(2 * lineHeight)); - - // // Now with no soft wrapping. - // relayoutWith(maxLines: 1, softWrap: false, overflow: TextOverflow.clip); - // expect(paragraph.size.height, equals(lineHeight)); - - // relayoutWith(maxLines: 3, softWrap: false, overflow: TextOverflow.clip); - // expect(paragraph.size.height, equals(2 * lineHeight)); - - // relayoutWith(maxLines: null, softWrap: false, overflow: TextOverflow.clip); - // expect(paragraph.size.height, equals(2 * lineHeight)); - - // relayoutWith(maxLines: 1, softWrap: false, overflow: TextOverflow.ellipsis); - // expect(paragraph.size.height, equals(lineHeight)); - - // relayoutWith(maxLines: 3, softWrap: false, overflow: TextOverflow.ellipsis); - // expect(paragraph.size.height, equals(3 * lineHeight)); - - // relayoutWith(maxLines: null, softWrap: false, overflow: TextOverflow.ellipsis); - // expect(paragraph.size.height, equals(2 * lineHeight)); - - // // Test presence of the fade effect. - // relayoutWith(maxLines: 3, softWrap: true, overflow: TextOverflow.fade); - // expect(paragraph.debugHasOverflowShader, isTrue); - - // // Change back to ellipsis and check that the fade shader is cleared. - // relayoutWith(maxLines: 3, softWrap: true, overflow: TextOverflow.ellipsis); - // expect(paragraph.debugHasOverflowShader, isFalse); - - // relayoutWith(maxLines: 100, softWrap: true, overflow: TextOverflow.fade); - // expect(paragraph.debugHasOverflowShader, isFalse); - // }, skip: isBrowser); // https://github.com/flutter/flutter/issues/61018 - - // test('maxLines', () { - // final RenderParagraph paragraph = RenderParagraph( - // const TextSpan( - // text: "How do you write like you're running out of time? Write day and night like you're running out of time?", - // // 0123456789 0123456789 012 345 0123456 012345 01234 012345678 012345678 0123 012 345 0123456 012345 01234 - // // 0 1 2 3 4 5 6 7 8 9 10 11 12 - // style: TextStyle(fontFamily: 'Ahem', fontSize: 10.0), - // ), - // textDirection: TextDirection.ltr, - // ); - // layout(paragraph, constraints: const BoxConstraints(maxWidth: 100.0)); - // void layoutAt(int? maxLines) { - // paragraph.maxLines = maxLines; - // pumpFrame(); - // } - - // layoutAt(null); - // expect(paragraph.size.height, 130.0); - - // layoutAt(1); - // expect(paragraph.size.height, 10.0); - - // layoutAt(2); - // expect(paragraph.size.height, 20.0); - - // layoutAt(3); - // expect(paragraph.size.height, 30.0); - // }, skip: isBrowser); // https://github.com/flutter/flutter/issues/61018 - - // test('changing color does not do layout', () { - // final RenderParagraph paragraph = RenderParagraph( - // const TextSpan( - // text: 'Hello', - // style: TextStyle(color: Color(0xFF000000)), - // ), - // textDirection: TextDirection.ltr, - // ); - // layout(paragraph, constraints: const BoxConstraints(maxWidth: 100.0), phase: EnginePhase.paint); - // expect(paragraph.debugNeedsLayout, isFalse); - // expect(paragraph.debugNeedsPaint, isFalse); - // paragraph.text = const TextSpan( - // text: 'Hello World', - // style: TextStyle(color: Color(0xFF000000)), - // ); - // expect(paragraph.debugNeedsLayout, isTrue); - // expect(paragraph.debugNeedsPaint, isFalse); - // pumpFrame(phase: EnginePhase.paint); - // expect(paragraph.debugNeedsLayout, isFalse); - // expect(paragraph.debugNeedsPaint, isFalse); - // paragraph.text = const TextSpan( - // text: 'Hello World', - // style: TextStyle(color: Color(0xFFFFFFFF)), - // ); - // expect(paragraph.debugNeedsLayout, isFalse); - // expect(paragraph.debugNeedsPaint, isTrue); - // pumpFrame(phase: EnginePhase.paint); - // expect(paragraph.debugNeedsLayout, isFalse); - // expect(paragraph.debugNeedsPaint, isFalse); - // }); - - // test('nested TextSpans in paragraph handle textScaleFactor correctly.', () { - // const TextSpan testSpan = TextSpan( - // text: 'a', - // style: TextStyle( - // fontSize: 10.0, - // ), - // children: [ - // TextSpan( - // text: 'b', - // children: [ - // TextSpan(text: 'c'), - // ], - // style: TextStyle( - // fontSize: 20.0, - // ), - // ), - // TextSpan( - // text: 'd', - // ), - // ], - // ); - // final RenderParagraph paragraph = RenderParagraph( - // testSpan, - // textDirection: TextDirection.ltr, - // textScaleFactor: 1.3, - // ); - // paragraph.layout(const BoxConstraints()); - // // anyOf is needed here because Linux and Mac have different text - // // rendering widths in tests. - // // TODO(gspencergoog): Figure out why this is, and fix it. https://github.com/flutter/flutter/issues/12357 - // expect(paragraph.size.width, anyOf(79.0, 78.0)); - // expect(paragraph.size.height, 26.0); - - // // Test the sizes of nested spans. - // final String text = testSpan.toStringDeep(); - // final List boxes = [ - // for (int i = 0; i < text.length; ++i) - // ...paragraph.getBoxesForSelection( - // TextSelection(baseOffset: i, extentOffset: i + 1) - // ), - // ]; - // expect(boxes.length, equals(4)); - - // // anyOf is needed here and below because Linux and Mac have different text - // // rendering widths in tests. - // // TODO(gspencergoog): Figure out why this is, and fix it. https://github.com/flutter/flutter/issues/12357 - // expect(boxes[0].toRect().width, anyOf(14.0, 13.0)); - // expect(boxes[0].toRect().height, moreOrLessEquals(13.0, epsilon: 0.0001)); - // expect(boxes[1].toRect().width, anyOf(27.0, 26.0)); - // expect(boxes[1].toRect().height, moreOrLessEquals(26.0, epsilon: 0.0001)); - // expect(boxes[2].toRect().width, anyOf(27.0, 26.0)); - // expect(boxes[2].toRect().height, moreOrLessEquals(26.0, epsilon: 0.0001)); - // expect(boxes[3].toRect().width, anyOf(14.0, 13.0)); - // expect(boxes[3].toRect().height, moreOrLessEquals(13.0, epsilon: 0.0001)); - // }, skip: isBrowser); // https://github.com/flutter/flutter/issues/61016 - - // test('toStringDeep', () { - // final RenderParagraph paragraph = RenderParagraph( - // const TextSpan(text: _kText), - // textDirection: TextDirection.ltr, - // locale: const Locale('ja', 'JP'), - // ); - // expect(paragraph, hasAGoodToStringDeep); - // expect( - // paragraph.toStringDeep(minLevel: DiagnosticLevel.info), - // equalsIgnoringHashCodes( - // 'RenderParagraph#00000 NEEDS-LAYOUT NEEDS-PAINT DETACHED\n' - // ' │ parentData: MISSING\n' - // ' │ constraints: MISSING\n' - // ' │ size: MISSING\n' - // ' │ textAlign: start\n' - // ' │ textDirection: ltr\n' - // ' │ softWrap: wrapping at box width\n' - // ' │ overflow: clip\n' - // ' │ locale: ja_JP\n' - // ' │ maxLines: unlimited\n' - // ' ╘═╦══ text ═══\n' - // ' ║ TextSpan:\n' - // ' ║ "I polished up that handle so carefullee\n' - // ' ║ That now I am the Ruler of the Queen\'s Navee!"\n' - // ' ╚═══════════\n' - // ), - // ); - // }); - - // test('locale setter', () { - // // Regression test for https://github.com/flutter/flutter/issues/18175 - - // final RenderParagraph paragraph = RenderParagraph( - // const TextSpan(text: _kText), - // locale: const Locale('zh', 'HK'), - // textDirection: TextDirection.ltr, - // ); - // expect(paragraph.locale, const Locale('zh', 'HK')); - - // paragraph.locale = const Locale('ja', 'JP'); - // expect(paragraph.locale, const Locale('ja', 'JP')); - // }); - - // test('inline widgets test', () { - // const TextSpan text = TextSpan( - // text: 'a', - // style: TextStyle(fontSize: 10.0), - // children: [ - // WidgetSpan(child: SizedBox(width: 21, height: 21)), - // WidgetSpan(child: SizedBox(width: 21, height: 21)), - // TextSpan(text: 'a'), - // WidgetSpan(child: SizedBox(width: 21, height: 21)), - // ], - // ); - // // Fake the render boxes that correspond to the WidgetSpans. We use - // // RenderParagraph to reduce dependencies this test has. - // final List renderBoxes = [ - // RenderParagraph(const TextSpan(text: 'b'), textDirection: TextDirection.ltr), - // RenderParagraph(const TextSpan(text: 'b'), textDirection: TextDirection.ltr), - // RenderParagraph(const TextSpan(text: 'b'), textDirection: TextDirection.ltr), - // ]; - - // final RenderParagraph paragraph = RenderParagraph( - // text, - // textDirection: TextDirection.ltr, - // children: renderBoxes, - // ); - // layout(paragraph, constraints: const BoxConstraints(maxWidth: 100.0)); - - // final List boxes = paragraph.getBoxesForSelection( - // const TextSelection(baseOffset: 0, extentOffset: 8) - // ); - - // expect(boxes.length, equals(5)); - // expect(boxes[0], const TextBox.fromLTRBD(0.0, 4.0, 10.0, 14.0, TextDirection.ltr)); - // expect(boxes[1], const TextBox.fromLTRBD(10.0, 0.0, 24.0, 14.0, TextDirection.ltr)); - // expect(boxes[2], const TextBox.fromLTRBD(24.0, 0.0, 38.0, 14.0, TextDirection.ltr)); - // expect(boxes[3], const TextBox.fromLTRBD(38.0, 4.0, 48.0, 14.0, TextDirection.ltr)); - // expect(boxes[4], const TextBox.fromLTRBD(48.0, 0.0, 62.0, 14.0, TextDirection.ltr)); - // }, skip: isBrowser); // https://github.com/flutter/flutter/issues/61020 - - // test('can compute IntrinsicHeight for widget span', () { - // // Regression test for https://github.com/flutter/flutter/issues/59316 - // const double screenWidth = 100.0; - // const String sentence = 'one two'; - // List renderBoxes = [ - // RenderParagraph(const TextSpan(text: sentence), textDirection: TextDirection.ltr), - // ]; - // RenderParagraph paragraph = RenderParagraph( - // const TextSpan( - // children: [ - // WidgetSpan(child: Text(sentence)) - // ] - // ), - // textScaleFactor: 1.0, - // children: renderBoxes, - // textDirection: TextDirection.ltr, - // ); - // layout(paragraph, constraints: const BoxConstraints(maxWidth: screenWidth)); - // final double singleLineHeight = paragraph.computeMaxIntrinsicHeight(screenWidth); - // expect(singleLineHeight, 14.0); - - // pumpFrame(); - // renderBoxes = [ - // RenderParagraph(const TextSpan(text: sentence), textDirection: TextDirection.ltr), - // ]; - // paragraph = RenderParagraph( - // const TextSpan( - // children: [ - // WidgetSpan(child: Text(sentence)) - // ] - // ), - // textScaleFactor: 2.0, - // children: renderBoxes, - // textDirection: TextDirection.ltr, - // ); - - // layout(paragraph, constraints: const BoxConstraints(maxWidth: screenWidth)); - // final double maxIntrinsicHeight = paragraph.computeMaxIntrinsicHeight(screenWidth); - // final double minIntrinsicHeight = paragraph.computeMinIntrinsicHeight(screenWidth); - // // intrinsicHeight = singleLineHeight * textScaleFactor * two lines. - // expect(maxIntrinsicHeight, singleLineHeight * 2.0 * 2); - // expect(maxIntrinsicHeight, minIntrinsicHeight); - // }, skip: isBrowser); // https://github.com/flutter/flutter/issues/61020 - - // test('can compute IntrinsicWidth for widget span', () { - // // Regression test for https://github.com/flutter/flutter/issues/59316 - // const double screenWidth = 1000.0; - // const double fixedHeight = 1000.0; - // const String sentence = 'one two'; - // List renderBoxes = [ - // RenderParagraph(const TextSpan(text: sentence), textDirection: TextDirection.ltr), - // ]; - // RenderParagraph paragraph = RenderParagraph( - // const TextSpan( - // children: [ - // WidgetSpan(child: Text(sentence)) - // ] - // ), - // textScaleFactor: 1.0, - // children: renderBoxes, - // textDirection: TextDirection.ltr, - // ); - // layout(paragraph, constraints: const BoxConstraints(maxWidth: screenWidth)); - // final double widthForOneLine = paragraph.computeMaxIntrinsicWidth(fixedHeight); - // expect(widthForOneLine, 98.0); - - // pumpFrame(); - // renderBoxes = [ - // RenderParagraph(const TextSpan(text: sentence), textDirection: TextDirection.ltr), - // ]; - // paragraph = RenderParagraph( - // const TextSpan( - // children: [ - // WidgetSpan(child: Text(sentence)) - // ] - // ), - // textScaleFactor: 2.0, - // children: renderBoxes, - // textDirection: TextDirection.ltr, - // ); - - // layout(paragraph, constraints: const BoxConstraints(maxWidth: screenWidth)); - // final double maxIntrinsicWidth = paragraph.computeMaxIntrinsicWidth(fixedHeight); - // // maxIntrinsicWidth = widthForOneLine * textScaleFactor - // expect(maxIntrinsicWidth, widthForOneLine * 2.0); - // }, skip: isBrowser); // https://github.com/flutter/flutter/issues/61020 - - // test('inline widgets multiline test', () { - // const TextSpan text = TextSpan( - // text: 'a', - // style: TextStyle(fontSize: 10.0), - // children: [ - // WidgetSpan(child: SizedBox(width: 21, height: 21)), - // WidgetSpan(child: SizedBox(width: 21, height: 21)), - // TextSpan(text: 'a'), - // WidgetSpan(child: SizedBox(width: 21, height: 21)), - // WidgetSpan(child: SizedBox(width: 21, height: 21)), - // WidgetSpan(child: SizedBox(width: 21, height: 21)), - // WidgetSpan(child: SizedBox(width: 21, height: 21)), - // WidgetSpan(child: SizedBox(width: 21, height: 21)), - // ], - // ); - // // Fake the render boxes that correspond to the WidgetSpans. We use - // // RenderParagraph to reduce dependencies this test has. - // final List renderBoxes = [ - // RenderParagraph(const TextSpan(text: 'b'), textDirection: TextDirection.ltr), - // RenderParagraph(const TextSpan(text: 'b'), textDirection: TextDirection.ltr), - // RenderParagraph(const TextSpan(text: 'b'), textDirection: TextDirection.ltr), - // RenderParagraph(const TextSpan(text: 'b'), textDirection: TextDirection.ltr), - // RenderParagraph(const TextSpan(text: 'b'), textDirection: TextDirection.ltr), - // RenderParagraph(const TextSpan(text: 'b'), textDirection: TextDirection.ltr), - // RenderParagraph(const TextSpan(text: 'b'), textDirection: TextDirection.ltr), - // ]; - - // final RenderParagraph paragraph = RenderParagraph( - // text, - // textDirection: TextDirection.ltr, - // children: renderBoxes, - // ); - // layout(paragraph, constraints: const BoxConstraints(maxWidth: 50.0)); - - // final List boxes = paragraph.getBoxesForSelection( - // const TextSelection(baseOffset: 0, extentOffset: 12) - // ); - - // expect(boxes.length, equals(9)); - // expect(boxes[0], const TextBox.fromLTRBD(0.0, 4.0, 10.0, 14.0, TextDirection.ltr)); - // expect(boxes[1], const TextBox.fromLTRBD(10.0, 0.0, 24.0, 14.0, TextDirection.ltr)); - // expect(boxes[2], const TextBox.fromLTRBD(24.0, 0.0, 38.0, 14.0, TextDirection.ltr)); - // expect(boxes[3], const TextBox.fromLTRBD(38.0, 4.0, 48.0, 14.0, TextDirection.ltr)); - // // Wraps - // expect(boxes[4], const TextBox.fromLTRBD(0.0, 14.0, 14.0, 28.0 , TextDirection.ltr)); - // expect(boxes[5], const TextBox.fromLTRBD(14.0, 14.0, 28.0, 28.0, TextDirection.ltr)); - // expect(boxes[6], const TextBox.fromLTRBD(28.0, 14.0, 42.0, 28.0, TextDirection.ltr)); - // // Wraps - // expect(boxes[7], const TextBox.fromLTRBD(0.0, 28.0, 14.0, 42.0, TextDirection.ltr)); - // expect(boxes[8], const TextBox.fromLTRBD(14.0, 28.0, 28.0, 42.0 , TextDirection.ltr)); - // }, skip: isBrowser); // https://github.com/flutter/flutter/issues/61020 - - // test('Supports gesture recognizer semantics', () { - // final RenderParagraph paragraph = RenderParagraph( - // TextSpan(text: _kText, children: [ - // TextSpan(text: 'one', recognizer: TapGestureRecognizer()..onTap = () {}), - // TextSpan(text: 'two', recognizer: LongPressGestureRecognizer()..onLongPress = () {}), - // TextSpan(text: 'three', recognizer: DoubleTapGestureRecognizer()..onDoubleTap = () {}), - // ]), - // textDirection: TextDirection.rtl, - // ); - // layout(paragraph); - - // paragraph.assembleSemanticsNode(SemanticsNode(), SemanticsConfiguration(), []); - // }, skip: isBrowser); // https://github.com/flutter/flutter/issues/61020 - - // test('Asserts on unsupported gesture recognizer', () { - // final RenderParagraph paragraph = RenderParagraph( - // TextSpan(text: _kText, children: [ - // TextSpan(text: 'three', recognizer: MultiTapGestureRecognizer()..onTap = (int id) {}), - // ]), - // textDirection: TextDirection.rtl, - // ); - // layout(paragraph); - - // bool failed = false; - // try { - // paragraph.assembleSemanticsNode(SemanticsNode(), SemanticsConfiguration(), []); - // } on AssertionError catch (e) { - // failed = true; - // expect(e.message, 'MultiTapGestureRecognizer is not supported.'); - // } - // expect(failed, true); - // }, skip: isBrowser); // https://github.com/flutter/flutter/issues/61020 - - // test('assembleSemanticsNode handles text spans that do not yield selection boxes', () { - // final RenderParagraph paragraph = RenderParagraphWithEmptySelectionBoxList( - // TextSpan(text: '', children: [ - // TextSpan(text: 'A', recognizer: TapGestureRecognizer()..onTap = () {}), - // TextSpan(text: 'B', recognizer: TapGestureRecognizer()..onTap = () {}), - // TextSpan(text: 'C', recognizer: TapGestureRecognizer()..onTap = () {}), - // ]), - // textDirection: TextDirection.rtl, - // emptyListSelection: const TextSelection(baseOffset: 0, extentOffset: 1), - // ); - // layout(paragraph); - - // final SemanticsNode node = SemanticsNode(); - // paragraph.assembleSemanticsNode(node, SemanticsConfiguration(), []); - // expect(node.childrenCount, 2); - // }, skip: isBrowser); // https://github.com/flutter/flutter/issues/61020 - - // test('assembleSemanticsNode handles empty WidgetSpans that do not yield selection boxes', () { - // final TextSpan text = TextSpan(text: '', children: [ - // TextSpan(text: 'A', recognizer: TapGestureRecognizer()..onTap = () {}), - // const WidgetSpan(child: SizedBox(width: 0, height: 0)), - // TextSpan(text: 'C', recognizer: TapGestureRecognizer()..onTap = () {}), - // ]); - // final List renderBoxes = [ - // RenderParagraph(const TextSpan(text: 'b'), textDirection: TextDirection.ltr), - // ]; - // final RenderParagraph paragraph = RenderParagraphWithEmptyBoxListForWidgetSpan( - // text, - // children: renderBoxes, - // textDirection: TextDirection.ltr, - // ); - // layout(paragraph); - - // final SemanticsNode node = SemanticsNode(); - // paragraph.assembleSemanticsNode(node, SemanticsConfiguration(), []); - // expect(node.childrenCount, 2); - // }, skip: isBrowser); // https://github.com/flutter/flutter/issues/61020 -} \ No newline at end of file diff --git a/test/mongol_text_field_test.dart b/test/mongol_text_field_test.dart index 5129d88..afec857 100644 --- a/test/mongol_text_field_test.dart +++ b/test/mongol_text_field_test.dart @@ -5,6 +5,7 @@ // found in the LICENSE file. // ignore_for_file: omit_local_variable_types +// ignore_for_file: todo @TestOn('!chrome') import 'dart:ui' as ui show window; @@ -175,23 +176,23 @@ void main() { await Clipboard.setData(const ClipboardData(text: 'Clipboard data')); }); - final Key textFieldKey = UniqueKey(); - Widget textFieldBuilder({ - int? maxLines = 1, - int? minLines, - }) { - return boilerplate( - child: MongolTextField( - key: textFieldKey, - style: const TextStyle(color: Colors.black, fontSize: 34.0), - maxLines: maxLines, - minLines: minLines, - decoration: const InputDecoration( - hintText: 'Placeholder', - ), - ), - ); - } + // final Key textFieldKey = UniqueKey(); + // Widget textFieldBuilder({ + // int? maxLines = 1, + // int? minLines, + // }) { + // return boilerplate( + // child: MongolTextField( + // key: textFieldKey, + // style: const TextStyle(color: Colors.black, fontSize: 34.0), + // maxLines: maxLines, + // minLines: minLines, + // decoration: const InputDecoration( + // hintText: 'Placeholder', + // ), + // ), + // ); + // } // testMongolWidgets('can use the desktop cut/copy/paste buttons on Mac', (MongolWidgetTester tester) async { // final controller = TextEditingController( diff --git a/test/rendering/mock_canvas.dart b/test/rendering/mock_canvas.dart index 67b4696..50abaf7 100644 --- a/test/rendering/mock_canvas.dart +++ b/test/rendering/mock_canvas.dart @@ -4,6 +4,7 @@ // ignore_for_file: omit_local_variable_types // ignore_for_file: curly_braces_in_flow_control_structures +// ignore_for_file: todo import 'dart:ui' as ui show Paragraph, Image; diff --git a/test/rendering/recording_canvas.dart b/test/rendering/recording_canvas.dart index a137b12..7b7ccc8 100644 --- a/test/rendering/recording_canvas.dart +++ b/test/rendering/recording_canvas.dart @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. - +// ignore_for_file: todo import 'package:flutter/foundation.dart'; import 'package:flutter/rendering.dart'; diff --git a/test/text_test.dart b/test/text_test.dart index 97a5848..c950b59 100644 --- a/test/text_test.dart +++ b/test/text_test.dart @@ -4,6 +4,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +// ignore_for_file: todo + import 'package:flutter_test/flutter_test.dart'; import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; diff --git a/test/widgets/_binding_io.dart b/test/widgets/_binding_io.dart index cde0c0c..8c87d94 100644 --- a/test/widgets/_binding_io.dart +++ b/test/widgets/_binding_io.dart @@ -6,6 +6,7 @@ // ignore_for_file: omit_local_variable_types // ignore_for_file: curly_braces_in_flow_control_structures +// ignore_for_file: todo import 'dart:async'; import 'dart:convert'; diff --git a/test/widgets/binding.dart b/test/widgets/binding.dart index 0a5cf4c..8d7d1cf 100644 --- a/test/widgets/binding.dart +++ b/test/widgets/binding.dart @@ -7,6 +7,7 @@ // ignore_for_file: omit_local_variable_types // ignore_for_file: curly_braces_in_flow_control_structures // ignore_for_file: use_function_type_syntax_for_parameters +// ignore_for_file: todo import 'dart:async'; import 'dart:ui' as ui; diff --git a/test/widgets/mongol_widget_tester.dart b/test/widgets/mongol_widget_tester.dart index 4ac1089..cbe79cf 100644 --- a/test/widgets/mongol_widget_tester.dart +++ b/test/widgets/mongol_widget_tester.dart @@ -455,7 +455,7 @@ class MongolWidgetTester extends WidgetController /// * Expose a [Future] in your application code that signals the readiness of /// your widget tree, then await that future inside [callback]. Future runAsync( - Future callback(), { + Future Function() callback, { Duration additionalTime = const Duration(milliseconds: 1000), }) => binding.runAsync(callback, additionalTime: additionalTime);