-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathindex.js
More file actions
100 lines (85 loc) · 2.31 KB
/
index.js
File metadata and controls
100 lines (85 loc) · 2.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
var garbage = module.exports = function (count) {
if (!count) count = 20;
return generate(count)[1];
};
garbage.json = garbage;
function generate (count) {
if (count === undefined) count = 20;
var types = [ 'array', 'object', 'string', 'number', 'boolean' ];
var ix = Math.floor(Math.random() * types.length);
var type = types[ix];
return generate[type](count);
}
garbage.size = function () {
var m = Math.random(), n = Math.random();
return Math.abs(Math.floor(5 / (1 - n * n) - 5 + m * 5));
};
generate.boolean = function () {
var n = Math.random();
return [ 1, n > 0.5 ];
};
garbage.boolean = function () {
return generate.boolean()[1];
};
generate.number = function () {
var n = Math.random();
return [ 1, Math.tan((n - 0.5) * Math.PI) ];
};
garbage.number = function () {
return generate.number()[1];
};
generate.array = function (count) {
var res = [];
if (count <= 0) return res;
var len = garbage.size();
var size = 1;
for (var i = 0; i < len && size < count; i++) {
var x = generate(--count - len);
res.push(x[1]);
size += x[0];
}
return [ size, res ];
};
garbage.array = function (count) {
return generate.array(count)[1];
};
generate.object = function (count) {
if (count === undefined) count = 20;
var res = {};
if (count <= 0) return res;
var len = garbage.size();
var size = 1;
for (var i = 0; i < len && size < count; i++) {
var key = generate.string()[1];
var x = generate(--count - len);
res[key] = x[1];
size += x[0];
}
return [ size, res ];
};
garbage.object = function (count) {
return generate.object(count)[1];
};
generate.string = function () {
var len = Math.floor(
Math.random() * Math.random() * 20
+ Math.random() * 2
);
var res = [];
for (var i = 0; i < len; i++) {
var c = garbage.char();
res.push(c);
}
return [ 1, res.join('') ];
};
garbage.string = function () {
return generate.string()[1];
};
garbage.char = function () {
var charset = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+ 'abcdefghijklmnopqrstuvwxyz'
+ '0123456789`~!@#$%^&*()-_=+[]{}|\\:;'
+ '\'",.<>?/ \t\n'
;
return charset.charAt(Math.floor(Math.random() * charset.length));
};