mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
114 lines
3.4 KiB
Dart
114 lines
3.4 KiB
Dart
// 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/rendering.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:sample_catalog/custom_semantics.dart' as custom_semantics show main;
|
|
import 'package:sample_catalog/custom_semantics.dart';
|
|
|
|
void main() {
|
|
testWidgets('custom_semantics sample smoke test', (WidgetTester tester) async {
|
|
// Turn on Semantics
|
|
final SemanticsHandle semanticsHandler = tester.binding.pipelineOwner.ensureSemantics();
|
|
final SemanticsOwner semanticsOwner = tester.binding.pipelineOwner.semanticsOwner;
|
|
|
|
// Build the sample app
|
|
custom_semantics.main();
|
|
await tester.pump();
|
|
|
|
// Verify it correctly exposes its semantics.
|
|
final SemanticsNode semantics = tester.getSemantics(find.byType(AdjustableDropdownListTile));
|
|
|
|
expectAdjustable(semantics,
|
|
hasIncreaseAction: true,
|
|
hasDecreaseAction: true,
|
|
label: 'Timeout',
|
|
decreasedValue: '5 seconds',
|
|
value: '15 seconds',
|
|
increasedValue: '30 seconds',
|
|
);
|
|
|
|
// Increase
|
|
semanticsOwner.performAction(semantics.id, SemanticsAction.increase);
|
|
await tester.pump();
|
|
|
|
expectAdjustable(semantics,
|
|
hasIncreaseAction: true,
|
|
hasDecreaseAction: true,
|
|
label: 'Timeout',
|
|
decreasedValue: '15 seconds',
|
|
value: '30 seconds',
|
|
increasedValue: '1 minute',
|
|
);
|
|
|
|
// Increase all the way to highest value
|
|
semanticsOwner.performAction(semantics.id, SemanticsAction.increase);
|
|
await tester.pump();
|
|
|
|
expectAdjustable(semantics,
|
|
hasIncreaseAction: false,
|
|
hasDecreaseAction: true,
|
|
label: 'Timeout',
|
|
decreasedValue: '30 seconds',
|
|
value: '1 minute',
|
|
);
|
|
|
|
// Decrease
|
|
semanticsOwner.performAction(semantics.id, SemanticsAction.decrease);
|
|
await tester.pump();
|
|
|
|
expectAdjustable(semantics,
|
|
hasIncreaseAction: true,
|
|
hasDecreaseAction: true,
|
|
label: 'Timeout',
|
|
decreasedValue: '15 seconds',
|
|
value: '30 seconds',
|
|
increasedValue: '1 minute',
|
|
);
|
|
|
|
// Decrease all the way to lowest value
|
|
semanticsOwner.performAction(semantics.id, SemanticsAction.decrease);
|
|
await tester.pump();
|
|
semanticsOwner.performAction(semantics.id, SemanticsAction.decrease);
|
|
await tester.pump();
|
|
semanticsOwner.performAction(semantics.id, SemanticsAction.decrease);
|
|
await tester.pump();
|
|
|
|
expectAdjustable(semantics,
|
|
hasIncreaseAction: true,
|
|
hasDecreaseAction: false,
|
|
label: 'Timeout',
|
|
value: '1 second',
|
|
increasedValue: '5 seconds',
|
|
);
|
|
|
|
// Clean-up
|
|
semanticsHandler.dispose();
|
|
});
|
|
}
|
|
|
|
void expectAdjustable(
|
|
SemanticsNode node, {
|
|
bool hasIncreaseAction = true,
|
|
bool hasDecreaseAction = true,
|
|
String label = '',
|
|
String decreasedValue = '',
|
|
String value = '',
|
|
String increasedValue = '',
|
|
}) {
|
|
final SemanticsData semanticsData = node.getSemanticsData();
|
|
|
|
int actions = 0;
|
|
if (hasIncreaseAction)
|
|
actions |= SemanticsAction.increase.index;
|
|
if (hasDecreaseAction)
|
|
actions |= SemanticsAction.decrease.index;
|
|
|
|
expect(semanticsData.actions, actions);
|
|
expect(semanticsData.label, label);
|
|
expect(semanticsData.decreasedValue, decreasedValue);
|
|
expect(semanticsData.value, value);
|
|
expect(semanticsData.increasedValue, increasedValue);
|
|
}
|