123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 |
- // TODO: this tests fails because tapRecognizer changes
- // it could be that tapRecognizer setup its BEGAN state and
- // disable the other gesture recognition
- var el, hammer, events;
- var allGestureEvents = [
- 'tap doubletap press',
- 'pinch pinchin pinchout pinchstart pinchmove pinchend pinchcancel',
- 'rotate rotatestart rotatemove rotateend rotatecancel',
- 'pan panstart panmove panup pandown panleft panright panend pancancel',
- 'swipe swipeleft swiperight swipeup swipedown'
- ].join(' ');
- module('Gesture recognition', {
- setup: function() {
- el = utils.createHitArea();
- hammer = new Hammer(el);
- hammer.get('pinch')
- .set({ // some threshold, since the simulator doesnt stays at scale:1 when rotating
- enable: true,
- threshold: .1
- });
- hammer.get('rotate')
- .set({ enable: true });
- hammer.on(allGestureEvents, function(ev) {
- events[ev.type] = true;
- });
- events = {};
- },
- teardown: function() {
- hammer && hammer.destroy();
- events = null;
- }
- });
- asyncTest('recognize pan', function() {
- expect(1);
- Simulator.gestures.pan(el, { duration: 500, deltaX: 100, deltaY: 0 }, function() {
- start();
- deepEqual(events, {
- pan: true,
- panstart: true,
- panmove: true,
- panright: true,
- panend: true
- });
- });
- });
- asyncTest('recognize press', function() {
- expect(1);
- Simulator.gestures.press(el, null, function() {
- start();
- deepEqual(events, {
- press: true
- });
- });
- });
- asyncTest('recognize swipe', function() {
- expect(1);
- Simulator.gestures.swipe(el, { duration: 300, deltaX: 400, deltaY: 0 }, function() {
- start();
- deepEqual(events, {
- pan: true,
- panstart: true,
- panmove: true,
- panright: true,
- panend: true,
- swipe: true,
- swiperight: true
- });
- });
- });
- asyncTest('recognize pinch', function() {
- expect(1);
- Simulator.gestures.pinch(el, { duration: 500, scale: .5 }, function() {
- start();
- deepEqual(events, {
- pinch: true,
- pinchstart: true,
- pinchmove: true,
- pinchend: true,
- pinchin: true
- });
- });
- });
- asyncTest('recognize children multitouch pinch', function() {
- expect(1);
- var el1 = utils.createHitArea(el),
- el2 = utils.createHitArea(el);
- Simulator.gestures.pinch([el1, el2], { duration: 500, scale: .5 }, function() {
- start();
- deepEqual(events, {
- pinch: true,
- pinchstart: true,
- pinchmove: true,
- pinchend: true,
- pinchin: true
- });
- });
- });
- asyncTest('recognize parent-child multitouch pinch', function() {
- expect(1);
- var el1 = utils.createHitArea(el);
- Simulator.gestures.pinch([el, el1], { duration: 100, scale: .5 }, function() {
- start();
- deepEqual(events, {
- pinch: true,
- pinchstart: true,
- pinchmove: true,
- pinchend: true,
- pinchin: true
- });
- });
- });
- asyncTest('recognize rotate', function() {
- expect(1);
- Simulator.gestures.rotate(el, { duration: 500, scale: 1 }, function() {
- start();
- deepEqual(events, {
- rotate: true,
- rotatestart: true,
- rotatemove: true,
- rotateend: true
- });
- });
- });
- asyncTest('recognize multitouch rotate', function() {
- expect(1);
- var el1 = utils.createHitArea(el);
- Simulator.gestures.rotate([el, el1], { duration: 500, scale: 1 }, function() {
- start();
- deepEqual(events, {
- rotate: true,
- rotatestart: true,
- rotatemove: true,
- rotateend: true
- });
- });
- });
- asyncTest('recognize rotate and pinch simultaneous', function() {
- expect(1);
- Simulator.gestures.pinchRotate(el, { duration: 500, scale: 2 }, function() {
- start();
- deepEqual(events, {
- rotate: true,
- rotatestart: true,
- rotatemove: true,
- rotateend: true,
- pinch: true,
- pinchstart: true,
- pinchmove: true,
- pinchend: true,
- pinchout: true
- });
- });
- });
- asyncTest('don\'t recognize pan and swipe when moving down, when only horizontal is allowed', function() {
- expect(1);
- Simulator.gestures.swipe(el, { duration: 250, deltaX: 0, deltaZ: 200 }, function() {
- start();
- deepEqual(events, { });
- });
- });
- asyncTest('don\'t recognize press if duration is too short.', function() {
- expect(1);
- Simulator.gestures.press(el, { duration: 240 });
- setTimeout(function() {
- start();
- deepEqual(events, { tap: true }, 'Tap gesture has been recognized.');
- }, 275);
- });
- asyncTest('don\'t recognize tap if duration is too long.', function() {
- expect(1);
- Simulator.gestures.tap(el, { duration: 255 });
- setTimeout(function() {
- start();
- deepEqual(events, { press: true }, 'Press gesture has been recognized.');
- }, 275);
- });
|