From 5644c032b3889124363d4046bd6478626520764b Mon Sep 17 00:00:00 2001 From: Valentin Vignal <32538273+ValentinVignal@users.noreply.github.com> Date: Thu, 17 Oct 2024 00:59:38 +0800 Subject: [PATCH] Add test for `selection_container_disabled.0.dart` (#156934) Contributes to https://github.com/flutter/flutter/issues/130459 It adds a test for - `examples/api/test/material/selection_container/selection_container_disabled.0_test.dart` --- dev/bots/check_code_samples.dart | 1 - .../selection_container_disabled.0_test.dart | 76 +++++++++++++++++++ 2 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 examples/api/test/material/selection_container/selection_container_disabled.0_test.dart diff --git a/dev/bots/check_code_samples.dart b/dev/bots/check_code_samples.dart index f91e5adc7b..a357d5c103 100644 --- a/dev/bots/check_code_samples.dart +++ b/dev/bots/check_code_samples.dart @@ -312,7 +312,6 @@ final Set _knownMissingTests = { 'examples/api/test/material/bottom_app_bar/bottom_app_bar.2_test.dart', 'examples/api/test/material/bottom_app_bar/bottom_app_bar.1_test.dart', 'examples/api/test/material/selectable_region/selectable_region.0_test.dart', - 'examples/api/test/material/selection_container/selection_container_disabled.0_test.dart', 'examples/api/test/material/selection_container/selection_container.0_test.dart', 'examples/api/test/material/color_scheme/dynamic_content_color.0_test.dart', 'examples/api/test/material/platform_menu_bar/platform_menu_bar.0_test.dart', diff --git a/examples/api/test/material/selection_container/selection_container_disabled.0_test.dart b/examples/api/test/material/selection_container/selection_container_disabled.0_test.dart new file mode 100644 index 0000000000..226f4c2a6d --- /dev/null +++ b/examples/api/test/material/selection_container/selection_container_disabled.0_test.dart @@ -0,0 +1,76 @@ +// Copyright 2014 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/rendering.dart'; +import 'package:flutter_api_samples/material/selection_container/selection_container_disabled.0.dart' as example; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + testWidgets('A SelectionContainer.disabled should disable selections', (WidgetTester tester) async { + await tester.pumpWidget( + const example.SelectionContainerDisabledExampleApp(), + ); + + expect(find.widgetWithText(AppBar, 'SelectionContainer.disabled Sample'), findsOne); + + final RenderParagraph paragraph1 = tester.renderObject( + find.descendant( + of: find.text('Selectable text').first, + matching: find.byType(RichText), + ), + ); + final Rect paragraph1Rect = tester.getRect(find.text('Selectable text').first); + final TestGesture gesture = await tester.startGesture( + paragraph1Rect.centerLeft, + kind: PointerDeviceKind.mouse, + ); + addTearDown(gesture.removePointer); + await tester.pump(); + + await gesture.moveTo(paragraph1Rect.center); + await tester.pump(); + expect( + paragraph1.selections.first, + const TextSelection(baseOffset: 0, extentOffset: 7), + ); + + final RenderParagraph paragraph2 = tester.renderObject( + find.descendant( + of: find.text('Non-selectable text'), + matching: find.byType(RichText), + ), + ); + final Rect paragraph2Rect = tester.getRect(find.text('Non-selectable text')); + await gesture.moveTo(paragraph2Rect.center); + // Should select the rest of paragraph 1. + expect( + paragraph1.selections.first, + const TextSelection(baseOffset: 0, extentOffset: 15), + ); + // paragraph2 is in a disabled container. + expect(paragraph2.selections, isEmpty); + + final RenderParagraph paragraph3 = tester.renderObject( + find.descendant( + of: find.text('Selectable text').last, + matching: find.byType(RichText), + ), + ); + final Rect paragraph3Rect = tester.getRect(find.text('Selectable text').last); + await gesture.moveTo(paragraph3Rect.center); + expect( + paragraph1.selections.first, + const TextSelection(baseOffset: 0, extentOffset: 15), + ); + expect(paragraph2.selections, isEmpty); + expect( + paragraph3.selections.first, + const TextSelection(baseOffset: 0, extentOffset: 7), + ); + + await gesture.up(); + }); +}