diff options
author | Minteck <contact@minteck.org> | 2022-10-18 08:59:09 +0200 |
---|---|---|
committer | Minteck <contact@minteck.org> | 2022-10-18 08:59:09 +0200 |
commit | 2c4ae43e688a9873e86211ea0e7aeb9ba770dd77 (patch) | |
tree | 17848d95522dab25d3cdeb9c4a6450e2a234861f /alarm/node_modules/node-forge/tests/tasks.js | |
parent | 108525534c28013cfe1897c30e4565f9893f3766 (diff) | |
download | pluralconnect-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.js | 378 |
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(); +}); |