summaryrefslogtreecommitdiffstats
path: root/node_modules/crypto-browserify/test/random-fill.js
diff options
context:
space:
mode:
authorGravatar Piotr Russ <mail@pruss.it> 2020-11-16 00:10:28 +0100
committerGravatar Piotr Russ <mail@pruss.it> 2020-11-16 00:10:28 +0100
commite06ec920f7a5d784e674c4c4b4e6d1da3dc7391d (patch)
tree55713f725f77b44ebfec86e4eec3ce33e71458ca /node_modules/crypto-browserify/test/random-fill.js
downloadwebsite_creator-e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d.tar.gz
website_creator-e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d.tar.bz2
website_creator-e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d.zip
api, login, auth
Diffstat (limited to 'node_modules/crypto-browserify/test/random-fill.js')
-rw-r--r--node_modules/crypto-browserify/test/random-fill.js53
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 0000000..63c885a
--- /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()
+})