| (function() { |
| |
| function Tests(ASSERT, RANDOM, UTIL) { |
| var random = RANDOM(); |
| |
| describe('random', function() { |
| it('should generate 10 random bytes', function() { |
| random.getBytes(16); |
| random.getBytes(24); |
| random.getBytes(32); |
| |
| var b = random.getBytes(10); |
| ASSERT.equal(b.length, 10); |
| }); |
| |
| it('should use a synchronous seed file', function() { |
| var rand = RANDOM(); |
| rand.seedFileSync = function(needed) { |
| return UTIL.fillString('a', needed); |
| }; |
| var b = rand.getBytes(10); |
| ASSERT.equal(UTIL.bytesToHex(b), '80a7901a239c3e606319'); |
| }); |
| |
| it('should use an asynchronous seed file', function(done) { |
| var rand = RANDOM(); |
| rand.seedFile = function(needed, callback) { |
| callback(null, UTIL.fillString('a', needed)); |
| }; |
| rand.getBytes(10, function(err, b) { |
| ASSERT.equal(err, null); |
| ASSERT.equal(UTIL.bytesToHex(b), '80a7901a239c3e606319'); |
| done(); |
| }); |
| }); |
| |
| it('should collect some random bytes', function() { |
| var rand = RANDOM(); |
| rand.seedFileSync = function(needed) { |
| return UTIL.fillString('a', needed); |
| }; |
| rand.collect('bbb'); |
| var b = rand.getBytes(10); |
| ASSERT.equal(UTIL.bytesToHex(b), 'ff8d213516047c94ca46'); |
| }); |
| }); |
| } |
| |
| // check for AMD |
| if(typeof define === 'function') { |
| define([ |
| 'forge/random', |
| 'forge/util' |
| ], function(RANDOM, UTIL) { |
| Tests( |
| // Global provided by test harness |
| ASSERT, |
| RANDOM, |
| UTIL() |
| ); |
| }); |
| } else if(typeof module === 'object' && module.exports) { |
| // assume NodeJS |
| Tests( |
| require('assert'), |
| require('../../js/random'), |
| require('../../js/util')()); |
| } |
| |
| })(); |