test_require_failure.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. var el,
  2. hammer,
  3. pressPeriod = 200,
  4. pressThreshold = 20,
  5. pressCount = 0,
  6. panStartCount = 0,
  7. swipeCount = 0;
  8. module('Require Failure ( Swipe & Press )', {
  9. setup: function() {
  10. el = utils.createHitArea();
  11. hammer = new Hammer(el, {recognizers: []});
  12. var swipe = new Hammer.Swipe({threshold: 1});
  13. var press = new Hammer.Press({time: pressPeriod, threshold: pressThreshold});
  14. hammer.add(swipe);
  15. hammer.add(press);
  16. swipe.recognizeWith(press);
  17. press.requireFailure(swipe);
  18. pressCount = 0;
  19. swipeCount = 0;
  20. hammer.on('press', function() {
  21. pressCount++;
  22. });
  23. hammer.on('swipe', function() {
  24. swipeCount++;
  25. });
  26. },
  27. teardown: function() {
  28. hammer.destroy();
  29. }
  30. });
  31. asyncTest('When swipe does not recognize the gesture, a press gesture can be fired', function() {
  32. expect(1);
  33. utils.dispatchTouchEvent(el, 'start', 50, 50);
  34. setTimeout(function() {
  35. start();
  36. equal(pressCount, 1);
  37. }, pressPeriod + 100);
  38. });
  39. asyncTest('When swipe does recognize the gesture, a press gesture cannot be fired', function() {
  40. expect(2);
  41. Simulator.gestures.swipe(el, null, function() {
  42. start();
  43. ok(swipeCount > 0, 'swipe gesture should be recognizing');
  44. equal(pressCount, 0, 'press gesture should not be recognized because swipe gesture is recognizing');
  45. });
  46. });
  47. module('Require Failure ( Pan & Press )', {
  48. setup: function() {
  49. el = document.createElement('div');
  50. document.body.appendChild(el);
  51. hammer = new Hammer(el, {recognizers: []});
  52. var pan = new Hammer.Pan({threshold: 1});
  53. var press = new Hammer.Press({time: pressPeriod, threshold: pressThreshold});
  54. hammer.add([pan, press]);
  55. pan.recognizeWith(press);
  56. press.requireFailure(pan);
  57. pressCount = 0;
  58. panStartCount = 0;
  59. hammer.on('press', function() {
  60. pressCount++;
  61. });
  62. hammer.on('panstart', function() {
  63. panStartCount++;
  64. });
  65. },
  66. teardown: function() {
  67. document.body.removeChild(el);
  68. hammer.destroy();
  69. }
  70. });
  71. asyncTest('When pan does not recognize the gesture, a press gesture can be fired', function() {
  72. expect(1);
  73. utils.dispatchTouchEvent(el, 'start', 50, 50);
  74. setTimeout(function() {
  75. start();
  76. equal(pressCount, 1);
  77. }, pressPeriod + 100);
  78. });
  79. asyncTest('When pan recognizes the gesture, a press gesture cannot be fired', function() {
  80. expect(2);
  81. utils.dispatchTouchEvent(el, 'start', 50, 50);
  82. utils.dispatchTouchEvent(el, 'move', 50 + pressThreshold / 4, 50);
  83. setTimeout(function() {
  84. start();
  85. ok(panStartCount > 0, 'pan gesture should be recognizing');
  86. equal(pressCount, 0, 'press gesture should not be recognized because pan gesture is recognizing');
  87. }, pressPeriod + 100);
  88. });