| // 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); |
| }); |