Fix jshint problems in channel.js

Use higher order functions to be able to properly count which callback is 
called and which not


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/6f6adb1e
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/6f6adb1e
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/6f6adb1e

Branch: refs/heads/master
Commit: 6f6adb1ed634041ba4d040e0bd88ae43fbc29b92
Parents: 9a32ce9
Author: Martin Tzvetanov Grigorov <[email protected]>
Authored: Wed Feb 6 16:06:52 2013 +0100
Committer: Martin Tzvetanov Grigorov <[email protected]>
Committed: Wed Feb 6 16:07:29 2013 +0100

----------------------------------------------------------------------
 wicket-core/src/test/js/channels.js |   60 +++++++++++++++--------------
 1 files changed, 31 insertions(+), 29 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/6f6adb1e/wicket-core/src/test/js/channels.js
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/js/channels.js 
b/wicket-core/src/test/js/channels.js
index e26d13e..c97ae5b 100644
--- a/wicket-core/src/test/js/channels.js
+++ b/wicket-core/src/test/js/channels.js
@@ -15,7 +15,11 @@
  * limitations under the License.
  */
 
+/*global ok: true, start: true, test: true, equal: true, deepEqual: true,
+ QUnit: true, module: true, expect: true, stop: true */
+
 jQuery(document).ready(function() {
+       "use strict";
 
        module('Wicket.ChannelManager');
 
@@ -30,13 +34,14 @@ jQuery(document).ready(function() {
                var cm          = new Wicket.ChannelManager(),
                        ch              = 'name|s',
                        i               = 0,
-                       result  = '';
+                       result  = '',
+                       toExecute = function (j) {
+                               result += j;
+                               cm.done(ch);
+                       };
 
                for (; i < 10; i++) {
-                       cm.schedule(ch, function () {
-                               result += i;
-                               cm.done(ch);
-                       });
+                       cm.schedule(ch, toExecute(i));
                }
                
                equal(result, '0123456789');
@@ -49,10 +54,10 @@ jQuery(document).ready(function() {
         * The execution starts with 0 but the DROP callback (for 5) drops the 
callbacks for
         * 1, 2, 3 and 4, so they are missed. '5' registers a '!drop!' and then 
all following
         * queueing callbacks are executed.
-        * The final result is "0!drop!10101010"
+        * The final result must be "0!drop!6789"
         * - 0 for the first queueing callback
         * - !drop! for the 5th
-        * - a '10' for 6, 7, 8 and 9 (because I didn't find a way to pass the 
current value of 'i')
+        * - 6, 7, 8 and 9
         */
        test('drop', function () {
 
@@ -66,39 +71,35 @@ jQuery(document).ready(function() {
                        chd             = name + '|d',                          
        // the channel to drop
                        number  = 10,                                           
        // the number of channels to schedule
                        i               = 0,                                    
                // the current iteration
-                       j               = 0,                                    
                // the counter that decides when to release the test
                        result  = '',                                           
        // the container for the actual result
                        queueCallback = function(k) {
                                result += k;
                                cm.done(chq);
 
-                               if (++j === (number / 2)) {
+                               if (k === (number - 1)) {
                                        start();
 
-                                       //equal(result, '0!drop!6789'); // 
desired check, but cannot find how to pass 
-                                                                               
                        // the current value to the channel's callback
-
-                                       equal(result, '0!drop!10101010'); // 
one '10' for 6,7,8,9
+                                       equal(result, '0!drop!6789');
                                }
+                       },
+                       toExecuteQueued = function (y) {
+                               return function() {
+                                       window.setTimeout(function() 
{queueCallback(y);}, 1);
+                               };
+                       },
+                       toExecuteDropped = function() {
+                               result += '!drop!';
+                               cm.done(chd);
                        };
 
                for (; i < number; i++) {
 
-                       cm.schedule(chq, function () {
+                       cm.schedule(chq, toExecuteQueued(i));
 
-                               // TODO: how to pass the current value of 'i' ?!
-                               setTimeout(queueCallback, 1, i);
-
-                       });
-
-                       if (i === number / 2) {
-                               cm.schedule(chd, function() {
-                                       result += '!drop!';
-                                       cm.done(chd);
-                               });
+                       if (i === (number / 2)) {
+                               cm.schedule(chd, toExecuteDropped);
                        }
                }
-               
        });
 
        /**
@@ -127,7 +128,10 @@ jQuery(document).ready(function() {
                                        // mark the channel non-busy
                                        cm.done(cha);
                                }, 100);
-                       }
+                       },
+                       toExecute = function () {
+                               ok(false, "Requests in the active channel 
should not be executed.");
+                       };
 
                // schedule the long running callback (the active one)
                cm.schedule(cha, queueCallback);
@@ -136,9 +140,7 @@ jQuery(document).ready(function() {
                // they will be disacarded because the channel is busy
                for (; i < number; i++) {
 
-                       cm.schedule(cha, function () {
-                               ok(false, "Requests in the active channel 
should not be executed.")
-                       });
+                       cm.schedule(cha, toExecute);
                }
 
        });

Reply via email to