Skip to content

Commit 022fc9b

Browse files
committed
feat: accessor arrays tests
--- 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: passed - 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 098cc5b commit 022fc9b

File tree

3 files changed

+168
-0
lines changed

3 files changed

+168
-0
lines changed

lib/node_modules/@stdlib/stats/base/min/lib/ndarray.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222

2323
var isnan = require( '@stdlib/math/base/assert/is-nan' );
2424
var isNegativeZero = require( '@stdlib/math/base/assert/is-negative-zero' );
25+
var arraylike2object = require( '@stdlib/array/base/arraylike2object' );
26+
var accessors = require( './accessors.js' );
2527

2628

2729
// MAIN //
@@ -44,12 +46,17 @@ var isNegativeZero = require( '@stdlib/math/base/assert/is-negative-zero' );
4446
function min( N, x, strideX, offsetX ) {
4547
var min;
4648
var ix;
49+
var o;
4750
var v;
4851
var i;
4952

5053
if ( N <= 0 ) {
5154
return NaN;
5255
}
56+
o = arraylike2object( x );
57+
if ( o.accessorProtocol ) {
58+
return accessors( N, o, strideX, offsetX );
59+
}
5360
if ( N === 1 || strideX === 0 ) {
5461
return x[ offsetX ];
5562
}

lib/node_modules/@stdlib/stats/base/min/test/test.main.js

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
var tape = require( 'tape' );
2424
var isnan = require( '@stdlib/math/base/assert/is-nan' );
2525
var isNegativeZero = require( '@stdlib/math/base/assert/is-negative-zero' );
26+
var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' );
2627
var Float64Array = require( '@stdlib/array/float64' );
2728
var min = require( './../lib/main.js' );
2829

@@ -67,6 +68,33 @@ tape( 'the function calculates the minimum value of a strided array', function t
6768
t.end();
6869
});
6970

71+
tape( 'the function calculates the minimum value of a strided array (accessors)', function test( t ) {
72+
var x;
73+
var v;
74+
75+
x = [ 1.0, -2.0, -4.0, 5.0, 0.0, 3.0 ];
76+
v = min( x.length, toAccessorArray( x ), 1 );
77+
t.strictEqual( v, -4.0, 'returns expected value' );
78+
79+
x = [ -4.0, -5.0 ];
80+
v = min( x.length, toAccessorArray( x ), 1 );
81+
t.strictEqual( v, -5.0, 'returns expected value' );
82+
83+
x = [ 0.0, -0.0, 0.0 ];
84+
v = min( x.length, toAccessorArray( x ), 1 );
85+
t.strictEqual( isNegativeZero( v ), true, 'returns expected value' );
86+
87+
x = [ NaN ];
88+
v = min( x.length, toAccessorArray( x ), 1 );
89+
t.strictEqual( isnan( v ), true, 'returns expected value' );
90+
91+
x = [ NaN, NaN ];
92+
v = min( x.length, toAccessorArray( x ), 1 );
93+
t.strictEqual( isnan( v ), true, 'returns expected value' );
94+
95+
t.end();
96+
});
97+
7098
tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `NaN`', function test( t ) {
7199
var x;
72100
var v;
@@ -115,6 +143,27 @@ tape( 'the function supports a `stride` parameter', function test( t ) {
115143
t.end();
116144
});
117145

146+
tape( 'the function supports a `stride` parameter (accessors)', function test( t ) {
147+
var x;
148+
var v;
149+
150+
x = [
151+
1.0, // 0
152+
2.0,
153+
2.0, // 1
154+
-7.0,
155+
-2.0, // 2
156+
3.0,
157+
4.0, // 3
158+
2.0
159+
];
160+
161+
v = min( 4, toAccessorArray( x ), 2 );
162+
163+
t.strictEqual( v, -2.0, 'returns expected value' );
164+
t.end();
165+
});
166+
118167
tape( 'the function supports a negative `stride` parameter', function test( t ) {
119168
var x;
120169
var v;
@@ -136,6 +185,27 @@ tape( 'the function supports a negative `stride` parameter', function test( t )
136185
t.end();
137186
});
138187

188+
tape( 'the function supports a negative `stride` parameter (accessors)', function test( t ) {
189+
var x;
190+
var v;
191+
192+
x = [
193+
1.0, // 3
194+
2.0,
195+
2.0, // 2
196+
-7.0,
197+
-2.0, // 1
198+
3.0,
199+
4.0, // 0
200+
2.0
201+
];
202+
203+
v = min( 4, toAccessorArray( x ), -2 );
204+
205+
t.strictEqual( v, -2.0, 'returns expected value' );
206+
t.end();
207+
});
208+
139209
tape( 'if provided a `stride` parameter equal to `0`, the function returns the first element', function test( t ) {
140210
var x;
141211
var v;

lib/node_modules/@stdlib/stats/base/min/test/test.ndarray.js

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
var tape = require( 'tape' );
2424
var isnan = require( '@stdlib/math/base/assert/is-nan' );
2525
var isNegativeZero = require( '@stdlib/math/base/assert/is-negative-zero' );
26+
var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' );
2627
var min = require( './../lib/ndarray.js' );
2728

2829

@@ -66,6 +67,33 @@ tape( 'the function calculates the minimum value of a strided array', function t
6667
t.end();
6768
});
6869

70+
tape( 'the function calculates the minimum value of a strided array (accessors)', function test( t ) {
71+
var x;
72+
var v;
73+
74+
x = [ 1.0, -2.0, -4.0, 5.0, 0.0, 3.0 ];
75+
v = min( x.length, toAccessorArray( x ), 1, 0 );
76+
t.strictEqual( v, -4.0, 'returns expected value' );
77+
78+
x = [ -4.0, -5.0 ];
79+
v = min( x.length, toAccessorArray( x ), 1, 0 );
80+
t.strictEqual( v, -5.0, 'returns expected value' );
81+
82+
x = [ 0.0, -0.0, 0.0 ];
83+
v = min( x.length, toAccessorArray( x ), 1, 0 );
84+
t.strictEqual( isNegativeZero( v ), true, 'returns expected value' );
85+
86+
x = [ NaN ];
87+
v = min( x.length, toAccessorArray( x ), 1, 0 );
88+
t.strictEqual( isnan( v ), true, 'returns expected value' );
89+
90+
x = [ NaN, NaN ];
91+
v = min( x.length, toAccessorArray( x ), 1, 0 );
92+
t.strictEqual( isnan( v ), true, 'returns expected value' );
93+
94+
t.end();
95+
});
96+
6997
tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `NaN`', function test( t ) {
7098
var x;
7199
var v;
@@ -114,6 +142,27 @@ tape( 'the function supports a `stride` parameter', function test( t ) {
114142
t.end();
115143
});
116144

145+
tape( 'the function supports a `stride` parameter (accessors)', function test( t ) {
146+
var x;
147+
var v;
148+
149+
x = [
150+
1.0, // 0
151+
2.0,
152+
2.0, // 1
153+
-7.0,
154+
-2.0, // 2
155+
3.0,
156+
4.0, // 3
157+
2.0
158+
];
159+
160+
v = min( 4, toAccessorArray( x ), 2, 0 );
161+
162+
t.strictEqual( v, -2.0, 'returns expected value' );
163+
t.end();
164+
});
165+
117166
tape( 'the function supports a negative `stride` parameter', function test( t ) {
118167
var x;
119168
var v;
@@ -135,6 +184,27 @@ tape( 'the function supports a negative `stride` parameter', function test( t )
135184
t.end();
136185
});
137186

187+
tape( 'the function supports a negative `stride` parameter (accessors)', function test( t ) {
188+
var x;
189+
var v;
190+
191+
x = [
192+
1.0, // 3
193+
2.0,
194+
2.0, // 2
195+
-7.0,
196+
-2.0, // 1
197+
3.0,
198+
4.0, // 0
199+
2.0
200+
];
201+
202+
v = min( 4, toAccessorArray( x ), -2, 6 );
203+
204+
t.strictEqual( v, -2.0, 'returns expected value' );
205+
t.end();
206+
});
207+
138208
tape( 'if provided a `stride` parameter equal to `0`, the function returns the first indexed element', function test( t ) {
139209
var x;
140210
var v;
@@ -167,3 +237,24 @@ tape( 'the function supports an `offset` parameter', function test( t ) {
167237

168238
t.end();
169239
});
240+
241+
tape( 'the function supports an `offset` parameter (accessors)', function test( t ) {
242+
var x;
243+
var v;
244+
245+
x = [
246+
2.0,
247+
1.0, // 0
248+
2.0,
249+
-2.0, // 1
250+
-2.0,
251+
2.0, // 2
252+
3.0,
253+
4.0 // 3
254+
];
255+
256+
v = min( 4, toAccessorArray( x ), 2, 1 );
257+
t.strictEqual( v, -2.0, 'returns expected value' );
258+
259+
t.end();
260+
});

0 commit comments

Comments
 (0)