123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198 |
- "use strict";
- function equals(a, b) {
- return !!(JSON.stringify(a) === JSON.stringify(b));
- }
- Tinytest.add('PowerQueue - scope', function(test) {
- test.isTrue(typeof PowerQueue !== 'undefined', 'The PowerQueue scope is missing, please add the power-queue package');
- });
- // We run 5 tasks in serial mode
- Tinytest.addAsync('PowerQueue - test serial run', function (test, onComplete) {
- var queue = new PowerQueue({
- name: 'test queue 1',
- autostart: false,
- maxProcessing: 1,
- debug: true,
- // When this task is released we do our tests
- onEnded: function() {
- console.log('It ended');
- // Check that we ran the expected number of tasks
- test.equal(counter, 5, 'counter did not match number of tasks');
- // Check that the result was correct
- test.equal(result, expectedResult, 'result was unexpected');
- // We are done testing
- onComplete();
- }
- });
- var result = '';
- var expectedResult = '12345';
- var counter = 0;
- var checkCounter = function(id, next) {
- console.log('test queue 1 - Run task: ' + id);
- // Keep a counter
- counter++;
- // push id to result
- result += id;
- // call next task
- next();
- };
- // Add the tasks to the queue
- queue.add(function(next) { checkCounter('1', next); });
- queue.add(function(next) { checkCounter('2', next); });
- queue.add(function(next) { checkCounter('3', next); });
- queue.add(function(next) { checkCounter('4', next); });
- queue.add(function(next) { checkCounter('5', next); });
- // Run the queue
- queue.run();
- });
- // We run 5 tasks in serial mode but pause the queue on 3
- Tinytest.addAsync('PowerQueue - test serial pause', function (test, onComplete) {
- var queue = new PowerQueue({
- name: 'test queue 2',
- autostart: false,
- maxProcessing: 1,
- debug: true,
- // When this task is released we do our tests
- onPaused: function() {
- console.log('Its paused');
- // Check that we ran the expected number of tasks
- test.equal(counter, 3, 'counter did not match number of tasks');
- // Check that the result was correct
- test.equal(result, expectedResult, 'result was unexpected');
- // We are done testing
- onComplete();
- }
- });
- var result = '';
- var expectedResult = '123';
- var counter = 0;
- var checkCounter = function(id, next) {
- console.log('test queue 2 - Run task: ' + id);
- // Keep a counter
- counter++;
- // push id to result
- result += id;
- // call next task
- if (id === '3')
- next('pause')
- else
- next();
- };
- // Add the tasks to the queue
- queue.add(function(next) { checkCounter('1', next); });
- queue.add(function(next) { checkCounter('2', next); });
- queue.add(function(next) { checkCounter('3', next); });
- queue.add(function(next) { checkCounter('4', next); });
- queue.add(function(next) { checkCounter('5', next); });
- // Run the queue
- queue.run();
- });
- // We run 5 tasks in serial mode but pause the queue on 3
- Tinytest.addAsync('PowerQueue - test 2 task in parallel', function (test, onComplete) {
- var queue = new PowerQueue({
- name: 'test queue 3',
- autostart: false,
- maxProcessing: 2,
- debug: true,
- // When this task is released we do our tests
- onEnded: function() {
- console.log('Its paused');
- // Check that we ran the expected number of tasks
- test.equal(counter, 10, 'counter did not match number of tasks');
- // Check that the result was correct
- test.equal(result, expectedResult, 'result was unexpected');
- // We are done testing
- onComplete();
- }
- });
- // start 1-----3-------4-------6------------------------9-----------------------X
- // 2-----------------5---------------7--------8-----------10------X
- // ms 0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100
- // result 1 2 3 4 5 6 7 8 9 10
- // result 1 3 2 4 5 7 6 8 10 9
- var wait = {
- '1': 10,
- '2': 25,
- '3': 10,
- '4': 10,
- '5': 20,
- '6': 30,
- '7': 10,
- '8': 15,
- '9': 30,
- '10': 10,
- };
- // 1324
- var result = '';
- var expectedResult = '13245768109';
- var counter = 0;
- var checkCounter = function(id, next) {
- console.log('test queue 3 - Run task: ' + id);
- // Keep a counter
- counter++;
- // push id to result
- Meteor.setTimeout(function() {
- result += id;
- // call next task
- next();
- }, wait[id] * 5); // give it a factor 2 to make sure we get the correct result
- };
- // Add the tasks to the queue
- queue.add(function(next) { checkCounter('1', next); });
- queue.add(function(next) { checkCounter('2', next); });
- queue.add(function(next) { checkCounter('3', next); });
- queue.add(function(next) { checkCounter('4', next); });
- queue.add(function(next) { checkCounter('5', next); });
- queue.add(function(next) { checkCounter('6', next); });
- queue.add(function(next) { checkCounter('7', next); });
- queue.add(function(next) { checkCounter('8', next); });
- queue.add(function(next) { checkCounter('9', next); });
- queue.add(function(next) { checkCounter('10', next); });
- // Run the queue
- queue.run();
- });
- //Test API:
- //test.isFalse(v, msg)
- //test.isTrue(v, msg)
- //test.equal(actual, expected, message, not)
- //test.length(obj, len)
- //test.include(s, v)
- //test.isNaN(v, msg)
- //test.isUndefined(v, msg)
- //test.isNotNull
- //test.isNull
- //test.throws(func)
- //test.instanceOf(obj, klass)
- //test.notEqual(actual, expected, message)
- //test.runId()
- //test.exception(exception)
- //test.expect_fail()
- //test.ok(doc)
- //test.fail(doc)
- //test.equal(a, b, msg)
|