Skip to content

Commit 466aa8b

Browse files
Created test and fixed implementation of web based generator.
1 parent 8037532 commit 466aa8b

File tree

3 files changed

+51
-3
lines changed

3 files changed

+51
-3
lines changed

.npmignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@
44
.eslintrc.json
55
webpack.config.js
66
.github
7-
tests
7+
test

src/WebGenerator.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ export default class WebGenerator extends Generator {
1010
}
1111

1212
// Fallback to random if no crypto on window.
13-
for (let i = 0; i < len; i++) {
14-
list[i] = Math.random();
13+
for (let i = len; i-- > 0;) {
14+
list[i] = Math.floor(Math.random() * 256.0);
1515
}
1616

1717
return list;

test/WebGenerator.test.js

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import WebGenerator from '../src/WebGenerator';
2+
3+
const generator = new WebGenerator();
4+
5+
describe('Tests for web generator.', () => {
6+
test('Return value is correct type.', () => {
7+
const result = generator.getRandom(10);
8+
expect(result).toBeInstanceOf(Uint8Array);
9+
10+
});
11+
12+
test('List contains values between -255 and +255', () => {
13+
const result = generator.getRandom(128);
14+
let min = 0;
15+
let max = 0;
16+
17+
result.forEach((obj) => {
18+
if (obj < min) {
19+
min = obj;
20+
}
21+
if (obj > max) {
22+
max = obj;
23+
}
24+
});
25+
26+
expect(max).toBeLessThan(256);
27+
expect(min).toBeGreaterThan(-256);
28+
});
29+
30+
test('Two calls generates different values.', () => {
31+
const one = generator.getRandom(20);
32+
const two = generator.getRandom(20);
33+
34+
expect(JSON.stringify(one)).not.toStrictEqual(JSON.stringify(two));
35+
});
36+
37+
test('Uses crypt of it exists.', () => {
38+
window.crypto = {
39+
getRandomValues (array) {
40+
array = array.fill(1).values();
41+
}
42+
};
43+
const result = generator.getRandom(10);
44+
expect(result).toEqual(Uint8Array.from([1, 1, 1, 1, 1, 1, 1, 1, 1, 1]));
45+
46+
});
47+
});
48+

0 commit comments

Comments
 (0)