scroll_test.dart 2.22 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 9
import 'package:test/test.dart';

void main() {
10
  test('Should recognize pan', () {
11
    PointerRouter router = new PointerRouter();
Ian Hickson's avatar
Ian Hickson committed
12 13 14 15 16 17 18 19 20
    GestureArena gestureArena = new GestureArena();
    PanGestureRecognizer pan = new PanGestureRecognizer(
      router: router,
      gestureArena: gestureArena
    );
    TapGestureRecognizer tap = new TapGestureRecognizer(
      router: router,
      gestureArena: gestureArena
    );
21

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

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

32
    bool didEndPan = false;
Ian Hickson's avatar
Ian Hickson committed
33
    pan.onEnd = (Offset velocity) {
34
      didEndPan = true;
35 36
    };

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

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

    router.route(down);
    expect(didStartPan, isFalse);
    expect(updatedScrollDelta, isNull);
    expect(didEndPan, isFalse);
    expect(didTap, isFalse);

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

Ian Hickson's avatar
Ian Hickson committed
66
    router.route(pointer.move(const Point(20.0, 25.0)));
67
    expect(didStartPan, isFalse);
Ian Hickson's avatar
Ian Hickson committed
68
    expect(updatedScrollDelta, const Offset(0.0, 5.0));
69 70 71 72 73 74 75 76 77 78 79 80 81
    updatedScrollDelta = null;
    expect(didEndPan, isFalse);
    expect(didTap, isFalse);

    router.route(pointer.up());
    expect(didStartPan, isFalse);
    expect(updatedScrollDelta, isNull);
    expect(didEndPan, isTrue);
    didEndPan = false;
    expect(didTap, isFalse);

    pan.dispose();
    tap.dispose();
82 83
  });
}