Skip to content

Commit

Permalink
fix out of range error in end index
Browse files Browse the repository at this point in the history
  • Loading branch information
Piinks committed Feb 15, 2024
1 parent 8743183 commit 1e68532
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 3 deletions.
5 changes: 2 additions & 3 deletions packages/flutter_test/lib/src/controller.dart
Original file line number Diff line number Diff line change
Expand Up @@ -289,7 +289,7 @@ class SemanticsController {
'Traversal: [\n ${traversal.join('\n ')}\n]');
}

int endIndex;
int? endIndex;
if (end != null) {
node = find(end);
endIndex = traversal.indexOf(node);
Expand All @@ -298,8 +298,6 @@ class SemanticsController {
node = endNode.evaluate().single;
endIndex = traversal.indexOf(node);
errorString = endNode.toString(describeSelf: true);
} else {
endIndex = traversal.length - 1;
}
if (endIndex == -1) {
throw StateError(
Expand All @@ -308,6 +306,7 @@ class SemanticsController {
'Expected End Node: $node\n\n'
'Traversal: [\n ${traversal.join('\n ')}\n]');
}
endIndex ??= traversal.length - 1;

return traversal.getRange(startIndex, endIndex + 1);
}
Expand Down
12 changes: 12 additions & 0 deletions packages/flutter_test/test/controller_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -920,6 +920,18 @@ void main() {
orderedEquals(expectedMatchers));
});

testWidgets('simulatedAccessibilityTraversal end Index supports empty traversal', (WidgetTester tester) async {
await tester.pumpWidget(const MaterialApp(
home: Center(
child: Column(), // No nodes!
),
));
expect(
tester.semantics.simulatedAccessibilityTraversal().map((SemanticsNode node) => node.label),
<String>[],
);
});

testWidgets('starts traversal at semantics node for `startNode`', (WidgetTester tester) async {
await tester.pumpWidget(MaterialApp(
home: Center(
Expand Down

0 comments on commit 1e68532

Please sign in to comment.