Skip to content

Commit 8b839c0

Browse files
authored
Update test.ndarray.js
Signed-off-by: Kaushikgtm <[email protected]>
1 parent 1b70250 commit 8b839c0

File tree

1 file changed

+32
-94
lines changed

1 file changed

+32
-94
lines changed
Lines changed: 32 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/**
22
* @license Apache-2.0
33
*
4-
* Copyright (c) 2020 The Stdlib Authors.
4+
* Copyright (c) 2025 The Stdlib Authors.
55
*
66
* Licensed under the Apache License, Version 2.0 (the "License");
77
* you may not use this file except in compliance with the License.
@@ -26,7 +26,6 @@ var isnan = require( '@stdlib/math/base/assert/is-nan' );
2626
var isPositiveZero = require( '@stdlib/math/base/assert/is-positive-zero' );
2727
var nanminabs = require( './../lib/ndarray.js' );
2828

29-
3029
// TESTS //
3130

3231
tape( 'main export is a function', function test( t ) {
@@ -41,8 +40,7 @@ tape( 'the function has an arity of 4', function test( t ) {
4140
});
4241

4342
tape( 'the function calculates the minimum absolute value of a strided array', function test( t ) {
44-
var x;
45-
var v;
43+
var x, v;
4644

4745
x = [ 1.0, -2.0, -4.0, 5.0, NaN, 0.0, 3.0 ];
4846
v = nanminabs( x.length, x, 1, 0 );
@@ -67,116 +65,56 @@ tape( 'the function calculates the minimum absolute value of a strided array', f
6765
t.end();
6866
});
6967

70-
tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `NaN`', function test( t ) {
71-
var x;
72-
var v;
73-
74-
x = [ 1.0, -2.0, -4.0, 5.0, 3.0 ];
68+
tape( 'if N <= 0, the function returns NaN', function test( t ) {
69+
var x = [ 1.0, -2.0, -4.0, 5.0, 3.0 ];
7570

76-
v = nanminabs( 0, x, 1, 0 );
77-
t.strictEqual( isnan( v ), true, 'returns expected value' );
78-
79-
v = nanminabs( -1, x, 1, 0 );
80-
t.strictEqual( isnan( v ), true, 'returns expected value' );
71+
t.strictEqual( isnan( nanminabs( 0, x, 1, 0 ) ), true, 'returns NaN' );
72+
t.strictEqual( isnan( nanminabs( -1, x, 1, 0 ) ), true, 'returns NaN' );
8173

8274
t.end();
8375
});
8476

85-
tape( 'if provided an `N` parameter equal to `1`, the function returns the first indexed element', function test( t ) {
86-
var x;
87-
var v;
88-
89-
x = [ 1.0, -2.0, -4.0, 5.0, 3.0 ];
90-
91-
v = nanminabs( 1, x, 1, 0 );
92-
t.strictEqual( v, 1.0, 'returns expected value' );
93-
77+
tape( 'if N = 1, the function returns the first indexed element', function test( t ) {
78+
var x = [ 1.0, -2.0, -4.0, 5.0, 3.0 ];
79+
t.strictEqual( nanminabs( 1, x, 1, 0 ), 1.0, 'returns expected value' );
9480
t.end();
9581
});
9682

97-
tape( 'the function supports a `stride` parameter', function test( t ) {
98-
var N;
99-
var x;
100-
var v;
101-
102-
x = [
103-
1.0, // 0
104-
2.0,
105-
2.0, // 1
106-
-7.0,
107-
-2.0, // 2
108-
3.0,
109-
4.0, // 3
110-
2.0,
111-
NaN, // 4
112-
NaN
113-
];
114-
115-
N = floor( x.length / 2 );
116-
v = nanminabs( N, x, 2, 0 );
117-
83+
tape( 'the function supports a stride parameter', function test( t ) {
84+
var x = [ 1.0, 2.0, 2.0, -7.0, -2.0, 3.0, 4.0, 2.0, NaN, NaN ];
85+
var N = floor( x.length / 2 );
86+
var v = nanminabs( N, x, 2, 0 );
11887
t.strictEqual( v, 1.0, 'returns expected value' );
11988
t.end();
12089
});
12190

122-
tape( 'the function supports a negative `stride` parameter', function test( t ) {
123-
var N;
124-
var x;
125-
var v;
126-
127-
x = [
128-
NaN, // 4
129-
NaN,
130-
1.0, // 3
131-
2.0,
132-
2.0, // 2
133-
-7.0,
134-
-2.0, // 1
135-
3.0,
136-
4.0, // 0
137-
2.0
138-
];
139-
140-
N = floor( x.length / 2 );
141-
v = nanminabs( N, x, -2, 8 );
142-
91+
tape( 'the function supports a negative stride parameter', function test( t ) {
92+
var x = [ NaN, NaN, 1.0, 2.0, 2.0, -7.0, -2.0, 3.0, 4.0, 2.0 ];
93+
var N = floor( x.length / 2 );
94+
var v = nanminabs( N, x, -2, 8 );
14395
t.strictEqual( v, 1.0, 'returns expected value' );
14496
t.end();
14597
});
14698

147-
tape( 'if provided a `stride` parameter equal to `0`, the function returns the first indexed element', function test( t ) {
148-
var x;
149-
var v;
150-
151-
x = [ 1.0, -2.0, -4.0, 5.0, 3.0 ];
152-
153-
v = nanminabs( x.length, x, 0, 0 );
154-
t.strictEqual( v, 1.0, 'returns expected value' );
155-
99+
tape( 'if stride = 0, the function returns the first indexed element', function test( t ) {
100+
var x = [ 1.0, -2.0, -4.0, 5.0, 3.0 ];
101+
t.strictEqual( nanminabs( x.length, x, 0, 0 ), 1.0, 'returns expected value' );
156102
t.end();
157103
});
158104

159-
tape( 'the function supports an `offset` parameter', function test( t ) {
160-
var N;
161-
var x;
162-
var v;
163-
164-
x = [
165-
2.0,
166-
1.0, // 0
167-
2.0,
168-
-2.0, // 1
169-
-2.0,
170-
2.0, // 2
171-
3.0,
172-
4.0, // 3
173-
NaN,
174-
NaN // 4
175-
];
176-
N = floor( x.length / 2 );
177-
178-
v = nanminabs( N, x, 2, 1 );
105+
tape( 'the function supports an offset parameter', function test( t ) {
106+
var x = [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0, NaN, NaN ];
107+
var N = floor( x.length / 2 );
108+
var v = nanminabs( N, x, 2, 1 );
179109
t.strictEqual( v, 1.0, 'returns expected value' );
110+
t.end();
111+
});
180112

113+
tape( 'the function handles large arrays efficiently', function test( t ) {
114+
var x = new Array( 1e6 ).fill( NaN );
115+
x[500] = -3.0;
116+
x[750000] = 2.0;
117+
var v = nanminabs( x.length, x, 1, 0 );
118+
t.strictEqual( v, 2.0, 'returns expected value' );
181119
t.end();
182120
});

0 commit comments

Comments
 (0)