| // 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 'dart:ui'; |
| |
| import 'package:flutter/material.dart'; |
| import 'package:flutter_test/flutter_test.dart'; |
| |
| import 'multi_view_testing.dart'; |
| |
| void main() { |
| testWidgets('can find nodes in an view when no view is specified', (WidgetTester tester) async { |
| final List<FlutterView> views = <FlutterView>[ |
| for (int i = 0; i < 3; i++) |
| FakeView(tester.view, viewId: i + 100) |
| ]; |
| await pumpViews(tester: tester, views: views); |
| |
| expect(find.semantics.byLabel('View0Child0'), findsOne); |
| expect(find.semantics.byLabel('View1Child1'), findsOne); |
| expect(find.semantics.byLabel('View2Child2'), findsOne); |
| }); |
| |
| testWidgets('can find nodes only in specified view', (WidgetTester tester) async { |
| final List<FlutterView> views = <FlutterView>[ |
| for (int i = 0; i < 3; i++) |
| FakeView(tester.view, viewId: i + 100) |
| ]; |
| await pumpViews(tester: tester, views: views); |
| |
| expect(find.semantics.byLabel('View0Child0', view: views[0]), findsOne); |
| expect(find.semantics.byLabel('View0Child0', view: views[1]), findsNothing); |
| expect(find.semantics.byLabel('View0Child0', view: views[2]), findsNothing); |
| |
| expect(find.semantics.byLabel('View1Child1', view: views[0]), findsNothing); |
| expect(find.semantics.byLabel('View1Child1', view: views[1]), findsOne); |
| expect(find.semantics.byLabel('View1Child1', view: views[2]), findsNothing); |
| |
| expect(find.semantics.byLabel('View2Child2', view: views[0]), findsNothing); |
| expect(find.semantics.byLabel('View2Child2', view: views[1]), findsNothing); |
| expect(find.semantics.byLabel('View2Child2', view: views[2]), findsOne); |
| }); |
| } |
| |
| Future<void> pumpViews({required WidgetTester tester, required List<FlutterView> views}) { |
| final List<Widget> viewWidgets = <Widget>[ |
| for (int i = 0; i < 3; i++) |
| View( |
| view: views[i], |
| child: Center( |
| child: Column( |
| children: <Widget>[ |
| for (int c = 0; c < 5; c++) |
| Semantics(container: true, child: Text('View${i}Child$c')), |
| ], |
| ), |
| ), |
| ), |
| ]; |
| |
| return tester.pumpWidget( |
| wrapWithView: false, |
| Directionality( |
| textDirection: TextDirection.ltr, |
| child: ViewCollection( |
| views: viewWidgets, |
| ), |
| ), |
| ); |
| } |