scroll_test.dart 1.95 KB
Newer Older
1
import 'dart:ui' as ui;
2

3
import 'package:flutter/gestures.dart';
4 5 6 7 8
import 'package:test/test.dart';

import '../engine/mock_events.dart';

void main() {
9
  test('Should recognize pan', () {
10
    PointerRouter router = new PointerRouter();
11 12
    PanGestureRecognizer pan = new PanGestureRecognizer(router: router);
    TapGestureRecognizer tap = new TapGestureRecognizer(router: router);
13

14 15 16
    bool didStartPan = false;
    pan.onStart = () {
      didStartPan = true;
17 18
    };

19 20
    ui.Offset updatedScrollDelta;
    pan.onUpdate = (ui.Offset offset) {
21
      updatedScrollDelta = offset;
22 23
    };

24
    bool didEndPan = false;
25
    pan.onEnd = (ui.Offset velocity) {
26
      didEndPan = true;
27 28
    };

29 30 31 32
    bool didTap = false;
    tap.onTap = () {
      didTap = true;
    };
33

34
    TestPointer pointer = new TestPointer(5);
Kris Giesing's avatar
Kris Giesing committed
35
    PointerInputEvent down = pointer.down(new Point(10.0, 10.0));
36 37 38 39 40 41 42 43 44 45 46 47 48 49
    pan.addPointer(down);
    tap.addPointer(down);
    GestureArena.instance.close(5);
    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);

Kris Giesing's avatar
Kris Giesing committed
50
    router.route(pointer.move(new Point(20.0, 20.0)));
51 52
    expect(didStartPan, isTrue);
    didStartPan = false;
53
    expect(updatedScrollDelta, new ui.Offset(10.0, 10.0));
54 55 56 57
    updatedScrollDelta = null;
    expect(didEndPan, isFalse);
    expect(didTap, isFalse);

Kris Giesing's avatar
Kris Giesing committed
58
    router.route(pointer.move(new Point(20.0, 25.0)));
59
    expect(didStartPan, isFalse);
60
    expect(updatedScrollDelta, new ui.Offset(0.0, 5.0));
61 62 63 64 65 66 67 68 69 70 71 72 73
    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();
74 75
  });
}