Skip to content

Commit 09f1e11

Browse files
committed
feat: add boolean dtype support to array/base/count-truthy
Ref: stdlib-js#2304
1 parent e21305b commit 09f1e11

2 files changed

Lines changed: 25 additions & 2 deletions

File tree

lib/node_modules/@stdlib/array/base/count-truthy/lib/main.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,11 @@
2121
// MODULES //
2222

2323
var isComplexTypedArray = require( '@stdlib/array/base/assert/is-complex-typed-array' );
24+
var isBooleanArray = require( '@stdlib/array/base/assert/is-booleanarray' );
2425
var isAccessorArray = require( '@stdlib/array/base/assert/is-accessor-array' );
2526
var resolveGetter = require( '@stdlib/array/base/resolve-getter' );
26-
var reinterpret = require( '@stdlib/strided/base/reinterpret-complex' );
27+
var reinterpretComplex = require( '@stdlib/strided/base/reinterpret-complex' );
28+
var reinterpretBoolean = require( '@stdlib/strided/base/reinterpret-boolean' );
2729

2830

2931
// FUNCTIONS //
@@ -105,7 +107,7 @@ function complex( x ) {
105107
var n;
106108
var i;
107109

108-
view = reinterpret( x, 0 );
110+
view = reinterpretComplex( x, 0 );
109111

110112
n = 0;
111113
for ( i = 0; i < view.length; i += 2 ) {
@@ -133,6 +135,9 @@ function complex( x ) {
133135
*/
134136
function countTruthy( x ) {
135137
if ( isAccessorArray( x ) ) {
138+
if ( isBooleanArray( x ) ) {
139+
return indexed( reinterpretBoolean( x, 0 ) );
140+
}
136141
if ( isComplexTypedArray( x ) ) {
137142
return complex( x );
138143
}

lib/node_modules/@stdlib/array/base/count-truthy/test/test.js

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

2323
var tape = require( 'tape' );
2424
var Complex128Array = require( '@stdlib/array/complex128' );
25+
var BooleanArray = require( '@stdlib/array/bool' );
2526
var Int32Array = require( '@stdlib/array/int32' );
2627
var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' );
2728
var countTruthy = require( './../lib' );
@@ -87,6 +88,19 @@ tape( 'the function counts the number of truthy values (complex typed array)', f
8788
t.end();
8889
});
8990

91+
tape( 'the function counts the number of truthy values (boolean typed array)', function test( t ) {
92+
var expected;
93+
var actual;
94+
var x;
95+
96+
x = new BooleanArray( [ true, true, false, true ] );
97+
expected = 3;
98+
actual = countTruthy( x );
99+
100+
t.strictEqual( actual, expected, 'returns expected value' );
101+
t.end();
102+
});
103+
90104
tape( 'the function returns zero if provided an array of length `0`', function test( t ) {
91105
var expected;
92106
var actual;
@@ -110,5 +124,9 @@ tape( 'the function returns zero if provided an array of length `0`', function t
110124
actual = countTruthy( x );
111125
t.strictEqual( actual, expected, 'returns expected value' );
112126

127+
x = new BooleanArray( [] );
128+
actual = countTruthy( x );
129+
t.strictEqual( actual, expected, 'returns expected value' );
130+
113131
t.end();
114132
});

0 commit comments

Comments
 (0)