Add tests for animated_switcher.0.dart API example. (#149180)
This PR contributes to https://github.com/flutter/flutter/issues/130459 ### Description - Adds tests for `examples/api/lib/widgets/animated_switcher/animated_switcher.0.dart`
This commit is contained in:
committed by
GitHub
parent
35ae519140
commit
60d32e4534
@@ -23,7 +23,8 @@ class AnimatedSwitcherExample extends StatefulWidget {
|
||||
const AnimatedSwitcherExample({super.key});
|
||||
|
||||
@override
|
||||
State<AnimatedSwitcherExample> createState() => _AnimatedSwitcherExampleState();
|
||||
State<AnimatedSwitcherExample> createState() =>
|
||||
_AnimatedSwitcherExampleState();
|
||||
}
|
||||
|
||||
class _AnimatedSwitcherExampleState extends State<AnimatedSwitcherExample> {
|
||||
|
||||
@@ -0,0 +1,99 @@
|
||||
// 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/material.dart';
|
||||
import 'package:flutter_api_samples/widgets/animated_switcher/animated_switcher.0.dart'
|
||||
as example;
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
|
||||
void main() {
|
||||
testWidgets('Increments counter on button tap', (WidgetTester tester) async {
|
||||
await tester.pumpWidget(
|
||||
const example.AnimatedSwitcherExampleApp(),
|
||||
);
|
||||
|
||||
int counter = 0;
|
||||
|
||||
expect(find.text('$counter'), findsOneWidget);
|
||||
|
||||
while (counter < 10) {
|
||||
// Tap on the button to increment the counter.
|
||||
await tester.tap(
|
||||
find.ancestor(
|
||||
of: find.text('Increment'),
|
||||
matching: find.byType(ElevatedButton),
|
||||
),
|
||||
);
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
counter += 1;
|
||||
|
||||
expect(find.text('${counter - 1}'), findsNothing);
|
||||
expect(find.text('$counter'), findsOneWidget);
|
||||
}
|
||||
});
|
||||
|
||||
testWidgets('Animates counter change', (WidgetTester tester) async {
|
||||
await tester.pumpWidget(
|
||||
const example.AnimatedSwitcherExampleApp(),
|
||||
);
|
||||
|
||||
// The animation duration defined in the example app.
|
||||
const Duration animationDuration = Duration(milliseconds: 500);
|
||||
|
||||
final Finder zeroTransitionFinder = find.ancestor(
|
||||
of: find.text('0'),
|
||||
matching: find.byType(ScaleTransition),
|
||||
);
|
||||
final Finder oneTransitionFinder = find.ancestor(
|
||||
of: find.text('1'),
|
||||
matching: find.byType(ScaleTransition),
|
||||
);
|
||||
|
||||
expect(zeroTransitionFinder, findsOneWidget);
|
||||
ScaleTransition zeroTransition = tester.widget(zeroTransitionFinder);
|
||||
expect(zeroTransition.scale.value, equals(1.0));
|
||||
|
||||
expect(oneTransitionFinder, findsNothing);
|
||||
|
||||
// Tap on the button to increment the counter.
|
||||
await tester.tap(
|
||||
find.ancestor(
|
||||
of: find.text('Increment'),
|
||||
matching: find.byType(ElevatedButton),
|
||||
),
|
||||
);
|
||||
await tester.pump();
|
||||
|
||||
expect(zeroTransitionFinder, findsOneWidget);
|
||||
zeroTransition = tester.widget(zeroTransitionFinder);
|
||||
expect(zeroTransition.scale.value, equals(1.0));
|
||||
|
||||
expect(oneTransitionFinder, findsOneWidget);
|
||||
ScaleTransition oneTransition = tester.widget(oneTransitionFinder);
|
||||
expect(oneTransition.scale.value, equals(0.0));
|
||||
|
||||
// Advance animation to the middle.
|
||||
await tester.pump(animationDuration ~/ 2);
|
||||
|
||||
expect(zeroTransitionFinder, findsOneWidget);
|
||||
zeroTransition = tester.widget(zeroTransitionFinder);
|
||||
expect(zeroTransition.scale.value, equals(0.5));
|
||||
|
||||
expect(oneTransitionFinder, findsOneWidget);
|
||||
oneTransition = tester.widget(oneTransitionFinder);
|
||||
expect(oneTransition.scale.value, equals(0.5));
|
||||
|
||||
// Advance animation to the end.
|
||||
await tester.pump(animationDuration ~/ 2);
|
||||
|
||||
expect(zeroTransitionFinder, findsOneWidget);
|
||||
zeroTransition = tester.widget(zeroTransitionFinder);
|
||||
expect(zeroTransition.scale.value, equals(0.0));
|
||||
|
||||
expect(oneTransitionFinder, findsOneWidget);
|
||||
oneTransition = tester.widget(oneTransitionFinder);
|
||||
expect(oneTransition.scale.value, equals(1.0));
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user