blob: efeec2b9a88a4aa84228a051f24e1de04374e857 [file] [log] [blame]
(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')());
}
})();