File tree 10 files changed +171
-0
lines changed
10 files changed +171
-0
lines changed Original file line number Diff line number Diff line change 75
75
"@functional-abstraction/measure" : " 4.0.0" ,
76
76
"@functional-abstraction/predicate" : " 4.0.0" ,
77
77
"@iterable-iterator/chain" : " 2.0.1" ,
78
+ "@iterable-iterator/cycle" : " ^1.0.0" ,
78
79
"@iterable-iterator/list" : " 1.0.1" ,
79
80
"@iterable-iterator/map" : " 1.0.1" ,
80
81
"@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