11import test from "ava" ;
22import {
3+ all ,
4+ and ,
5+ any ,
6+ append ,
7+ concat ,
8+ concatMap ,
39 contains ,
410 dropWhile ,
511 empty ,
@@ -22,11 +28,20 @@ import {
2228 last ,
2329 map ,
2430 maximum ,
31+ minimum ,
32+ or ,
2533 partition ,
2634 partitionWhile ,
35+ prepend ,
36+ product ,
2737 remove ,
2838 removeFirst ,
39+ scan ,
40+ scan1 ,
41+ scanRight ,
42+ scanRight1 ,
2943 slice ,
44+ sum ,
3045 tail ,
3146 takeWhile
3247} from "./index" ;
@@ -212,6 +227,100 @@ test("maximum", t => {
212227 t . is ( maximum ( [ ] ) , null ) ;
213228} ) ;
214229
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+
215324type Result < T > = Success < T > | Error ;
216325
217326interface Success < T > {
0 commit comments