summaryrefslogtreecommitdiff
path: root/alarm/node_modules/node-forge/tests/tasks.js
diff options
context:
space:
mode:
authorMinteck <contact@minteck.org>2022-10-18 08:59:09 +0200
committerMinteck <contact@minteck.org>2022-10-18 08:59:09 +0200
commit2c4ae43e688a9873e86211ea0e7aeb9ba770dd77 (patch)
tree17848d95522dab25d3cdeb9c4a6450e2a234861f /alarm/node_modules/node-forge/tests/tasks.js
parent108525534c28013cfe1897c30e4565f9893f3766 (diff)
downloadpluralconnect-2c4ae43e688a9873e86211ea0e7aeb9ba770dd77.tar.gz
pluralconnect-2c4ae43e688a9873e86211ea0e7aeb9ba770dd77.tar.bz2
pluralconnect-2c4ae43e688a9873e86211ea0e7aeb9ba770dd77.zip
Update
Diffstat (limited to 'alarm/node_modules/node-forge/tests/tasks.js')
-rw-r--r--alarm/node_modules/node-forge/tests/tasks.js378
1 files changed, 378 insertions, 0 deletions
diff --git a/alarm/node_modules/node-forge/tests/tasks.js b/alarm/node_modules/node-forge/tests/tasks.js
new file mode 100644
index 0000000..dd3ffde
--- /dev/null
+++ b/alarm/node_modules/node-forge/tests/tasks.js
@@ -0,0 +1,378 @@
+/**
+ * Forge Tasks Test
+ *
+ * @author David I. Lehn <dlehn@digitalbazaar.com>
+ *
+ * Copyright (c) 2009-2010 Digital Bazaar, Inc. All rights reserved.
+ */
+jQuery(function($)
+{
+ var cat = 'forge.tests.tasks';
+
+ var tests = [];
+ var passed = 0;
+ var failed = 0;
+
+ var init = function() {
+ passed = failed = 0;
+ $('.ready,.testing,.pass,.fail')
+ .removeClass('ready testing pass fail');
+ $('#status')
+ .text('Ready.')
+ .addClass('ready');
+ $('#total').text(tests.length);
+ $('#pass').text(passed);
+ $('#fail').text(failed);
+ $('.expect').empty();
+ $('.result').empty();
+ $('.time').empty();
+ $('#start').removeAttr('disabled');
+ };
+
+ var start = function()
+ {
+ $('#start').attr('disabled', 'disabled');
+ // meta! use tasks to run the task tests
+ forge.task.start({
+ type: 'test',
+ run: function(task) {
+ task.next('starting', function(task) {
+ forge.log.debug(cat, 'start');
+ $('#status')
+ .text('Testing...')
+ .addClass('testing')
+ .removeClass('idle');
+ });
+ $.each(tests, function(i, test) {
+ task.next('test', function(task) {
+ var title = $('li:first', test.container);
+ if($('#scroll:checked').length === 1)
+ {
+ $('html,body').animate({scrollTop: title.offset().top});
+ }
+ title.addClass('testing');
+ test.run(task, test);
+ });
+ task.next('test', function(task) {
+ $('li:first', test.container).removeClass('testing');
+ });
+ });
+ task.next('success', function(task) {
+ forge.log.debug(cat, 'done');
+ if(failed === 0) {
+ $('#status')
+ .text('PASS')
+ .addClass('pass')
+ .removeClass('testing');
+ } else {
+ // FIXME: should just be hitting failure() below
+ $('#status')
+ .text('FAIL')
+ .addClass('fail')
+ .removeClass('testing');
+ }
+ });
+ },
+ failure: function() {
+ $('#status')
+ .text('FAIL')
+ .addClass('fail')
+ .removeClass('testing');
+ }
+ });
+ };
+
+ $('#start').click(function() {
+ start();
+ });
+
+ $('#reset').click(function() {
+ init();
+ });
+
+ var addTest = function(name, run)
+ {
+ var container = $('<ul><li>Test ' + name + '</li><ul/></ul>');
+ var expect = $('<li>Expect: <span class="expect"/></li>');
+ var result = $('<li>Result: <span class="result"/></li>');
+ var time = $('<li>Time: <span class="time"/></li>');
+ $('ul', container).append(expect).append(result).append(time);
+ $('#tests').append(container);
+ var test = {
+ container: container,
+ startTime: null,
+ run: function(task, test) {
+ test.startTime = new Date();
+ run(task, test);
+ },
+ expect: $('span', expect),
+ result: $('span', result),
+ check: function() {
+ var e = test.expect.text();
+ var r = test.result.text();
+ (e == r) ? test.pass() : test.fail();
+ },
+ pass: function() {
+ passed += 1;
+ $('#pass').text(passed);
+ $('li:first', container).addClass('pass');
+ var dt = new Date() - test.startTime;
+ $('span.time', container).html(dt);
+ },
+ fail: function() {
+ failed += 1;
+ $('#fail').text(failed);
+ $('li:first', container).addClass('fail');
+ var dt = new Date() - test.startTime;
+ $('span.time', container).html(dt);
+ }
+ };
+ tests.push(test);
+ };
+
+ addTest('pass', function(task, test) {
+ test.pass();
+ });
+
+ addTest('check', function(task, test) {
+ test.check();
+ });
+
+ addTest('task 1', function(task, test) {
+ task.next(function(task) {
+ test.pass();
+ });
+ });
+
+ addTest('task check()', function(task, test) {
+ test.expect.append('check');
+ task.next(function(task) {
+ test.result.append('check');
+ });
+ task.next(function(task) {
+ test.check();
+ });
+ });
+
+ addTest('serial 20', function(task, test) {
+ // total
+ var n = 20;
+ // counter used in the tasks
+ var taskn = 0;
+ for(var i = 0; i < n; ++i) {
+ test.expect.append(i + ' ');
+ task.next(function(task) {
+ test.result.append(taskn++ + ' ');
+ });
+ }
+ task.next(function(task) {
+ test.check();
+ });
+ });
+
+ addTest('ajax block', function(task, test) {
+ test.expect.append('.');
+ task.next(function(task) {
+ task.parent.block();
+ $.ajax({
+ type: 'GET',
+ url: 'tasks.html',
+ success: function() {
+ test.result.append('.');
+ task.parent.unblock();
+ }
+ });
+ });
+ task.next(function(task) {
+ test.check();
+ });
+ });
+
+ addTest('serial ajax', function(task, test) {
+ var n = 10;
+ for(var i = 0; i < n; ++i)
+ {
+ test.expect.append(i + ' ');
+ }
+ task.next(function(task) {
+ // create parallel functions
+ task.parent.block(n);
+ for(var i = 0; i < n; ++i)
+ {
+ // pass value into closure
+ (function(i)
+ {
+ // serial tasks
+ task.next(function(ajaxTask)
+ {
+ $.ajax({
+ type: 'GET',
+ url: 'tasks.html',
+ success: function() {
+ // results use top level task
+ test.result.append(i + ' ');
+ task.parent.unblock();
+ }
+ });
+ });
+ })(i);
+ }
+ });
+ task.next(function(task) {
+ test.check();
+ });
+ });
+
+ addTest('parallel ajax', function(task, test) {
+ task.next(function(task) {
+ var n = 10;
+ // create parallel functions
+ var tasks = [];
+ for(var i = 0; i < n; ++i)
+ {
+ // pass value into closure
+ (function(i)
+ {
+ tasks.push(function(ajaxTask)
+ {
+ $.ajax({
+ type: 'GET',
+ url: 'tasks.html',
+ success: function() {
+ // results use top level task
+ test.result.append(i + ' ');
+ }
+ });
+ });
+ })(i);
+ }
+ // launch in parallel
+ task.parallel(tasks);
+ });
+ task.next(function(task) {
+ test.pass();
+ });
+ });
+
+ addTest('linear empty tasks rate', function(task, test) {
+ test.expect.append('-');
+ // total
+ var n = 100;
+ var start = new Date();
+ for(var i = 0; i < n; ++i) {
+ // empty task
+ task.next(function(task) {});
+ }
+ task.next(function(task) {
+ var dt = (new Date() - start) / 1000;
+ var res = $('<ul/>')
+ .append('<li>Tasks: ' + n + '</li>')
+ .append('<li>Time: ' + dt + 's</li>')
+ .append('<li>Rate: ' + n/dt + ' tasks/s</li>')
+ .append('<li>Task Time: ' + 1000*dt/n + ' ms/tasks</li>');
+ test.result.html(res);
+ test.pass();
+ });
+ });
+
+ addTest('sleep', function(task, test) {
+ test.expect.append('-');
+ var st = 1000;
+ var start = new Date();
+ task.next(function(task) {
+ task.sleep(st);
+ });
+ task.next(function(task) {
+ var dt = new Date() - start;
+ var res = $('<ul/>')
+ .append('<li>Sleep Time : ' + st + 'ms</li>')
+ .append('<li>Real Time: ' + dt + 'ms</li>')
+ .append('<li>Diff: ' + (dt-st) + 'ms</li>');
+ test.result.html(res);
+ test.pass();
+ });
+ });
+
+ addTest('serial 20 + sleep', function(task, test) {
+ // total
+ var n = 20;
+ // counter used in the tasks
+ var taskn = 0;
+ for(var i = 0; i < n; ++i) {
+ test.expect.append(i + ' ');
+ task.next(function(task) {
+ task.sleep(20);
+ test.result.append(taskn++ + ' ');
+ });
+ }
+ task.next(function(task) {
+ test.check();
+ });
+ });
+
+ addTest('concurrent tasks', function(task, test)
+ {
+ var colors = [
+ 'red',
+ 'green',
+ 'blue',
+ 'black',
+ 'purple',
+ 'goldenrod',
+ 'maroon',
+ 'gray',
+ 'teal',
+ 'magenta'
+ ];
+ var count = colors.length;
+ task.next(function(task)
+ {
+ var main = task;
+ task.block(count);
+
+ var tasks = [];
+ for(var i = 0; i < count; ++i)
+ {
+ var makefunction = function(index)
+ {
+ return function(task)
+ {
+ // total
+ var n = 20;
+ // counter used in the tasks
+ var taskn = 0;
+ for(var j = 0; j < n; j++)
+ {
+ task.next(function(task)
+ {
+ test.result.append(
+ '<span style=\"color:' + colors[index] + ';\">' +
+ taskn++ + '</span> ');
+ });
+ }
+ task.next(function(task)
+ {
+ main.unblock();
+ });
+ };
+ };
+ tasks.push(
+ {
+ type: 'concurrent' + i,
+ run: makefunction(i)
+ });
+ }
+
+ for(var i = 0; i < count; ++i)
+ {
+ forge.task.start(tasks[i]);
+ }
+ });
+
+ task.next(function(task) {
+ test.pass();
+ });
+ });
+
+ init();
+});