diff --git a/tests/unit/event/event_core.js b/tests/unit/event/event_core.js index 1f48366e..2aa8f899 100644 --- a/tests/unit/event/event_core.js +++ b/tests/unit/event/event_core.js @@ -12,14 +12,17 @@ module(libName, { teardown: function(){ - $.each(events, function(i, name){ - $("#qunit-fixture").unbind(name); - }); - $($.event.special.scrollstart).unbind("scrollstart"); - $($.event.special.tap).unbind("tap"); - $($.event.special.tap).unbind("taphold"); - $($.event.special.swipe).unbind("swipe"); + // ensure bindings are removed + $.each(events, function(i, name){ + $.each([$("#qunit-fixture"), + $($.event.special.scrollstart), + $($.event.special.tap), + $($.event.special.tap), + $($.event.special.swipe)], function(j, obj){ + obj.unbind(name); + }); + }); //NOTE unmock Math.abs = absFn; @@ -43,24 +46,28 @@ }); }); - test( "defined event functions bind a closure when passed", function(){ + asyncTest( "defined event functions bind a closure when passed", function(){ expect( 1 ); - $('#qunit-fixture')[events[0]](function(){ + $('#qunit-fixture').bind(events[0], function(){ ok(true, "event fired"); + start(); }); $('#qunit-fixture').trigger(events[0]); + stop(); }); - test( "defined event functions trigger the event with no arguments", function(){ + asyncTest( "defined event functions trigger the event with no arguments", function(){ expect( 1 ); - $('#qunit-fixture')[events[0]](function(){ + $('#qunit-fixture').bind('touchstart', function(){ ok(true, "event fired"); + start(); }); - $('#qunit-fixture')[events[0]](); + $('#qunit-fixture').touchstart(); + stop(); }); test( "defining event functions sets the attrFn to true", function(){ @@ -75,7 +82,7 @@ ok($.event.special.scrollstart.enabled, "scrollstart enabled"); }); - test( "scrollstart setup binds a function that returns when its disabled", function(){ + asyncTest( "scrollstart setup binds a function that returns when its disabled", function(){ expect( 1 ); $.event.special.scrollstart.enabled = false; @@ -85,22 +92,24 @@ $($.event.special.scrollstart).bind("touchmove", function(){ ok(true, "touchmove fired"); + start(); }); $($.event.special.scrollstart).trigger("touchmove"); }); - test( "scrollstart setup binds a function that triggers scroll start when enabled", function(){ + asyncTest( "scrollstart setup binds a function that triggers scroll start when enabled", function(){ $.event.special.scrollstart.enabled = true; $($.event.special.scrollstart).bind("scrollstart", function(){ ok(true, "scrollstart fired"); + start(); }); $($.event.special.scrollstart).trigger("touchmove"); }); - test( "scrollstart setup binds a function that triggers scroll stop after 50 ms", function(){ + asyncTest( "scrollstart setup binds a function that triggers scroll stop after 50 ms", function(){ var triggered = false; $.event.special.scrollstart.enabled = true; @@ -112,8 +121,8 @@ $($.event.special.scrollstart).trigger("touchmove"); - stop(); setTimeout(function(){ + console.log('huh?'); ok(triggered, "triggered"); start(); }, 50); @@ -123,13 +132,13 @@ $.support.touch = true; $.testHelper.reloadLib(libName); - // mock originalEvent information + //mock originalEvent information $.Event.prototype.originalEvent = { touches: [{ 'pageX' : 0 }, { 'pageY' : 0 }] }; }; - test( "long press fires tap hold after 750 ms", function(){ + asyncTest( "long press fires tap hold after 750 ms", function(){ var taphold = false; forceTouchSupport(); @@ -140,7 +149,6 @@ $($.event.special.tap).trigger("touchstart"); - stop(); setTimeout(function(){ ok(taphold); start(); @@ -155,15 +163,16 @@ }; }; - test( "touchmove prevents taphold", function(){ + asyncTest( "touchmove prevents taphold", function(){ + expect( 1 ); var taphold = false; forceTouchSupport(); mockAbs(100); //NOTE record taphold event - stop(); $($.event.special.tap).bind("taphold", function(){ + ok(false, "taphold fired"); taphold = true; }); @@ -183,30 +192,35 @@ }, 751); }); - test( "tap event fired without movement", function(){ - var tap = false; + asyncTest( "tap event fired without movement", function(){ + expect( 1 ); + var tap = false, + checkTap = function(){ + console.log('hur?'); + ok(true, "tap fired"); + }; forceTouchSupport(); //NOTE record the tap event - $($.event.special.tap).bind("tap", function(){ - start(); - tap = true; - }); + $($.event.special.tap).bind("tap", checkTap); - stop(); $($.event.special.tap).trigger("touchstart"); $($.event.special.tap).trigger("touchend"); - ok(tap, "tapped"); + setTimeout(function(){ + start(); + }, 400); }); - test( "tap event not fired when there is movement", function(){ + asyncTest( "tap event not fired when there is movement", function(){ + expect( 1 ); var tap = false; forceTouchSupport(); //NOTE record tap event $($.event.special.tap).bind("tap", function(){ + ok(false, "tap fired"); tap = true; }); @@ -218,13 +232,14 @@ $($.event.special.tap).trigger("touchmove"); //NOTE end touch sequence after 20 ms - stop(); setTimeout(function(){ $($.event.special.tap).trigger("touchend"); - start(); }, 20); - ok(!tap, "not tapped"); + setTimeout(function(){ + ok(!tap, "not tapped"); + start(); + }, 40); }); var swipeTimedTest = function(opts){ @@ -253,13 +268,14 @@ $($.event.special.swipe).trigger("touchend"); }, opts.timeout); - stop(); setTimeout(function(){ same(swipe, opts.expected, "swipe expected"); //NOTE the start in the event closure won't be fired, fire it here if(!opts.expected) { start(); } }, opts.timeout + 10); + + stop(); }; test( "swipe fired when coordinate change in less than a second", function(){ @@ -278,9 +294,14 @@ swipeTimedTest({ timeout: 1000, coordChange: 75, expected: false }); }); - test( "scrolling prevented when coordinate change > 10", function(){ + asyncTest( "scrolling prevented when coordinate change > 10", function(){ expect( 1 ); + forceTouchSupport(); + + // ensure the swipe custome event is setup + $($.event.special.swipe).bind('swipe', function(){}); + //NOTE bypass the trigger source check $.Event.prototype.originalEvent = { touches: false @@ -288,6 +309,7 @@ $.Event.prototype.preventDefault = function(){ ok(true, "prevent default called"); + start(); }; mockAbs(11); @@ -296,18 +318,25 @@ $($.event.special.swipe).trigger("touchmove"); }); - test( "move handler returns when touchstart has been fired since touchstop", function(){ + asyncTest( "move handler returns when touchstart has been fired since touchstop", function(){ expect( 1 ); + // bypass triggered event check $.Event.prototype.originalEvent = { touches: false }; + forceTouchSupport(); + + // ensure the swipe custome event is setup + $($.event.special.swipe).bind('swipe', function(){}); + $($.event.special.swipe).trigger("touchstart"); $($.event.special.swipe).trigger("touchend"); $($.event.special.swipe).bind("touchmove", function(){ ok(true, "touchmove bound functions are fired"); + start(); }); Math.abs = function(){ diff --git a/tests/unit/event/index.html b/tests/unit/event/index.html index 38595c55..de2ec6e5 100644 --- a/tests/unit/event/index.html +++ b/tests/unit/event/index.html @@ -7,11 +7,9 @@ - - - - + +