|
21 | 21 | // MODULES //
|
22 | 22 |
|
23 | 23 | var tape = require( 'tape' );
|
24 |
| -var floor = require( '@stdlib/math/base/special/floor' ); |
25 | 24 | var isnan = require( '@stdlib/math/base/assert/is-nan' );
|
| 25 | +var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' ); |
26 | 26 | var isNegativeZero = require( '@stdlib/math/base/assert/is-negative-zero' );
|
27 | 27 | var nanmskmin = require( './../lib/ndarray.js' );
|
28 | 28 |
|
@@ -98,6 +98,64 @@ tape( 'the function calculates the minimum value of a strided array according to
|
98 | 98 | t.end();
|
99 | 99 | });
|
100 | 100 |
|
| 101 | +tape( 'the function calculates the minimum value of a strided array according to a mask (accessor)', function test( t ) { |
| 102 | + var mask; |
| 103 | + var x; |
| 104 | + var v; |
| 105 | + |
| 106 | + x = [ 1.0, -2.0, -4.0, NaN, 5.0, 0.0, 3.0 ]; |
| 107 | + mask = [ 0, 0, 0, 1, 0, 0, 0 ]; |
| 108 | + v = nanmskmin( x.length, toAccessorArray( x ), 1, 0, toAccessorArray( mask ), 1, 0 ); |
| 109 | + t.strictEqual( v, -4.0, 'returns expected value' ); |
| 110 | + |
| 111 | + x = [ -4.0, NaN, -5.0 ]; |
| 112 | + mask = [ 0, 1, 0 ]; |
| 113 | + v = nanmskmin( x.length, toAccessorArray( x ), 1, 0, toAccessorArray( mask ), 1, 0 ); |
| 114 | + t.strictEqual( v, -5.0, 'returns expected value' ); |
| 115 | + |
| 116 | + x = [ -0.0, 0.0, NaN, -0.0 ]; |
| 117 | + mask = [ 0, 0, 1, 0 ]; |
| 118 | + v = nanmskmin( x.length, toAccessorArray( x ), 1, 0, toAccessorArray( mask ), 1, 0 ); |
| 119 | + t.strictEqual( isNegativeZero( v ), true, 'returns expected value' ); |
| 120 | + |
| 121 | + x = [ -4.0, 0.0, NaN, 5.0 ]; |
| 122 | + mask = [ 0, 0, 0, 0 ]; |
| 123 | + v = nanmskmin( x.length, toAccessorArray( x ), 1, 0, toAccessorArray( mask ), 1, 0 ); |
| 124 | + t.strictEqual( isnan( v ), true, 'returns expected value' ); |
| 125 | + |
| 126 | + x = [ NaN ]; |
| 127 | + mask = [ 0 ]; |
| 128 | + v = nanmskmin( x.length, toAccessorArray( x ), 1, 0, toAccessorArray( mask ), 1, 0 ); |
| 129 | + t.strictEqual( isnan( v ), true, 'returns expected value' ); |
| 130 | + |
| 131 | + x = [ NaN ]; |
| 132 | + mask = [ 1 ]; |
| 133 | + v = nanmskmin( x.length, toAccessorArray( x ), 1, 0, toAccessorArray( mask ), 1, 0 ); |
| 134 | + t.strictEqual( isnan( v ), true, 'returns expected value' ); |
| 135 | + |
| 136 | + x = [ NaN, NaN ]; |
| 137 | + mask = [ 1, 1 ]; |
| 138 | + v = nanmskmin( x.length, toAccessorArray( x ), 1, 0, toAccessorArray( mask ), 1, 0 ); |
| 139 | + t.strictEqual( isnan( v ), true, 'returns expected value' ); |
| 140 | + |
| 141 | + x = [ NaN, NaN ]; |
| 142 | + mask = [ 1, 0 ]; |
| 143 | + v = nanmskmin( x.length, toAccessorArray( x ), 1, 0, toAccessorArray( mask ), 1, 0 ); |
| 144 | + t.strictEqual( isnan( v ), true, 'returns expected value' ); |
| 145 | + |
| 146 | + x = [ NaN, NaN ]; |
| 147 | + mask = [ 0, 1 ]; |
| 148 | + v = nanmskmin( x.length, toAccessorArray( x ), 1, 0, toAccessorArray( mask ), 1, 0 ); |
| 149 | + t.strictEqual( isnan( v ), true, 'returns expected value' ); |
| 150 | + |
| 151 | + x = [ NaN, NaN ]; |
| 152 | + mask = [ 0, 0 ]; |
| 153 | + v = nanmskmin( x.length, toAccessorArray( x ), 1, 0, toAccessorArray( mask ), 1, 0 ); |
| 154 | + t.strictEqual( isnan( v ), true, 'returns expected value' ); |
| 155 | + |
| 156 | + t.end(); |
| 157 | +}); |
| 158 | + |
101 | 159 | tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `NaN`', function test( t ) {
|
102 | 160 | var mask;
|
103 | 161 | var x;
|
|
0 commit comments