File tree Expand file tree Collapse file tree 10 files changed +171
-0
lines changed Expand file tree Collapse file tree 10 files changed +171
-0
lines changed Original file line number Diff line number Diff line change 7575 "@functional-abstraction/measure" : " 4.0.0" ,
7676 "@functional-abstraction/predicate" : " 4.0.0" ,
7777 "@iterable-iterator/chain" : " 2.0.1" ,
78+ "@iterable-iterator/cycle" : " ^1.0.0" ,
7879 "@iterable-iterator/list" : " 1.0.1" ,
7980 "@iterable-iterator/map" : " 1.0.1" ,
8081 "@iterable-iterator/range" : " 2.1.0" ,
Original file line number Diff line number Diff line change 1+ import test from 'ava' ;
2+
3+ import { ABSTRACT_COUNTER as COUNTER } from '../../../_fixtures.js' ;
4+
5+ import { empty } from '../../../../../src/index.js' ;
6+
7+ const cover = ( t , j ) => {
8+ t . true ( Number . isInteger ( j ) && j >= 0 && j <= 3 ) ;
9+ const x = { } ;
10+ const n = 11 ;
11+ let tree = empty ( COUNTER ) ;
12+ for ( let i = 0 ; i < n ; ++ i ) tree = tree . push ( x ) ; // (1) ((3)(3)) (4)
13+ const [ left , right ] = tree . split ( ( m ) => m >= n - j ) ;
14+ t . is ( left . measure ( ) , n - ( j + 1 ) ) ;
15+ t . is ( right . measure ( ) , j + 1 ) ;
16+ t . deepEqual ( Array . from ( left . concat ( right ) ) , Array . from ( tree ) ) ;
17+ } ;
18+
19+ cover . title = ( title , i ) => title ?? `cover ${ i } ` ;
20+
21+ test ( cover , 0 ) ;
22+ test ( cover , 1 ) ;
23+ test ( cover , 2 ) ;
24+ test ( cover , 3 ) ;
Original file line number Diff line number Diff line change 1+ import test from 'ava' ;
2+
3+ import { ABSTRACT_COUNTER as COUNTER } from '../../../_fixtures.js' ;
4+
5+ import { empty } from '../../../../../src/index.js' ;
6+
7+ const cover = ( t , j ) => {
8+ t . true ( Number . isInteger ( j ) && j >= 0 && j <= 1 ) ;
9+ const x = { } ;
10+ const n = 9 ;
11+ let tree = empty ( COUNTER ) ;
12+ for ( let i = 0 ; i < n ; ++ i ) tree = tree . push ( x ) ; // (1) ((3)(3)) (2)
13+ const [ left , right ] = tree . split ( ( m ) => m >= n - j ) ;
14+ t . is ( left . measure ( ) , n - ( j + 1 ) ) ;
15+ t . is ( right . measure ( ) , j + 1 ) ;
16+ t . deepEqual ( Array . from ( left . concat ( right ) ) , Array . from ( tree ) ) ;
17+ } ;
18+
19+ cover . title = ( title , i ) => title ?? `cover ${ i } ` ;
20+
21+ test ( cover , 0 ) ;
22+ test ( cover , 1 ) ;
Original file line number Diff line number Diff line change 1+ import test from 'ava' ;
2+
3+ import { nrepeat } from '@iterable-iterator/repeat' ;
4+ import { ABSTRACT_COUNTER as COUNTER } from '../../_fixtures.js' ;
5+
6+ import { empty } from '../../../../src/index.js' ;
7+
8+ test ( 'cover' , ( t ) => {
9+ const x = { } ;
10+ const n = 9 ;
11+ let tree = empty ( COUNTER ) ;
12+ for ( let i = 0 ; i < n ; ++ i ) tree = tree . push ( x ) ; // (1) ((3)(3)) (2)
13+ tree = tree . init ( ) . init ( ) ; // (1) ((3)) (3)
14+ const A = tree . concat ( tree ) ;
15+ t . deepEqual ( Array . from ( A ) , Array . from ( nrepeat ( x , 2 * ( n - 2 ) ) ) ) ;
16+
17+ tree = tree . init ( ) . init ( ) . init ( ) ; // (1) () (3)
18+ const B = tree . concat ( tree ) ;
19+ t . deepEqual ( Array . from ( B ) , Array . from ( nrepeat ( x , 2 * ( n - 5 ) ) ) ) ;
20+ } ) ;
Original file line number Diff line number Diff line change 1+ import test from 'ava' ;
2+
3+ import { nrepeat } from '@iterable-iterator/repeat' ;
4+ import { ABSTRACT_COUNTER as COUNTER } from '../../_fixtures.js' ;
5+
6+ import { empty } from '../../../../src/index.js' ;
7+
8+ test ( 'cover' , ( t ) => {
9+ const x = { } ;
10+ const n = 9 ;
11+ let tree = empty ( COUNTER ) ;
12+ for ( let i = 0 ; i < n ; ++ i ) tree = tree . push ( x ) ; // (1) ((3)(3)) (2)
13+ tree = tree . init ( ) . init ( ) ; // (1) ((3)) (3)
14+ tree = tree . cons ( x ) . cons ( x ) . cons ( x ) . cons ( x ) ; // (2) ((3)(3)) (3)
15+ t . deepEqual ( Array . from ( tree ) , Array . from ( nrepeat ( x , n + 2 ) ) ) ;
16+ } ) ;
Original file line number Diff line number Diff line change 1+ import test from 'ava' ;
2+
3+ import { nrepeat } from '@iterable-iterator/repeat' ;
4+ import { ABSTRACT_COUNTER as COUNTER } from '../../_fixtures.js' ;
5+
6+ import { empty } from '../../../../src/index.js' ;
7+
8+ test ( 'cover' , ( t ) => {
9+ const x = { } ;
10+ const n = 9 ;
11+ let tree = empty ( COUNTER ) ;
12+ for ( let i = 0 ; i < n ; ++ i ) tree = tree . push ( x ) ; // (1) ((3)(3)) (2)
13+ for ( let i = 0 ; i < n ; ++ i ) {
14+ const copy = tree . init ( ) . push ( x ) ;
15+ t . deepEqual ( Array . from ( copy ) , Array . from ( nrepeat ( x , n - i ) ) ) ;
16+ t . false ( copy . isEmpty ( ) ) ;
17+ tree = tree . init ( ) ;
18+ }
19+
20+ t . true ( tree . isEmpty ( ) ) ;
21+ } ) ;
Original file line number Diff line number Diff line change 1+ import test from 'ava' ;
2+
3+ import { nrepeat } from '@iterable-iterator/repeat' ;
4+ import { ABSTRACT_COUNTER as COUNTER } from '../../_fixtures.js' ;
5+
6+ import { empty } from '../../../../src/index.js' ;
7+
8+ test ( 'cover' , ( t ) => {
9+ const x = { } ;
10+ const n = 9 ;
11+ let tree = empty ( COUNTER ) ;
12+ for ( let i = 0 ; i < n ; ++ i ) tree = tree . push ( x ) ; // (1) ((3)(3)) (2)
13+ tree = tree . init ( ) . init ( ) ; // (1) ((3)) (3)
14+ tree = tree . push ( x ) . push ( x ) ; // (1) ((3)(3)) (2)
15+ t . deepEqual ( Array . from ( tree ) , Array . from ( nrepeat ( x , n ) ) ) ;
16+ } ) ;
Original file line number Diff line number Diff line change 1+ import test from 'ava' ;
2+
3+ import { nrepeat } from '@iterable-iterator/repeat' ;
4+ import { ABSTRACT_COUNTER as COUNTER } from '../../_fixtures.js' ;
5+
6+ import { empty } from '../../../../src/index.js' ;
7+
8+ test ( 'cover' , ( t ) => {
9+ const x = { } ;
10+ const n = 9 ;
11+ let tree = empty ( COUNTER ) ;
12+ for ( let i = 0 ; i < n ; ++ i ) tree = tree . push ( x ) ; // (1) ((3)(3)) (2)
13+ tree = tree . init ( ) . init ( ) ; // (1) ((3)) (3)
14+ t . deepEqual ( Array . from ( tree . reversed ( ) ) , Array . from ( nrepeat ( x , n - 2 ) ) ) ;
15+ } ) ;
Original file line number Diff line number Diff line change 1+ import test from 'ava' ;
2+
3+ import { ABSTRACT_COUNTER as COUNTER } from '../../_fixtures.js' ;
4+
5+ import { empty } from '../../../../src/index.js' ;
6+
7+ test ( 'cover' , ( t ) => {
8+ const x = { } ;
9+ const n = 9 ;
10+ let tree = empty ( COUNTER ) ;
11+ for ( let i = 0 ; i < n ; ++ i ) tree = tree . push ( x ) ; // (1) ((3)(3)) (2)
12+ tree = tree . init ( ) . init ( ) ; // (1) ((3)) (3)
13+ const [ left , right ] = tree . split ( ( m ) => m >= 3 ) ;
14+ t . is ( left . measure ( ) , 2 ) ;
15+ t . is ( right . measure ( ) , n - 4 ) ;
16+ t . deepEqual ( Array . from ( left . concat ( right ) ) , Array . from ( tree ) ) ;
17+ } ) ;
Original file line number Diff line number Diff line change 1+ import test from 'ava' ;
2+
3+ import { ncycle } from '@iterable-iterator/cycle' ;
4+ import { reversed } from '@iterable-iterator/reversed' ;
5+ import { range } from '@iterable-iterator/range' ;
6+ import { ABSTRACT_COUNTER as COUNTER } from '../../_fixtures.js' ;
7+
8+ import { empty } from '../../../../src/index.js' ;
9+
10+ test ( 'cover' , ( t ) => {
11+ const n = 11 ;
12+ let tree = empty ( COUNTER ) ;
13+ for ( let i = 0 ; i < n ; ++ i ) tree = tree . push ( i ) ; // (1) ((3)(3)) (4)
14+ tree = tree . concat ( tree ) ;
15+ t . deepEqual (
16+ Array . from ( tree . reversed ( ) ) ,
17+ Array . from ( ncycle ( reversed ( range ( n ) ) , 2 ) ) ,
18+ ) ;
19+ } ) ;
You can’t perform that action at this time.
0 commit comments