Skip to content

Commit 4b136ff

Browse files
committed
test: update main MGF tests to match native ones and align tolerances
--- type: pre_commit_static_analysis_report description: Results of running static analysis checks when committing changes. report: - task: lint_filenames status: passed - task: lint_editorconfig status: passed - task: lint_markdown status: na - task: lint_package_json status: na - task: lint_repl_help status: na - task: lint_javascript_src status: na - task: lint_javascript_cli status: na - task: lint_javascript_examples status: na - task: lint_javascript_tests status: passed - task: lint_javascript_benchmarks status: na - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - task: lint_c_tests_fixtures status: na - task: lint_shell status: na - task: lint_typescript_declarations status: na - task: lint_typescript_tests status: na - task: lint_license_headers status: passed ---
1 parent 1fc8766 commit 4b136ff

File tree

2 files changed

+58
-49
lines changed

2 files changed

+58
-49
lines changed

lib/node_modules/@stdlib/stats/base/dists/poisson/mgf/test/test.mgf.js

Lines changed: 55 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,18 @@
2323
var tape = require( 'tape' );
2424
var isnan = require( '@stdlib/math/base/assert/is-nan' );
2525
var abs = require( '@stdlib/math/base/special/abs' );
26+
var exp = require( '@stdlib/math/base/special/exp' );
27+
var PINF = require( '@stdlib/constants/float64/pinf' );
28+
var NINF = require( '@stdlib/constants/float64/ninf' );
2629
var EPS = require( '@stdlib/constants/float64/eps' );
2730
var mgf = require( './../lib' );
2831

2932

3033
// FIXTURES //
3134

32-
var small = require( './fixtures/julia/small.json' );
33-
var medium = require( './fixtures/julia/medium.json' );
34-
var large = require( './fixtures/julia/large.json' );
35+
var smallRange = require( './fixtures/julia/small.json' );
36+
var mediumRange = require( './fixtures/julia/medium.json' );
37+
var largeRange = require( './fixtures/julia/large.json' );
3538

3639

3740
// TESTS //
@@ -43,101 +46,107 @@ tape( 'main export is a function', function test( t ) {
4346
});
4447

4548
tape( 'if provided `NaN` for any parameter, the function returns `NaN`', function test( t ) {
46-
var y = mgf( NaN, 1.0 );
49+
var y = mgf( NaN, 0.5 );
4750
t.equal( isnan( y ), true, 'returns NaN' );
4851
y = mgf( 0.0, NaN );
4952
t.equal( isnan( y ), true, 'returns NaN' );
5053
t.end();
5154
});
5255

53-
tape( 'if provided a nonpositive`lambda`, the function always returns `NaN`', function test( t ) {
56+
tape( 'if provided `lambda <= 0`, the function returns `NaN`', function test( t ) {
5457
var y;
5558

5659
y = mgf( 2.0, -1.0 );
5760
t.equal( isnan( y ), true, 'returns NaN' );
5861

59-
y = mgf( 0.0, -1.0 );
62+
y = mgf( 2.0, 0.0 );
6063
t.equal( isnan( y ), true, 'returns NaN' );
6164

62-
y = mgf( 0.0, 0.0 );
63-
t.equal( isnan( y ), true, 'returns NaN' );
65+
t.end();
66+
});
6467

65-
y = mgf( -2.0, 0.0 );
66-
t.equal( isnan( y ), true, 'returns NaN' );
68+
tape( 'if provided `+infinity` for `t` and a valid `lambda`, the function returns `+infinity`', function test( t ) {
69+
var y = mgf( PINF, 0.5 );
70+
t.equal( y, PINF, 'returns +infinity' );
71+
t.end();
72+
});
6773

74+
tape( 'if provided `-infinity` for `t` and a valid `lambda`, the function returns `exp(-lambda)`', function test( t ) {
75+
var y = mgf( NINF, 0.5 );
76+
t.equal( y, exp(-0.5), 'returns exp(-lambda)' );
6877
t.end();
6978
});
7079

71-
tape( 'the function evaluates the mgf for `x` given small `lambda` values', function test( t ) {
80+
tape( 'the function evaluates the mgf for `t` given a small range `lambda`', function test( t ) {
7281
var expected;
7382
var lambda;
83+
var values;
7484
var delta;
7585
var tol;
76-
var x;
7786
var y;
7887
var i;
7988

80-
expected = small.expected;
81-
x = small.x;
82-
lambda = small.lambda;
83-
for ( i = 0; i < x.length; i++ ) {
84-
y = mgf( x[i], lambda[i] );
85-
if ( y === expected[i] ) {
86-
t.equal( y, expected[i], 'x: '+x[i]+'. λ: '+lambda[i]+'. y: '+y+'. E: '+expected[i] );
89+
expected = smallRange.expected;
90+
values = smallRange.x;
91+
lambda = smallRange.lambda;
92+
for ( i = 0; i < values.length; i++ ) {
93+
y = mgf( values[ i ], lambda[ i ] );
94+
if ( y === expected[ i ] ) {
95+
t.equal( y, expected[ i ], 't: ' + values[ i ] + ', lambda: ' + lambda[ i ] + ', y: ' + y + ', expected: ' + expected[ i ] );
8796
} else {
88-
delta = abs( y - expected[i] );
89-
tol = EPS * abs( expected[i] );
90-
t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. λ: '+lambda[i]+'. y: '+y+'. E: '+expected[i]+'. Δ: '+delta+'. tol: '+tol+'.' );
97+
delta = abs( y - expected[ i ] );
98+
tol = 1.0 * EPS * abs( expected[ i ] );
99+
t.ok( delta <= tol, 'within tolerance. t: ' + values[ i ] + '. lambda: ' + lambda[ i ] + '. y: ' + y + '. E: ' + expected[ i ] + '. Δ: ' + delta + '. tol: ' + tol + '.' );
91100
}
92101
}
93102
t.end();
94103
});
95104

96-
tape( 'the function evaluates the mgf for `x` given medium `lambda` values', function test( t ) {
105+
tape( 'the function evaluates the mgf for `t` given a medium range `lambda`', function test( t ) {
97106
var expected;
98107
var lambda;
108+
var values;
99109
var delta;
100110
var tol;
101-
var x;
102111
var y;
103112
var i;
104113

105-
expected = medium.expected;
106-
x = medium.x;
107-
lambda = medium.lambda;
108-
for ( i = 0; i < x.length; i++ ) {
109-
y = mgf( x[i], lambda[i] );
110-
if ( y === expected[i] ) {
111-
t.equal( y, expected[i], 'x: '+x[i]+'. λ: '+lambda[i]+'. y: '+y+'. E: '+expected[i] );
114+
expected = mediumRange.expected;
115+
values = mediumRange.x;
116+
lambda = mediumRange.lambda;
117+
for ( i = 0; i < values.length; i++ ) {
118+
y = mgf( values[ i ], lambda[ i ] );
119+
if ( y === expected[ i ] ) {
120+
t.equal( y, expected[ i ], 't: ' + values[ i ] + ', lambda: ' + lambda[ i ] + ', y: ' + y + ', expected: ' + expected[ i ] );
112121
} else {
113-
delta = abs( y - expected[i] );
114-
tol = EPS * abs( expected[i] );
115-
t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. λ: '+lambda[i]+'. y: '+y+'. E: '+expected[i]+'. Δ: '+delta+'. tol: '+tol+'.' );
122+
delta = abs( y - expected[ i ] );
123+
tol = 1.0 * EPS * abs( expected[ i ] );
124+
t.ok( delta <= tol, 'within tolerance. t: ' + values[ i ] + '. lambda: ' + lambda[ i ] + '. y: ' + y + '. E: ' + expected[ i ] + '. Δ: ' + delta + '. tol: ' + tol + '.' );
116125
}
117126
}
118127
t.end();
119128
});
120129

121-
tape( 'the function evaluates the mgf for `x` given large `lambda` values', function test( t ) {
130+
tape( 'the function evaluates the mgf for `t` given a large range `lambda`', function test( t ) {
122131
var expected;
132+
var values;
123133
var lambda;
124134
var delta;
125135
var tol;
126-
var x;
127136
var y;
128137
var i;
129138

130-
expected = large.expected;
131-
x = large.x;
132-
lambda = large.lambda;
133-
for ( i = 0; i < x.length; i++ ) {
134-
y = mgf( x[i], lambda[i] );
135-
if ( y === expected[i] ) {
136-
t.equal( y, expected[i], 'x: '+x[i]+'. λ: '+lambda[i]+'. y: '+y+'. E: '+expected[i] );
139+
expected = largeRange.expected;
140+
values = largeRange.x;
141+
lambda = largeRange.lambda;
142+
for ( i = 0; i < values.length; i++ ) {
143+
y = mgf( values[ i ], lambda[ i ] );
144+
if ( y === expected[ i ] ) {
145+
t.equal( y, expected[ i ], 't: ' + values[ i ] + ', lambda: ' + lambda[ i ] + ', y: ' + y + ', expected: ' + expected[ i ] );
137146
} else {
138-
delta = abs( y - expected[i] );
139-
tol = EPS * abs( expected[i] );
140-
t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. λ: '+lambda[i]+'. y: '+y+'. E: '+expected[i]+'. Δ: '+delta+'. tol: '+tol+'.' );
147+
delta = abs( y - expected[ i ] );
148+
tol = 1.0 * EPS * abs( expected[ i ] );
149+
t.ok( delta <= tol, 'within tolerance. t: ' + values[ i ] + '. lambda: ' + lambda[ i ] + '. y: ' + y + '. E: ' + expected[ i ] + '. Δ: ' + delta + '. tol: ' + tol + '.' );
141150
}
142151
}
143152
t.end();

lib/node_modules/@stdlib/stats/base/dists/poisson/mgf/test/test.native.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ tape( 'the function evaluates the mgf for `t` given a small range `lambda`', opt
104104
t.equal( y, expected[ i ], 't: ' + values[ i ] + ', lambda: ' + lambda[ i ] + ', y: ' + y + ', expected: ' + expected[ i ] );
105105
} else {
106106
delta = abs( y - expected[ i ] );
107-
tol = 2.0 * EPS * abs( expected[ i ] );
107+
tol = 1.0 * EPS * abs( expected[ i ] );
108108
t.ok( delta <= tol, 'within tolerance. t: ' + values[ i ] + '. lambda: ' + lambda[ i ] + '. y: ' + y + '. E: ' + expected[ i ] + '. Δ: ' + delta + '. tol: ' + tol + '.' );
109109
}
110110
}
@@ -129,7 +129,7 @@ tape( 'the function evaluates the mgf for `t` given a medium range `lambda`', op
129129
t.equal( y, expected[ i ], 't: ' + values[ i ] + ', lambda: ' + lambda[ i ] + ', y: ' + y + ', expected: ' + expected[ i ] );
130130
} else {
131131
delta = abs( y - expected[ i ] );
132-
tol = 2.0 * EPS * abs( expected[ i ] );
132+
tol = 1.0 * EPS * abs( expected[ i ] );
133133
t.ok( delta <= tol, 'within tolerance. t: ' + values[ i ] + '. lambda: ' + lambda[ i ] + '. y: ' + y + '. E: ' + expected[ i ] + '. Δ: ' + delta + '. tol: ' + tol + '.' );
134134
}
135135
}
@@ -154,7 +154,7 @@ tape( 'the function evaluates the mgf for `t` given a large range `lambda`', opt
154154
t.equal( y, expected[ i ], 't: ' + values[ i ] + ', lambda: ' + lambda[ i ] + ', y: ' + y + ', expected: ' + expected[ i ] );
155155
} else {
156156
delta = abs( y - expected[ i ] );
157-
tol = 2.0 * EPS * abs( expected[ i ] );
157+
tol = 1.0 * EPS * abs( expected[ i ] );
158158
t.ok( delta <= tol, 'within tolerance. t: ' + values[ i ] + '. lambda: ' + lambda[ i ] + '. y: ' + y + '. E: ' + expected[ i ] + '. Δ: ' + delta + '. tol: ' + tol + '.' );
159159
}
160160
}

0 commit comments

Comments
 (0)