init
This commit is contained in:
119
node_modules/knuth-shuffle-seeded/test/test.js
generated
vendored
Normal file
119
node_modules/knuth-shuffle-seeded/test/test.js
generated
vendored
Normal file
@@ -0,0 +1,119 @@
|
||||
// Licensed under the Apache License, version 2.0
|
||||
|
||||
'use strict'
|
||||
|
||||
var shuffle = require('..')
|
||||
, assert = require('assert')
|
||||
, test = [ 2, 11, 37, 42, 'adsf', 'blah', { heeeheee: true } ]
|
||||
|
||||
it('changes input array', function () {
|
||||
var input = test.slice(0)
|
||||
, a = shuffle(input)
|
||||
assert.deepEqual(a, input)
|
||||
})
|
||||
|
||||
describe('random shuffling', function () {
|
||||
it('works', function () {
|
||||
var a = shuffle(test.slice(0))
|
||||
, b = shuffle(test.slice(0))
|
||||
, c = shuffle(test.slice(0))
|
||||
// Try three times.
|
||||
// The possibility of this test being a false positive is:
|
||||
//
|
||||
// / 1 \ 3 -12
|
||||
// |----| ≈ 7.81 × 10 ≈ 0.0000000078%
|
||||
// \ 7! /
|
||||
//
|
||||
// That's good enough IMO.
|
||||
try {
|
||||
assert.notDeepEqual(test, a)
|
||||
} catch (e) {
|
||||
if (!(e instanceof AssertionError)) throw e
|
||||
try {
|
||||
assert.notDeepEqual(test, b)
|
||||
} catch (e) {
|
||||
if (!(e instanceof AssertionError)) throw e
|
||||
assert.notDeepEqual(test, c)
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
describe('seeding with a number', function () {
|
||||
var a, b
|
||||
|
||||
it('does not crash', function () {
|
||||
a = shuffle(test.slice(0), 2)
|
||||
b = shuffle(test.slice(0), 2)
|
||||
})
|
||||
|
||||
it('output is the same for the same seed', function () {
|
||||
assert.deepEqual(a, b)
|
||||
assert.deepEqual(a, [ 'blah', { heeeheee: true }, 2, 'adsf', 11, 42, 37 ])
|
||||
})
|
||||
})
|
||||
|
||||
describe('seeding with a object', function () {
|
||||
var obj1 = { blah: 'ad', bla: 4 }
|
||||
, obj2 = new Date()
|
||||
, a
|
||||
, b
|
||||
|
||||
it('does not crash', function () {
|
||||
a = shuffle(test.slice(0), obj1)
|
||||
b = shuffle(test.slice(0), obj2)
|
||||
})
|
||||
})
|
||||
|
||||
describe('seeding with a string', function () {
|
||||
var str = 'Lorem ipsum'
|
||||
, a
|
||||
, b
|
||||
|
||||
it('does not crash', function () {
|
||||
a = shuffle(test.slice(0), str)
|
||||
b = shuffle(test.slice(0), str)
|
||||
})
|
||||
|
||||
it('output is the same for the same seed', function () {
|
||||
assert.deepEqual(a, b)
|
||||
assert.deepEqual(a, [ { heeeheee: true }, 2, 'blah', 11, 'adsf', 42, 37 ])
|
||||
})
|
||||
})
|
||||
|
||||
describe('errors', function () {
|
||||
it('on String input', function () {
|
||||
assert.throws(function () {
|
||||
shuffle('adf')
|
||||
})
|
||||
})
|
||||
it('on Boolean input', function () {
|
||||
assert.throws(function () {
|
||||
shuffle(true)
|
||||
})
|
||||
})
|
||||
it('on Object input', function () {
|
||||
assert.throws(function () {
|
||||
shuffle({ a: true })
|
||||
})
|
||||
})
|
||||
it('on Number input', function () {
|
||||
assert.throws(function () {
|
||||
shuffle(40)
|
||||
})
|
||||
})
|
||||
it('on null input', function () {
|
||||
assert.throws(function () {
|
||||
shuffle(null)
|
||||
})
|
||||
})
|
||||
it('on undefined input', function () {
|
||||
assert.throws(function () {
|
||||
shuffle(undefined)
|
||||
})
|
||||
})
|
||||
it('not on empty array', function () {
|
||||
var a = shuffle([])
|
||||
assert.deepEqual(a, [])
|
||||
})
|
||||
})
|
Reference in New Issue
Block a user