123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 |
- var el, el2,
- hammer, hammer2;
- module('Tests', {
- setup: function() {
- el = utils.createHitArea();
- el2 = utils.createHitArea();
- },
- teardown: function() {
- if (hammer) {
- hammer.destroy();
- hammer = null;
- }
- if (hammer2) {
- hammer2.destroy();
- hammer2 = null;
- }
- }
- });
- test('hammer shortcut', function() {
- expect(2);
- Hammer.defaults.touchAction = 'pan-y';
- hammer = Hammer(el);
- ok(hammer instanceof Hammer.Manager, 'returns an instance of Manager');
- ok(hammer.touchAction.actions == Hammer.defaults.touchAction, 'set the default touchAction');
- });
- test('hammer shortcut with options', function() {
- expect(2);
- hammer = Hammer(el, {
- touchAction: 'none'
- });
- ok(hammer instanceof Hammer.Manager, 'returns an instance of Manager');
- ok(hammer.touchAction.actions == 'none', 'set the default touchAction');
- });
- /* Creating a hammer instance does not work on the same way
- * when using Hammer or Hammer.Manager.
- *
- * This can confuse developers who read tests to use the library when doc is missing.
- */
- test('Hammer and Hammer.Manager constructors work exactly on the same way.', function() {
- expect(2);
- hammer = new Hammer(el, {});
- equal(Hammer.defaults.preset.length, hammer.recognizers.length);
- hammer2 = new Hammer.Manager(el, {});
- equal(0, hammer2.recognizers.length);
- });
- /* DOC to disable default recognizers should be added.
- *
- * - Hammer(el). IMO: Currently, well done.
- * - Hammer(el, {}) . IMO: should disable default recognizers
- * - Hammer(el, {recognizers: null}). IMO: now, it fails.
- * - Hammer(el, {recognizers: []}). It works, but it is likely not intuitive.
- */
- test('A Hammer instance can be setup to not having default recognizers.', function() {
- expect(1);
- hammer = new Hammer(el, { recognizers: false });
- equal(0, hammer.recognizers.length);
- });
- /* The case was when I added a custom tap event which was added to the default
- * recognizers, and my custom tap gesture wasn't working (I do not know exactly the reason),
- * but removing the default recognizers solved the issue.
- */
- test('Adding the same recognizer type should remove the old recognizer', function() {
- expect(4);
- hammer = new Hammer(el);
- ok(!!hammer.get('tap'));
- equal(7, hammer.recognizers.length);
- var newTap = new Hammer.Tap({time: 1337});
- hammer.add(newTap);
- equal(7, hammer.recognizers.length);
- equal(1337, hammer.get('tap').options.time);
- });
- /*
- * Swipe gesture:
- * - in this tests, it does not update input.velocity ( always 0)
- * - does not fire swipeleft or swiperight events
- */
- asyncTest('Swiping to the left should fire swipeleft event', function() {
- expect(2);
- hammer = new Hammer(el, {recognizers: []});
- hammer.add(new Hammer.Swipe());
- hammer.on('swipe swipeleft', function() {
- ok(true);
- });
- Simulator.gestures.swipe(el, {pos: [300, 300], deltaY: 0, deltaX: -200}, function() {
- start();
- });
- });
- /*
- * Input target change
- */
- asyncTest('Should detect input while on other element', function() {
- expect(1);
- hammer = new Hammer(el, { inputTarget: document.body });
- hammer.on('tap', function() {
- ok(true);
- });
- Simulator.gestures.tap(document.body, null, function() {
- start();
- });
- });
- /* Hammer.Manager constructor accepts a "recognizers" option in which each
- * element is an array representation of a Recognizer.
- */
- test('Hammer.Manager accepts recognizers as arrays.', function() {
- expect(4);
- hammer = new Hammer.Manager(el, {
- recognizers: [
- [Hammer.Swipe],
- [Hammer.Pinch],
- [Hammer.Rotate],
- [Hammer.Pan, { direction: Hammer.DIRECTION_UP }, ['swipe', 'pinch'], ['rotate']]
- ]
- });
- equal(4, hammer.recognizers.length);
- var recognizerActual = hammer.recognizers[3];
- equal(recognizerActual.options.direction, Hammer.DIRECTION_UP);
- equal(2, Object.keys(recognizerActual.simultaneous).length);
- equal(1, recognizerActual.requireFail.length);
- });
- /*
- * Removing a recognizer which cannot be found would errantly remove the last recognizer in the
- * manager's list.
- */
- test('Remove non-existent recognizer.', function() {
- expect(1);
- hammer = new Hammer(el, {recognizers: []});
- hammer.add(new Hammer.Swipe());
- hammer.remove('tap');
- equal(1, hammer.recognizers.length);
- });
- test('check whether Hammer.defaults.cssProps is restored', function() {
- var beforeCssProps = {
- userSelect: 'text',
- touchSelect: 'grippers',
- touchCallout: 'default',
- contentZooming: 'chained',
- userDrag: 'element',
- tapHighlightColor: 'rgba(0, 1, 0, 0)'
- };
- var prop;
- Hammer.each(Hammer.defaults.cssProps, function(value, name) {
- prop = Hammer.prefixed(el.style, name);
- if (prop) {
- el.style[prop] = beforeCssProps[name];
- }
- });
- hammer = Hammer(el);
- hammer.destroy();
- hammer = null;
- Hammer.each(Hammer.defaults.cssProps, function(value, name) {
- prop = Hammer.prefixed(el.style, name);
- if (prop) {
- equal(el.style[prop], beforeCssProps[name], "check if " + name + " is restored");
- }
- });
- });
|