-
-
Notifications
You must be signed in to change notification settings - Fork 628
/
Copy pathcontroller_test.dart
49 lines (43 loc) · 1.75 KB
/
controller_test.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import 'package:flutter_slidable/src/controller.dart';
import 'package:flutter_test/flutter_test.dart';
void main() {
group('SlidableController', () {
test('Manually changing ratio, changes action pane type', () async {
final controller = SlidableController(const TestVSync());
final actionTypeLogs = <ActionPaneType>[];
final actionPaneType = controller.actionPaneType;
actionPaneType.addListener(() {
actionTypeLogs.add(actionPaneType.value);
});
expect(actionPaneType.value, ActionPaneType.none);
controller.ratio = 0.5;
expect(actionPaneType.value, ActionPaneType.start);
controller.ratio = 0;
expect(actionPaneType.value, ActionPaneType.none);
controller.ratio = -0.5;
expect(actionPaneType.value, ActionPaneType.end);
});
testWidgets('Acting on the animation, changes action pane type',
(tester) async {
TestWidgetsFlutterBinding.ensureInitialized();
final controller = SlidableController(const TestVSync());
final actionTypeLogs = <ActionPaneType>[];
final actionPaneType = controller.actionPaneType;
actionPaneType.addListener(() {
actionTypeLogs.add(actionPaneType.value);
});
controller.startActionPaneExtentRatio = 0.5;
controller.endActionPaneExtentRatio = 0.5;
expect(actionPaneType.value, ActionPaneType.none);
controller.openStartActionPane();
await tester.pumpAndSettle();
expect(actionPaneType.value, ActionPaneType.start);
controller.close();
await tester.pumpAndSettle();
expect(actionPaneType.value, ActionPaneType.none);
controller.openEndActionPane();
await tester.pumpAndSettle();
expect(actionPaneType.value, ActionPaneType.end);
});
});
}