Skip to content

Commit 2c891cf

Browse files
🔬 test: Increase coverage.
1 parent 03c005e commit 2c891cf

File tree

10 files changed

+171
-0
lines changed

10 files changed

+171
-0
lines changed

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@
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 numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
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 numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
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);

test/src/regression/lazy/app3.js

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
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+
});

test/src/regression/lazy/cons.js

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
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+
});

test/src/regression/lazy/last.js

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
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+
});

test/src/regression/lazy/push.js

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
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+
});

test/src/regression/lazy/reversed.js

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
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+
});

test/src/regression/lazy/splitTree.js

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
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+
});

test/src/regression/node/reversed.js

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
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+
});

0 commit comments

Comments
 (0)