scroll_test.dart 2.07 KB
Newer Older
1 2 3
import 'dart:sky' as sky;

import 'package:sky/base/pointer_router.dart';
4
import 'package:sky/gestures/arena.dart';
5
import 'package:sky/gestures/scroll.dart';
6
import 'package:sky/gestures/tap.dart';
7 8 9 10 11
import 'package:test/test.dart';

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

void main() {
12
  test('Should recognize pan', () {
13
    PointerRouter router = new PointerRouter();
14 15
    PanGestureRecognizer pan = new PanGestureRecognizer(router: router);
    TapGestureRecognizer tap = new TapGestureRecognizer(router: router);
16

17 18 19
    bool didStartPan = false;
    pan.onStart = () {
      didStartPan = true;
20 21
    };

22 23 24
    sky.Offset updatedScrollDelta;
    pan.onUpdate = (sky.Offset offset) {
      updatedScrollDelta = offset;
25 26
    };

27 28 29
    bool didEndPan = false;
    pan.onEnd = () {
      didEndPan = true;
30 31
    };

32 33 34 35
    bool didTap = false;
    tap.onTap = () {
      didTap = true;
    };
36

37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
    TestPointer pointer = new TestPointer(5);
    sky.PointerEvent down = pointer.down(new Point(10.0, 10.0));
    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);

    router.route(pointer.move(new Point(20.0, 20.0)));
    expect(didStartPan, isTrue);
    didStartPan = false;
    expect(updatedScrollDelta, new sky.Offset(10.0, -10.0));
    updatedScrollDelta = null;
    expect(didEndPan, isFalse);
    expect(didTap, isFalse);

    router.route(pointer.move(new Point(20.0, 25.0)));
    expect(didStartPan, isFalse);
    expect(updatedScrollDelta, new sky.Offset(0.0, -5.0));
    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();
77 78
  });
}