blob: 793dabb45aed233a16f8b84f0ba0d9ceb1b3646f [file] [log] [blame]
import 'dart:sky' as sky;
import 'package:sky/gestures/arena.dart';
import 'package:sky/gestures/pointer_router.dart';
import 'package:sky/gestures/scroll.dart';
import 'package:sky/gestures/tap.dart';
import 'package:test/test.dart';
import '../engine/mock_events.dart';
void main() {
test('Should recognize pan', () {
PointerRouter router = new PointerRouter();
PanGestureRecognizer pan = new PanGestureRecognizer(router: router);
TapGestureRecognizer tap = new TapGestureRecognizer(router: router);
bool didStartPan = false;
pan.onStart = () {
didStartPan = true;
};
sky.Offset updatedScrollDelta;
pan.onUpdate = (sky.Offset offset) {
updatedScrollDelta = offset;
};
bool didEndPan = false;
pan.onEnd = () {
didEndPan = true;
};
bool didTap = false;
tap.onTap = () {
didTap = true;
};
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();
});
}