diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..15813be --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +package-lock.json +node_modules/ diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..808c801 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - "node" + - "7" diff --git a/README.md b/README.md index 207f1be..5c26cd9 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +[![Build Status](https://travis-ci.org/dafky2000/TimedQ.js.svg?branch=testfix-1)](https://travis-ci.org/dafky2000/TimedQ.js) + # TimedQ.js Javascript timed processing queue (and queue manager). Useful as a non render blocking processing queue in the browser. diff --git a/TimedQ.js b/TimedQ.js index 1f1ff1d..162096c 100644 --- a/TimedQ.js +++ b/TimedQ.js @@ -11,6 +11,9 @@ * Above and including this line must remain unchanged. * */ + +exports.TimedQ = TimedQ; + function TimedQ(options = {}) { this.options = { runtime: options.runtime || 40, diff --git a/package.json b/package.json new file mode 100644 index 0000000..cff2f0f --- /dev/null +++ b/package.json @@ -0,0 +1,14 @@ +{ + "name": "timedq", + "version": "0.0.1", + "description": "TimedQ: Javascript timed processing queue (and queue manager)", + "scripts": { + "test": "node test/all.js" + }, + "devDependencies": { + "test": "^0.6.0" + }, + "dependencies": { + "require": "^2.4.20" + } +} diff --git a/test/all.js b/test/all.js new file mode 100644 index 0000000..9382e5b --- /dev/null +++ b/test/all.js @@ -0,0 +1,47 @@ +const TimedQ = require('../TimedQ.js').TimedQ; + +const test_size = 1000000; +const test_size_repeat = 10; + +function dummyData() { + const data = []; + for(let x = 0; x < test_size; ++x) { + data.push(['test'+x]); + } + + let newdata = []; + for(let x = 0; x < test_size_repeat; ++x) { + newdata = newdata.concat(data); + } + + return newdata; +} + +// using assert passed to the test function that just logs failures +exports['test that logs all failures'] = function(assert, done) { + const Q = new TimedQ(); + // Q.stop(); // Stop the queue since it is automatically started + + const f = function(input) { return 'f1' + input; }; + const f2 = function(input) { return 'f2' + input; }; + + const dummydata = dummyData(); + Q.enqueue(f, dummydata); + Q.enqueue(f2, dummydata); + + assert.equal(Q.queues_array[0].items.length, dummydata.length, 'Initial queue #1 length'); + assert.equal(Q.queues_array[1].items.length, dummydata.length, 'Initial queue #2 length'); + + (function wait_for_done() { + const left = Q.queues_array[0].items.length + Q.queues_array[1].items.length; + console.log(left); + + if(left) { + setTimeout(wait_for_done, 1000); + } else { + done(); + } + })(); +}; + +if (module == require.main) require('test').run(exports);