diff --git a/dev/bots/check_code_samples.dart b/dev/bots/check_code_samples.dart index a357d5c103..84900f157c 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.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', 'examples/api/test/material/flexible_space_bar/flexible_space_bar.0_test.dart', diff --git a/examples/api/test/material/selection_container/selection_container.0_test.dart b/examples/api/test/material/selection_container/selection_container.0_test.dart new file mode 100644 index 0000000000..e285c20496 --- /dev/null +++ b/examples/api/test/material/selection_container/selection_container.0_test.dart @@ -0,0 +1,62 @@ +// 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.0.dart' as example; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + testWidgets('The SelectionContainer should transform the partial selection into an all selection', (WidgetTester tester) async { + await tester.pumpWidget( + const example.SelectionContainerExampleApp(), + ); + + expect(find.widgetWithText(AppBar, 'SelectionContainer Sample'), findsOne); + + final RenderParagraph paragraph1 = tester.renderObject( + find.descendant( + of: find.text('Row 1'), + matching: find.byType(RichText), + ), + ); + final RenderParagraph paragraph2 = tester.renderObject( + find.descendant( + of: find.text('Row 2'), + matching: find.byType(RichText), + ), + ); + final RenderParagraph paragraph3 = tester.renderObject( + find.descendant( + of: find.text('Row 3'), + matching: find.byType(RichText), + ), + ); + final Rect paragraph1Rect = tester.getRect(find.text('Row 1')); + final TestGesture gesture = await tester.startGesture( + paragraph1Rect.topLeft, + 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: 5), + ); + expect( + paragraph2.selections.first, + const TextSelection(baseOffset: 0, extentOffset: 5), + ); + expect( + paragraph3.selections.first, + const TextSelection(baseOffset: 0, extentOffset: 5), + ); + + await gesture.up(); + }); +}