22
22
23
23
var tape = require ( 'tape' ) ;
24
24
var isnan = require ( '@stdlib/math/base/assert/is-nan' ) ;
25
+ var toAccessorArray = require ( '@stdlib/array/base/to-accessor-array' ) ;
25
26
var gsum = require ( './../lib/ndarray.js' ) ;
26
27
27
28
@@ -65,6 +66,33 @@ tape( 'the function calculates the sum of all strided array elements', function
65
66
t . end ( ) ;
66
67
} ) ;
67
68
69
+ tape ( 'the function calculates the sum of all strided array elements' , function test ( t ) {
70
+ var x ;
71
+ var v ;
72
+
73
+ x = [ 1.0 , - 2.0 , - 4.0 , 5.0 , 0.0 , 3.0 , 0.0 , - 3.0 , 3.0 ] ;
74
+ v = gsum ( x . length , toAccessorArray ( x ) , 1 , 0 ) ;
75
+ t . strictEqual ( v , 3.0 , 'returns expected value' ) ;
76
+
77
+ x = [ 1.0 , - 2.0 , - 4.0 , 5.0 , 0.0 , 3.0 ] ;
78
+ v = gsum ( x . length , toAccessorArray ( x ) , 1 , 0 ) ;
79
+ t . strictEqual ( v , 3.0 , 'returns expected value' ) ;
80
+
81
+ x = [ - 4.0 , - 4.0 ] ;
82
+ v = gsum ( x . length , toAccessorArray ( x ) , 1 , 0 ) ;
83
+ t . strictEqual ( v , - 8.0 , 'returns expected value' ) ;
84
+
85
+ x = [ NaN , 4.0 ] ;
86
+ v = gsum ( x . length , toAccessorArray ( x ) , 1 , 0 ) ;
87
+ t . strictEqual ( isnan ( v ) , true , 'returns expected value' ) ;
88
+
89
+ x = [ 1.0 , 1.0e100 , 1.0 , - 1.0e100 ] ;
90
+ v = gsum ( x . length , toAccessorArray ( x ) , 1 , 0 ) ;
91
+ t . strictEqual ( v , 2.0 , 'returns expected value' ) ;
92
+
93
+ t . end ( ) ;
94
+ } ) ;
95
+
68
96
tape ( 'if provided an `N` parameter less than or equal to `0`, the function returns `0.0`' , function test ( t ) {
69
97
var x ;
70
98
var v ;
@@ -113,6 +141,27 @@ tape( 'the function supports a `stride` parameter', function test( t ) {
113
141
t . end ( ) ;
114
142
} ) ;
115
143
144
+ tape ( 'the function supports a `stride` parameter (accessors)' , function test ( t ) {
145
+ var x ;
146
+ var v ;
147
+
148
+ x = [
149
+ 1.0 , // 0
150
+ 2.0 ,
151
+ 2.0 , // 1
152
+ - 7.0 ,
153
+ - 2.0 , // 2
154
+ 3.0 ,
155
+ 4.0 , // 3
156
+ 2.0
157
+ ] ;
158
+
159
+ v = gsum ( 4 , toAccessorArray ( x ) , 2 , 0 ) ;
160
+
161
+ t . strictEqual ( v , 5.0 , 'returns expected value' ) ;
162
+ t . end ( ) ;
163
+ } ) ;
164
+
116
165
tape ( 'the function supports a negative `stride` parameter' , function test ( t ) {
117
166
var x ;
118
167
var v ;
@@ -134,6 +183,27 @@ tape( 'the function supports a negative `stride` parameter', function test( t )
134
183
t . end ( ) ;
135
184
} ) ;
136
185
186
+ tape ( 'the function supports a negative `stride` parameter (accessors)' , function test ( t ) {
187
+ var x ;
188
+ var v ;
189
+
190
+ x = [
191
+ 1.0 , // 3
192
+ 2.0 ,
193
+ 2.0 , // 2
194
+ - 7.0 ,
195
+ - 2.0 , // 1
196
+ 3.0 ,
197
+ 4.0 , // 0
198
+ 2.0
199
+ ] ;
200
+
201
+ v = gsum ( 4 , toAccessorArray ( x ) , - 2 , 6 ) ;
202
+
203
+ t . strictEqual ( v , 5.0 , 'returns expected value' ) ;
204
+ t . end ( ) ;
205
+ } ) ;
206
+
137
207
tape ( 'if provided a `stride` parameter equal to `0`, the function returns the sum of the first element repeated N times' , function test ( t ) {
138
208
var x ;
139
209
var v ;
@@ -146,6 +216,18 @@ tape( 'if provided a `stride` parameter equal to `0`, the function returns the s
146
216
t . end ( ) ;
147
217
} ) ;
148
218
219
+ tape ( 'if provided a `stride` parameter equal to `0`, the function returns the sum of the first element repeated N times (accessors)' , function test ( t ) {
220
+ var x ;
221
+ var v ;
222
+
223
+ x = [ 1.0 , - 2.0 , - 4.0 , 5.0 , 3.0 ] ;
224
+
225
+ v = gsum ( x . length , toAccessorArray ( x ) , 0 , 0 ) ;
226
+ t . strictEqual ( v , 5.0 , 'returns expected value' ) ;
227
+
228
+ t . end ( ) ;
229
+ } ) ;
230
+
149
231
tape ( 'the function supports an `offset` parameter' , function test ( t ) {
150
232
var x ;
151
233
var v ;
@@ -166,3 +248,24 @@ tape( 'the function supports an `offset` parameter', function test( t ) {
166
248
167
249
t . end ( ) ;
168
250
} ) ;
251
+
252
+ tape ( 'the function supports an `offset` parameter (accessors)' , function test ( t ) {
253
+ var x ;
254
+ var v ;
255
+
256
+ x = [
257
+ 2.0 ,
258
+ 1.0 , // 0
259
+ 2.0 ,
260
+ - 2.0 , // 1
261
+ - 2.0 ,
262
+ 2.0 , // 2
263
+ 3.0 ,
264
+ 4.0 // 3
265
+ ] ;
266
+
267
+ v = gsum ( 4 , toAccessorArray ( x ) , 2 , 1 ) ;
268
+ t . strictEqual ( v , 5.0 , 'returns expected value' ) ;
269
+
270
+ t . end ( ) ;
271
+ } ) ;
0 commit comments