1
1
import test from "ava" ;
2
2
import {
3
+ all ,
4
+ and ,
5
+ any ,
6
+ append ,
7
+ concat ,
8
+ concatMap ,
3
9
contains ,
4
10
dropWhile ,
5
11
empty ,
@@ -22,11 +28,20 @@ import {
22
28
last ,
23
29
map ,
24
30
maximum ,
31
+ minimum ,
32
+ or ,
25
33
partition ,
26
34
partitionWhile ,
35
+ prepend ,
36
+ product ,
27
37
remove ,
28
38
removeFirst ,
39
+ scan ,
40
+ scan1 ,
41
+ scanRight ,
42
+ scanRight1 ,
29
43
slice ,
44
+ sum ,
30
45
tail ,
31
46
takeWhile
32
47
} from "./index" ;
@@ -212,6 +227,100 @@ test("maximum", t => {
212
227
t . is ( maximum ( [ ] ) , null ) ;
213
228
} ) ;
214
229
230
+ test ( "minimum" , t => {
231
+ t . is ( minimum ( [ 1 , 2 , 3 ] ) , 1 ) ;
232
+ t . is ( minimum ( [ 2 , 3 , 4 , 1 , 2 , 3 ] ) , 1 ) ;
233
+ t . is ( minimum ( [ ] ) , null ) ;
234
+ } ) ;
235
+
236
+ test ( "sum" , t => {
237
+ t . is ( sum ( [ 1 , 2 , 3 ] ) , 6 ) ;
238
+ t . is ( sum ( [ ] ) , 0 ) ;
239
+ } ) ;
240
+
241
+ test ( "product" , t => {
242
+ t . is ( product ( [ 1 , 2 , 3 ] ) , 6 ) ;
243
+ t . is ( product ( [ ] ) , 1 ) ;
244
+ } ) ;
245
+
246
+ test ( "and" , t => {
247
+ t . true ( and ( [ true , true , true ] ) ) ;
248
+ t . false ( and ( [ true , false , true ] ) ) ;
249
+ t . true ( and ( [ ] ) ) ;
250
+ } ) ;
251
+
252
+ test ( "or" , t => {
253
+ t . true ( or ( [ true , false , true ] ) ) ;
254
+ t . false ( or ( [ false , false , false ] ) ) ;
255
+ t . false ( or ( [ ] ) ) ;
256
+ } ) ;
257
+
258
+ test ( "any" , t => {
259
+ t . true ( any ( [ 1 , 2 , 3 ] , e => e > 2 ) ) ;
260
+ t . false ( any ( [ 1 , 2 , 3 ] , e => e > 4 ) ) ;
261
+ } ) ;
262
+
263
+ test ( "all" , t => {
264
+ t . true ( all ( [ 1 , 2 , 3 ] , e => e < 4 ) ) ;
265
+ t . false ( all ( [ 1 , 2 , 3 ] , e => e > 2 ) ) ;
266
+ } ) ;
267
+
268
+ test ( "concat" , t => {
269
+ t . deepEqual ( concat ( [ [ 1 , 2 ] , [ ] , [ 3 ] , [ 4 , 5 ] ] ) , [ 1 , 2 , 3 , 4 , 5 ] ) ;
270
+ t . deepEqual ( concat ( [ [ ] , [ ] ] ) , [ ] ) ;
271
+ } ) ;
272
+
273
+ test ( "prepend" , t => {
274
+ t . deepEqual ( prepend ( [ 1 , 2 , 3 ] ) ( [ 4 , 5 , 6 ] ) , [ 1 , 2 , 3 , 4 , 5 , 6 ] ) ;
275
+ t . deepEqual ( prepend < number > ( [ ] ) ( [ 4 , 5 , 6 ] ) , [ 4 , 5 , 6 ] ) ;
276
+ t . deepEqual ( prepend ( [ 1 , 2 , 3 ] ) ( [ ] ) , [ 1 , 2 , 3 ] ) ;
277
+ } ) ;
278
+
279
+ test ( "append" , t => {
280
+ t . deepEqual ( append ( [ 4 , 5 , 6 ] ) ( [ 1 , 2 , 3 ] ) , [ 1 , 2 , 3 , 4 , 5 , 6 ] ) ;
281
+ t . deepEqual ( append < number > ( [ ] ) ( [ 1 , 2 , 3 ] ) , [ 1 , 2 , 3 ] ) ;
282
+ t . deepEqual ( append ( [ 4 , 5 , 6 ] ) ( [ ] ) , [ 4 , 5 , 6 ] ) ;
283
+ } ) ;
284
+
285
+ test ( "concatMap" , t => {
286
+ t . deepEqual (
287
+ concatMap ( [ "1,2,3" , "4,5,6" ] , s => s . split ( "," ) ) ,
288
+ [ "1" , "2" , "3" , "4" , "5" , "6" ]
289
+ ) ;
290
+ } ) ;
291
+
292
+ test ( "scan" , t => {
293
+ t . deepEqual (
294
+ scan ( [ 1 , 2 , 3 ] , ( a , e , i ) => a + e * i , 0 ) ,
295
+ [ 0 , 2 , 8 ]
296
+ ) ;
297
+ t . deepEqual (
298
+ scan ( [ "a" , "b" , "c" ] , ( a , e , i ) => `${ a } ${ i } ${ e } ` , "_" ) ,
299
+ [ "_ 0 a" , "_ 0 a 1 b" , "_ 0 a 1 b 2 c" ]
300
+ ) ;
301
+ } ) ;
302
+
303
+ test ( "scan1" , t => {
304
+ t . deepEqual (
305
+ scan1 ( [ 1 , 2 , 3 ] , ( a , e , i ) => a + e * i ) ,
306
+ [ 1 , 3 , 9 ]
307
+ ) ;
308
+ } ) ;
309
+
310
+ test ( "scanRight" , t => {
311
+ t . deepEqual (
312
+ scanRight ( [ "a" , "b" , "c" ] , ( a , e , i ) => `${ a } ${ i } ${ e } ` , "_" ) ,
313
+ [ "_ 2 c 1 b 0 a" , "_ 2 c 1 b" , "_ 2 c" ]
314
+ ) ;
315
+ } ) ;
316
+
317
+ test ( "scanRight1" , t => {
318
+ t . deepEqual (
319
+ scanRight1 ( [ "a" , "b" , "c" ] , ( a , e , i ) => `${ a } ${ i } ${ e } ` ) ,
320
+ [ "c 1 b 0 a" , "c 1 b" , "c" ]
321
+ ) ;
322
+ } ) ;
323
+
215
324
type Result < T > = Success < T > | Error ;
216
325
217
326
interface Success < T > {
0 commit comments