import 'package:quiver/testing/async.dart'; import 'package:flutter/gestures.dart'; import 'package:test/test.dart'; final PointerInputEvent down = new PointerInputEvent( pointer: 5, type: 'pointerdown', x: 10.0, y: 10.0 ); final PointerInputEvent up = new PointerInputEvent( pointer: 5, type: 'pointerup', x: 11.0, y: 9.0 ); void main() { test('Should recognize long press', () { PointerRouter router = new PointerRouter(); LongPressGestureRecognizer longPress = new LongPressGestureRecognizer(router: router); bool longPressRecognized = false; longPress.onLongPress = () { longPressRecognized = true; }; new FakeAsync().run((FakeAsync async) { longPress.addPointer(down); GestureArena.instance.close(5); expect(longPressRecognized, isFalse); router.route(down); expect(longPressRecognized, isFalse); async.elapse(new Duration(milliseconds: 300)); expect(longPressRecognized, isFalse); async.elapse(new Duration(milliseconds: 700)); expect(longPressRecognized, isTrue); }); longPress.dispose(); }); test('Up cancels long press', () { PointerRouter router = new PointerRouter(); LongPressGestureRecognizer longPress = new LongPressGestureRecognizer(router: router); bool longPressRecognized = false; longPress.onLongPress = () { longPressRecognized = true; }; new FakeAsync().run((FakeAsync async) { longPress.addPointer(down); GestureArena.instance.close(5); expect(longPressRecognized, isFalse); router.route(down); expect(longPressRecognized, isFalse); async.elapse(new Duration(milliseconds: 300)); expect(longPressRecognized, isFalse); router.route(up); expect(longPressRecognized, isFalse); async.elapse(new Duration(seconds: 1)); expect(longPressRecognized, isFalse); }); longPress.dispose(); }); test('Should recognize both tap down and long press', () { PointerRouter router = new PointerRouter(); TapGestureRecognizer tap = new TapGestureRecognizer(router: router); LongPressGestureRecognizer longPress = new LongPressGestureRecognizer(router: router); bool tapDownRecognized = false; tap.onTapDown = (_) { tapDownRecognized = true; }; bool longPressRecognized = false; longPress.onLongPress = () { longPressRecognized = true; }; new FakeAsync().run((FakeAsync async) { tap.addPointer(down); longPress.addPointer(down); GestureArena.instance.close(5); expect(tapDownRecognized, isFalse); expect(longPressRecognized, isFalse); router.route(down); expect(tapDownRecognized, isFalse); expect(longPressRecognized, isFalse); async.elapse(new Duration(milliseconds: 300)); expect(tapDownRecognized, isTrue); expect(longPressRecognized, isFalse); async.elapse(new Duration(milliseconds: 700)); expect(tapDownRecognized, isTrue); expect(longPressRecognized, isTrue); }); tap.dispose(); longPress.dispose(); }); }