Skip to content

Commit 438a3ce

Browse files
committed
Update dependencies.
1 parent 52c3fda commit 438a3ce

24 files changed

+872
-879
lines changed

.github/eslint.json

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"problemMatcher": [
3+
{
4+
"owner": "eslint-compact",
5+
"pattern": [
6+
{
7+
"regexp": "^(.+):\\sline\\s(\\d+),\\scol\\s(\\d+),\\s(Error|Warning|Info)\\s-\\s(.+)\\s\\((.+)\\)$",
8+
"file": 1,
9+
"line": 2,
10+
"column": 3,
11+
"severity": 4,
12+
"message": 5,
13+
"code": 6
14+
}
15+
]
16+
}
17+
]
18+
}

.github/workflows/node.js.yml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
2+
3+
name: Node.js CI
4+
5+
on:
6+
push:
7+
branches: [ master ]
8+
pull_request:
9+
branches: [ master ]
10+
11+
jobs:
12+
build:
13+
14+
runs-on: ubuntu-latest
15+
16+
strategy:
17+
matrix:
18+
node-version: [12.x]
19+
20+
steps:
21+
- uses: actions/checkout@v2
22+
- name: Use Node.js ${{ matrix.node-version }}
23+
uses: actions/setup-node@v1
24+
with:
25+
node-version: ${{ matrix.node-version }}
26+
- run: yarn --frozen-lockfile
27+
- run: |
28+
echo ::add-matcher::.github/eslint.json
29+
yarn run eslint src test --format=compact
30+
- run: yarn test

package.json

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,17 +28,18 @@
2828
],
2929
"scripts": {
3030
"pretest": "rollup -c",
31-
"test": "tape 'test/**/*-test.js' && eslint src test",
31+
"test": "./test/run.sh",
3232
"prepublishOnly": "rm -rf dist && yarn test",
3333
"postpublish": "git push && git push --tags && cd ../d3.github.com && git pull && cp ../${npm_package_name}/dist/${npm_package_name}.js ${npm_package_name}.v${npm_package_version%%.*}.js && cp ../${npm_package_name}/dist/${npm_package_name}.min.js ${npm_package_name}.v${npm_package_version%%.*}.min.js && git add ${npm_package_name}.v${npm_package_version%%.*}.js ${npm_package_name}.v${npm_package_version%%.*}.min.js && git commit -m \"${npm_package_name} ${npm_package_version}\" && git push && cd - && zip -j dist/${npm_package_name}.zip -- LICENSE README.md dist/${npm_package_name}.js dist/${npm_package_name}.min.js"
3434
},
3535
"sideEffects": false,
3636
"devDependencies": {
3737
"d3-array": "1 - 2",
38-
"eslint": "6",
39-
"jsdom": "15",
40-
"rollup": "1",
41-
"rollup-plugin-terser": "5",
42-
"tape": "4"
38+
"eslint": "7",
39+
"jsdom": "16",
40+
"rollup": "2",
41+
"rollup-plugin-terser": "7",
42+
"tape": "4",
43+
"tape-await": "0.1"
4344
}
4445
}

test/bates-test.js

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,46 @@
1-
var tape = require("tape"),
1+
var tape = require("tape-await"),
22
d3 = Object.assign({}, require("../"), require("d3-array")),
33
skewness = require("./skewness"),
44
kurtosis = require("./kurtosis");
55

66
require("./inDelta");
77

8-
tape("d3.randomBates(n) returns random numbers with a mean of one-half", function(test) {
8+
tape("d3.randomBates(n) returns random numbers with a mean of one-half", test => {
99
var randomBates = d3.randomBates.source(d3.randomLcg(0.6351090615932817));
1010
test.inDelta(d3.mean(d3.range(10000).map(randomBates(1))), 0.5, 0.05);
1111
test.inDelta(d3.mean(d3.range(10000).map(randomBates(10))), 0.5, 0.05);
1212
test.inDelta(d3.mean(d3.range(10000).map(randomBates(1.5))), 0.5, 0.05);
1313
test.inDelta(d3.mean(d3.range(10000).map(randomBates(4.2))), 0.5, 0.05);
14-
test.end();
1514
});
1615

17-
tape("d3.randomBates(n) returns random numbers with a variance of 1 / (12 * n)", function(test) {
16+
tape("d3.randomBates(n) returns random numbers with a variance of 1 / (12 * n)", test => {
1817
var randomBates = d3.randomBates.source(d3.randomLcg(0.1284832084868286));
1918
test.inDelta(d3.variance(d3.range(10000).map(randomBates(1))), 1 / 12, 0.05);
2019
test.inDelta(d3.variance(d3.range(10000).map(randomBates(10))), 1 / 120, 0.05);
2120
test.inDelta(d3.variance(d3.range(10000).map(randomBates(1.5))), 1 / 18, 0.05);
2221
test.inDelta(d3.variance(d3.range(10000).map(randomBates(4.2))), 1 / 50.4, 0.05);
23-
test.end();
2422
});
2523

26-
tape("d3.randomBates(n) returns random numbers with a skewness of 0", function(test) {
24+
tape("d3.randomBates(n) returns random numbers with a skewness of 0", test => {
2725
var randomBates = d3.randomBates.source(d3.randomLcg(0.051567609139606674));
2826
test.inDelta(skewness(d3.range(10000).map(randomBates(1))), 0, 0.05);
2927
test.inDelta(skewness(d3.range(10000).map(randomBates(10))), 0, 0.05);
3028
test.inDelta(skewness(d3.range(10000).map(randomBates(1.5))), 0, 0.05);
3129
test.inDelta(skewness(d3.range(10000).map(randomBates(4.2))), 0, 0.05);
32-
test.end();
3330
});
3431

35-
tape("d3.randomBates(n) returns random numbers with a kurtosis of -6 / (5 * n)", function(test) {
32+
tape("d3.randomBates(n) returns random numbers with a kurtosis of -6 / (5 * n)", test => {
3633
var randomBates = d3.randomBates.source(d3.randomLcg(0.696913354780724));
3734
test.inDelta(kurtosis(d3.range(10000).map(randomBates(1))), -6 / 5, 0.05);
3835
test.inDelta(kurtosis(d3.range(10000).map(randomBates(10))), -6 / 50, 0.1);
3936
test.inDelta(kurtosis(d3.range(10000).map(randomBates(1.5))), -6 / 7.5, 0.05);
4037
test.inDelta(kurtosis(d3.range(10000).map(randomBates(4.2))), -6 / 21, 0.05);
41-
test.end();
4238
});
4339

44-
tape("d3.randomBates(0) is equivalent to d3.randomUniform()", function(test) {
40+
tape("d3.randomBates(0) is equivalent to d3.randomUniform()", test => {
4541
var randomBates = d3.randomBates.source(d3.randomLcg(0.7717596603725383));
4642
test.inDelta(d3.mean(d3.range(10000).map(randomBates(0))), 0.5, 0.05);
4743
test.inDelta(d3.variance(d3.range(10000).map(randomBates(0))), 1 / 12, 0.05);
4844
test.inDelta(skewness(d3.range(10000).map(randomBates(0))), 0, 0.05);
4945
test.inDelta(kurtosis(d3.range(10000).map(randomBates(0))), -6 / 5, 0.05);
50-
test.end();
5146
});

test/bernoulli-test.js

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,52 @@
1-
var tape = require("tape"),
1+
var tape = require("tape-await"),
22
skewness = require("./skewness"),
33
kurtosis = require("./kurtosis"),
44
d3 = Object.assign({}, require("../"), require("d3-array"));
55

66
require("./inDelta");
77

8-
var mean = function(p) { return p; };
9-
var variance = function(p) { return p * (1 - p); };
10-
var skew = function(p) { return (1 - 2 * p) / Math.sqrt(variance(p)); };
11-
var kurt = function(p) { return (6 * Math.pow(p, 2) - 6 * p + 1) / variance(p); };
8+
function mean(p) {
9+
return p;
10+
}
1211

13-
tape("randomBernoulli(p) returns random bernoulli distributed numbers with a mean of p", function(test) {
12+
function variance(p) {
13+
return p * (1 - p);
14+
}
15+
16+
function skew(p) {
17+
return (1 - 2 * p) / Math.sqrt(variance(p));
18+
}
19+
20+
function kurt(p) {
21+
return (6 * Math.pow(p, 2) - 6 * p + 1) / (variance(p));
22+
}
23+
24+
tape("randomBernoulli(p) returns random bernoulli distributed numbers with a mean of p", test => {
1425
var randomBernoulli = d3.randomBernoulli.source(d3.randomLcg(0.48444190806583465));
1526
test.inDelta(d3.mean(d3.range(10000).map(randomBernoulli(1))), mean(1), variance(1));
1627
test.inDelta(d3.mean(d3.range(10000).map(randomBernoulli(.5))), mean(.5), variance(.5));
1728
test.inDelta(d3.mean(d3.range(10000).map(randomBernoulli(.25))), mean(.25), variance(.25));
1829
test.inDelta(d3.mean(d3.range(10000).map(randomBernoulli(0))), mean(0), variance(0));
19-
test.end();
2030
});
2131

22-
tape("randomBernoulli(p) returns random bernoulli distributed numbers with a variance of p * (1 - p)", function(test) {
32+
tape("randomBernoulli(p) returns random bernoulli distributed numbers with a variance of p * (1 - p)", test => {
2333
var randomBernoulli = d3.randomBernoulli.source(d3.randomLcg(0.9781605192898934));
2434
test.inDelta(d3.variance(d3.range(10000).map(randomBernoulli(1))), variance(1), 0);
2535
test.inDelta(d3.variance(d3.range(10000).map(randomBernoulli(.5))), variance(.5), 0.05);
2636
test.inDelta(d3.variance(d3.range(10000).map(randomBernoulli(.25))), variance(.25), 0.05);
2737
test.inDelta(d3.variance(d3.range(10000).map(randomBernoulli(0))), variance(0), 0);
28-
test.end();
2938
});
3039

31-
tape("randomBernoulli(p) returns random bernoulli distributed numbers with a skewness of (1 - 2 * p) / sqrt(p * (1 - p)).", function(test) {
40+
tape("randomBernoulli(p) returns random bernoulli distributed numbers with a skewness of (1 - 2 * p) / sqrt(p * (1 - p)).", test => {
3241
var randomBernoulli = d3.randomBernoulli.source(d3.randomLcg(0.9776249148208429));
3342
test.inDelta(skewness(d3.range(10000).map(randomBernoulli(.5))), skew(.5), 0.08);
3443
test.inDelta(skewness(d3.range(10000).map(randomBernoulli(.25))), skew(.25), 0.05);
35-
test.end();
3644
});
3745

38-
tape("randomBernoulli(p) returns random bernoulli distributed numbers with a kurtosis excess of (6 * p^2 - 6 * p - 1) / (p * (1 - p)).", function(test) {
46+
tape("randomBernoulli(p) returns random bernoulli distributed numbers with a kurtosis excess of (6 * p^2 - 6 * p - 1) / (p * (1 - p)).", test => {
3947
var randomBernoulli = d3.randomBernoulli.source(d3.randomLcg(0.8260973119979638));
4048
test.inDelta(kurtosis(d3.range(10000).map(randomBernoulli(.05))), kurt(.05), kurt(.05) * 0.2);
4149
test.inDelta(kurtosis(d3.range(10000).map(randomBernoulli(.10))), kurt(.10), kurt(.10) * 0.2);
4250
test.inDelta(kurtosis(d3.range(10000).map(randomBernoulli(.15))), kurt(.15), kurt(.15) * 0.2);
4351
test.inDelta(kurtosis(d3.range(50000).map(randomBernoulli(.20))), kurt(.20), kurt(.20) * 0.4);
44-
test.end();
4552
});

test/beta-test.js

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,32 @@
1-
var tape = require("tape"),
1+
var tape = require("tape-await"),
22
d3 = Object.assign({}, require("../"), require("d3-array"));
33

44
require("./inDelta");
55

6-
var mean = function(alpha, beta) { return alpha / (alpha + beta); };
7-
var variance = function(alpha, beta) { return (alpha * beta) / Math.pow(alpha + beta, 2) / (alpha + beta + 1); };
6+
function mean(alpha, beta) {
7+
return alpha / (alpha + beta);
8+
}
89

9-
tape("randomBeta(alpha, beta) returns random numbers with a mean of alpha / (alpha + beta)", function(test) {
10+
function variance(alpha, beta) {
11+
return (alpha * beta) / Math.pow(alpha + beta, 2) / (alpha + beta + 1);
12+
}
13+
14+
tape("randomBeta(alpha, beta) returns random numbers with a mean of alpha / (alpha + beta)", test => {
1015
var randomBeta = d3.randomBeta.source(d3.randomLcg(0.8275880644751501));
1116
test.inDelta(d3.mean(d3.range(10000).map(randomBeta(1, 1))), mean(1, 1), 0.05);
1217
test.inDelta(d3.mean(d3.range(10000).map(randomBeta(1, 2))), mean(1, 2), 0.05);
1318
test.inDelta(d3.mean(d3.range(10000).map(randomBeta(2, 1))), mean(2, 1), 0.05);
1419
test.inDelta(d3.mean(d3.range(10000).map(randomBeta(3, 4))), mean(3, 4), 0.05);
1520
test.inDelta(d3.mean(d3.range(10000).map(randomBeta(0.5, 0.5))), mean(0.5, 0.5), 0.05);
1621
test.inDelta(d3.mean(d3.range(10000).map(randomBeta(2.7, 0.3))), mean(2.7, 0.3), 0.05);
17-
test.end();
1822
});
1923

20-
tape("randomBeta(alpha, beta) returns random numbers with a variance of (alpha * beta) / (alpha + beta)^2 / (alpha + beta + 1)", function(test) {
24+
tape("randomBeta(alpha, beta) returns random numbers with a variance of (alpha * beta) / (alpha + beta)^2 / (alpha + beta + 1)", test => {
2125
var randomBeta = d3.randomBeta.source(d3.randomLcg(0.8272345925494458));
2226
test.inDelta(d3.variance(d3.range(10000).map(randomBeta(1, 1))), variance(1, 1), 0.05);
2327
test.inDelta(d3.variance(d3.range(10000).map(randomBeta(1, 2))), variance(1, 2), 0.05);
2428
test.inDelta(d3.variance(d3.range(10000).map(randomBeta(2, 1))), variance(2, 1), 0.05);
2529
test.inDelta(d3.variance(d3.range(10000).map(randomBeta(3, 4))), variance(3, 4), 0.05);
2630
test.inDelta(d3.variance(d3.range(10000).map(randomBeta(0.5, 0.5))), variance(0.5, 0.5), 0.05);
2731
test.inDelta(d3.variance(d3.range(10000).map(randomBeta(2.7, 0.3))), variance(2.7, 0.3), 0.05);
28-
test.end();
2932
});

test/binomial-test.js

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,45 @@
1-
var tape = require("tape"),
1+
var tape = require("tape-await"),
22
skewness = require("./skewness"),
33
kurtosis = require("./kurtosis"),
44
d3 = Object.assign({}, require("../"), require("d3-array"));
55

66
require("./inDelta");
77

8-
var mean = function(n, p) { return n * p; };
9-
var variance = function(n, p) { return n * p * (1 - p); };
10-
var skew = function(n, p) { return (1 - 2 * p) / Math.sqrt(variance(n, p)); };
11-
var kurt = function(n, p) { return (6 * Math.pow(p, 2) - 6 * p + 1) / (variance(n, p)); };
8+
function mean(n, p) {
9+
return n * p;
10+
}
1211

13-
tape("randomBinomial(n, p) returns random binomial distributed numbers with a mean of n * p", function(test) {
12+
function variance(n, p) {
13+
return n * p * (1 - p);
14+
}
15+
16+
function skew(n, p) {
17+
return (1 - 2 * p) / Math.sqrt(variance(n, p));
18+
}
19+
20+
function kurt(n, p) {
21+
return (6 * Math.pow(p, 2) - 6 * p + 1) / (variance(n, p));
22+
}
23+
24+
tape("randomBinomial(n, p) returns random binomial distributed numbers with a mean of n * p", test => {
1425
var randomBinomial = d3.randomBinomial.source(d3.randomLcg(0.3994478770613372));
1526
test.inDelta(d3.mean(d3.range(10000).map(randomBinomial(100, 1))), mean(100, 1), variance(100, 1));
1627
test.inDelta(d3.mean(d3.range(10000).map(randomBinomial(100, .5))), mean(100, .5), variance(100, .5));
1728
test.inDelta(d3.mean(d3.range(10000).map(randomBinomial(100, .25))), mean(100, .25), variance(100, .25));
1829
test.inDelta(d3.mean(d3.range(10000).map(randomBinomial(100, 0))), mean(100, 0), variance(100, 0));
1930
test.inDelta(d3.mean(d3.range(10000).map(randomBinomial(0, 0))), mean(0, 0), variance(0, 0));
20-
test.end();
2131
});
2232

23-
tape("randomBinomial(n, p) returns random binomial distributed numbers with a variance of n * p * (1 - p)", function(test) {
33+
tape("randomBinomial(n, p) returns random binomial distributed numbers with a variance of n * p * (1 - p)", test => {
2434
var randomBinomial = d3.randomBinomial.source(d3.randomLcg(0.7214876234380256));
2535
test.inDelta(d3.variance(d3.range(10000).map(randomBinomial(100, 1))), variance(100, 1), 0);
2636
test.inDelta(d3.variance(d3.range(10000).map(randomBinomial(100, .5))), variance(100, .5), 0.5);
2737
test.inDelta(d3.variance(d3.range(10000).map(randomBinomial(100, .25))), variance(100, .25), 1);
2838
test.inDelta(d3.variance(d3.range(10000).map(randomBinomial(100, 0))), variance(100, 0), 0);
2939
test.inDelta(d3.variance(d3.range(10000).map(randomBinomial(0, 0))), variance(0, 0), 0);
30-
test.end();
3140
});
3241

33-
tape("randomBinomial(n, p) returns random binomial distributed numbers with a skewness of (1 - 2 * p) / sqrt(n * p * (1 - p))", function(test) {
42+
tape("randomBinomial(n, p) returns random binomial distributed numbers with a skewness of (1 - 2 * p) / sqrt(n * p * (1 - p))", test => {
3443
var randomBinomial = d3.randomBinomial.source(d3.randomLcg(0.0646181509291679));
3544
test.inDelta(skewness(d3.range(10000).map(randomBinomial(100, .05))), skew(100, .05), 0.05);
3645
test.inDelta(skewness(d3.range(10000).map(randomBinomial(100, .10))), skew(100, .10), 0.05);
@@ -41,10 +50,9 @@ tape("randomBinomial(n, p) returns random binomial distributed numbers with a sk
4150
test.inDelta(skewness(d3.range(10000).map(randomBinomial(100, .35))), skew(100, .35), 0.05);
4251
test.inDelta(skewness(d3.range(10000).map(randomBinomial(100, .40))), skew(100, .40), 0.05);
4352
test.inDelta(skewness(d3.range(10000).map(randomBinomial(100, .45))), skew(100, .45), 0.05);
44-
test.end();
4553
});
4654

47-
tape("randomBinomial(n, p) returns random binomial distributed numbers with a kurtosis excess of (6 * p^2 - 6 * p - 1) / (n * p * (1 - p))", function(test) {
55+
tape("randomBinomial(n, p) returns random binomial distributed numbers with a kurtosis excess of (6 * p^2 - 6 * p - 1) / (n * p * (1 - p))", test => {
4856
var randomBinomial = d3.randomBinomial.source(d3.randomLcg(0.6451552018202751));
4957
test.inDelta(kurtosis(d3.range(10000).map(randomBinomial(100, .05))), kurt(100, .05), 0.2);
5058
test.inDelta(kurtosis(d3.range(10000).map(randomBinomial(100, .10))), kurt(100, .10), 0.1);
@@ -55,5 +63,4 @@ tape("randomBinomial(n, p) returns random binomial distributed numbers with a ku
5563
test.inDelta(kurtosis(d3.range(10000).map(randomBinomial(100, .35))), kurt(100, .35), 0.1);
5664
test.inDelta(kurtosis(d3.range(10000).map(randomBinomial(100, .40))), kurt(100, .40), 0.1);
5765
test.inDelta(kurtosis(d3.range(10000).map(randomBinomial(100, .45))), kurt(100, .45), 0.05);
58-
test.end();
5966
});

test/cauchy-test.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
1-
var tape = require("tape"),
1+
var tape = require("tape-await"),
22
d3 = Object.assign({}, require("../"), require("d3-array"));
33

44
require("./inDelta");
55

66
// Since the Cauchy distribution is "pathological" in that no integral moments exist,
77
// we simply test for the median, equivalent to the location parameter.
88

9-
tape("randomCauchy(a, b) returns random numbers with a median of a", function(test) {
9+
tape("randomCauchy(a, b) returns random numbers with a median of a", test => {
1010
var randomCauchy = d3.randomCauchy.source(d3.randomLcg(0.42));
1111
test.inDelta(d3.median(d3.range(10000).map(randomCauchy())), 0, 0.05);
1212
test.inDelta(d3.median(d3.range(10000).map(randomCauchy(5))), 5, 0.05);
1313
test.inDelta(d3.median(d3.range(10000).map(randomCauchy(0, 4))), 0, 0.1);
1414
test.inDelta(d3.median(d3.range(10000).map(randomCauchy(1, 3))), 1, 0.1);
1515
test.inDelta(d3.median(d3.range(10000).map(randomCauchy(3, 1))), 3, 0.05);
16-
test.end();
1716
});

test/exponential-test.js

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
1-
var tape = require("tape"),
1+
var tape = require("tape-await"),
22
d3 = Object.assign({}, require("../"), require("d3-array"));
33

44
require("./inDelta");
55

6-
tape("d3.randomExponential(lambda) returns random exponentially distributed numbers with a mean of 1/lambda.", function(test) {
7-
var randomExponential = d3.randomExponential.source(d3.randomLcg(0.42));
8-
9-
var mean = 20,
6+
tape("d3.randomExponential(lambda) returns random exponentially distributed numbers with a mean of 1/lambda.", test => {
7+
var randomExponential = d3.randomExponential.source(d3.randomLcg(0.42)),
8+
mean = 20,
109
lambda = 1 / mean, // average rate (e.g. 1 per 20 minutes)
1110
times = d3.range(10000).map(randomExponential(lambda));
1211

@@ -18,6 +17,4 @@ tape("d3.randomExponential(lambda) returns random exponentially distributed numb
1817
expected = 1 - Math.exp(-elapsed * lambda);
1918
test.inDelta(within.length / times.length, expected, expected * 0.02);
2019
});
21-
22-
test.end();
2320
});

0 commit comments

Comments
 (0)