diff options
author | Florian Dold <florian.dold@gmail.com> | 2017-12-10 21:51:33 +0100 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2017-12-10 21:51:33 +0100 |
commit | 0469abd4a9c9270a1fdc962969e36e63699af8b4 (patch) | |
tree | f9864d4a4148621378958794cbbfdc2393733283 /node_modules/crypto-browserify/test/random-fill.js | |
parent | 6947e79bbc258f7bc96af424ddb71a511f0c15a3 (diff) |
upgrade dependencies
Diffstat (limited to 'node_modules/crypto-browserify/test/random-fill.js')
-rw-r--r-- | node_modules/crypto-browserify/test/random-fill.js | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/node_modules/crypto-browserify/test/random-fill.js b/node_modules/crypto-browserify/test/random-fill.js new file mode 100644 index 000000000..63c885add --- /dev/null +++ b/node_modules/crypto-browserify/test/random-fill.js @@ -0,0 +1,53 @@ +var test = require('tape') +var crypto = require('../') +var Buffer = require('safe-buffer').Buffer + +test('get error message', function (t) { + try { + var b = crypto.randomFillSync(Buffer.alloc(10)) + t.ok(Buffer.isBuffer(b)) + t.end() + } catch (err) { + t.ok(/not supported/.test(err.message), '"not supported" is in error message') + t.end() + } +}) + +test('randomfill', function (t) { + t.plan(5) + t.equal(crypto.randomFillSync(Buffer.alloc(10)).length, 10) + t.ok(Buffer.isBuffer(crypto.randomFillSync(Buffer.alloc(10)))) + crypto.randomFill(Buffer.alloc(10), function (ex, bytes) { + t.error(ex) + t.equal(bytes.length, 10) + t.ok(Buffer.isBuffer(bytes)) + t.end() + }) +}) + +test('seems random', function (t) { + var L = 1000 + var b = crypto.randomFillSync(Buffer.alloc(L)) + + var mean = [].reduce.call(b, function (a, b) { + return a + b + }, 0) / L + + // test that the random numbers are plausably random. + // Math.random() will pass this, but this will catch + // terrible mistakes such as this blunder: + // https://github.com/dominictarr/crypto-browserify/commit/3267955e1df7edd1680e52aeede9a89506ed2464#commitcomment-7916835 + + // this doesn't check that the bytes are in a random *order* + // but it's better than nothing. + + var expected = 256 / 2 + var smean = Math.sqrt(mean) + + // console.log doesn't work right on testling, *grumble grumble* + console.log(JSON.stringify([expected - smean, mean, expected + smean])) + t.ok(mean < expected + smean) + t.ok(mean > expected - smean) + + t.end() +}) |