scroll_test.dart 2.23 KB
Newer Older
Ian Hickson's avatar
Ian Hickson committed
1 2 3 4
// Copyright 2015 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.

Adam Barth's avatar
Adam Barth committed
5
import 'package:flutter_test/flutter_test.dart';
6
import 'package:flutter/gestures.dart';
7 8
import 'package:test/test.dart';

9 10
import 'gesture_tester.dart';

11
void main() {
12 13
  setUp(ensureGesturer);

14
  test('Should recognize pan', () {
15
    GestureArenaManager gestureArena = Gesturer.instance.gestureArena;
16 17 18
    PointerRouter pointerRouter = Gesturer.instance.pointerRouter;
    PanGestureRecognizer pan = new PanGestureRecognizer();
    TapGestureRecognizer tap = new TapGestureRecognizer();
19

20
    bool didStartPan = false;
21
    pan.onStart = (_) {
22
      didStartPan = true;
23 24
    };

Ian Hickson's avatar
Ian Hickson committed
25 26
    Offset updatedScrollDelta;
    pan.onUpdate = (Offset offset) {
27
      updatedScrollDelta = offset;
28 29
    };

30
    bool didEndPan = false;
31
    pan.onEnd = (Velocity velocity) {
32
      didEndPan = true;
33 34
    };

35 36 37 38
    bool didTap = false;
    tap.onTap = () {
      didTap = true;
    };
39

40
    TestPointer pointer = new TestPointer(5);
Ian Hickson's avatar
Ian Hickson committed
41
    PointerDownEvent down = pointer.down(const Point(10.0, 10.0));
42 43
    pan.addPointer(down);
    tap.addPointer(down);
Ian Hickson's avatar
Ian Hickson committed
44
    gestureArena.close(5);
45 46 47 48 49
    expect(didStartPan, isFalse);
    expect(updatedScrollDelta, isNull);
    expect(didEndPan, isFalse);
    expect(didTap, isFalse);

50
    pointerRouter.route(down);
51 52 53 54 55
    expect(didStartPan, isFalse);
    expect(updatedScrollDelta, isNull);
    expect(didEndPan, isFalse);
    expect(didTap, isFalse);

56
    pointerRouter.route(pointer.move(const Point(20.0, 20.0)));
57 58
    expect(didStartPan, isTrue);
    didStartPan = false;
Ian Hickson's avatar
Ian Hickson committed
59
    expect(updatedScrollDelta, const Offset(10.0, 10.0));
60 61 62 63
    updatedScrollDelta = null;
    expect(didEndPan, isFalse);
    expect(didTap, isFalse);

64
    pointerRouter.route(pointer.move(const Point(20.0, 25.0)));
65
    expect(didStartPan, isFalse);
Ian Hickson's avatar
Ian Hickson committed
66
    expect(updatedScrollDelta, const Offset(0.0, 5.0));
67 68 69 70
    updatedScrollDelta = null;
    expect(didEndPan, isFalse);
    expect(didTap, isFalse);

71
    pointerRouter.route(pointer.up());
72 73 74 75 76 77 78 79
    expect(didStartPan, isFalse);
    expect(updatedScrollDelta, isNull);
    expect(didEndPan, isTrue);
    didEndPan = false;
    expect(didTap, isFalse);

    pan.dispose();
    tap.dispose();
80 81
  });
}