gesture_detector_semantics_test.dart 2.77 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12
// Copyright 2017 The Chromium 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_test/flutter_test.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter/widgets.dart';

import 'semantics_tester.dart';

void main() {
  testWidgets('Vertical gesture detector has up/down actions', (WidgetTester tester) async {
13
    final SemanticsTester semantics = SemanticsTester(tester);
14 15

    int callCount = 0;
16
    final GlobalKey detectorKey = GlobalKey();
17 18

    await tester.pumpWidget(
19 20
      Center(
        child: GestureDetector(
21 22 23 24
          key: detectorKey,
          onVerticalDragStart: (DragStartDetails _) {
            callCount += 1;
          },
25
          child: Container(),
26 27 28 29 30
        ),
      )
    );

    expect(semantics, includesNodeWith(
31
        actions: <SemanticsAction>[SemanticsAction.scrollUp, SemanticsAction.scrollDown]),
32 33 34 35 36 37 38 39 40 41
    );

    final int detectorId = detectorKey.currentContext.findRenderObject().debugSemantics.id;
    tester.binding.pipelineOwner.semanticsOwner.performAction(detectorId, SemanticsAction.scrollLeft);
    tester.binding.pipelineOwner.semanticsOwner.performAction(detectorId, SemanticsAction.scrollRight);
    expect(callCount, 0);
    tester.binding.pipelineOwner.semanticsOwner.performAction(detectorId, SemanticsAction.scrollUp);
    expect(callCount, 1);
    tester.binding.pipelineOwner.semanticsOwner.performAction(detectorId, SemanticsAction.scrollDown);
    expect(callCount, 2);
42 43

    semantics.dispose();
44 45 46
  });

  testWidgets('Horizontal gesture detector has up/down actions', (WidgetTester tester) async {
47
    final SemanticsTester semantics = SemanticsTester(tester);
48 49

    int callCount = 0;
50
    final GlobalKey detectorKey = GlobalKey();
51 52

    await tester.pumpWidget(
53 54
        Center(
          child: GestureDetector(
55 56 57 58
            key: detectorKey,
            onHorizontalDragStart: (DragStartDetails _) {
              callCount += 1;
            },
59
            child: Container(),
60 61 62 63 64
          ),
        )
    );

    expect(semantics, includesNodeWith(
65
        actions: <SemanticsAction>[SemanticsAction.scrollLeft, SemanticsAction.scrollRight]),
66 67 68 69 70 71 72 73 74 75
    );

    final int detectorId = detectorKey.currentContext.findRenderObject().debugSemantics.id;
    tester.binding.pipelineOwner.semanticsOwner.performAction(detectorId, SemanticsAction.scrollUp);
    tester.binding.pipelineOwner.semanticsOwner.performAction(detectorId, SemanticsAction.scrollDown);
    expect(callCount, 0);
    tester.binding.pipelineOwner.semanticsOwner.performAction(detectorId, SemanticsAction.scrollLeft);
    expect(callCount, 1);
    tester.binding.pipelineOwner.semanticsOwner.performAction(detectorId, SemanticsAction.scrollRight);
    expect(callCount, 2);
76 77

    semantics.dispose();
78 79
  });
}