Skip to content

Commit ed13790

Browse files
committed
test: Add tests for filter with type predicate
1 parent ec71a49 commit ed13790

File tree

4 files changed

+38
-0
lines changed

4 files changed

+38
-0
lines changed

Diff for: async/filter_test.ts

+8
Original file line numberDiff line numberDiff line change
@@ -69,3 +69,11 @@ await test("filter with iterable with promise", async () => {
6969
assertEquals(indices, [0, 1, 2, 3, 4]);
7070
assertType<IsExact<typeof result, AsyncIterable<number>>>(true);
7171
});
72+
73+
await test("filter with type predicate", async () => {
74+
const predicate = (v: number | string): v is number => typeof v === "number";
75+
const result = filter([1, "a", 2, "b", 3], predicate);
76+
const expected = [1, 2, 3];
77+
assertEquals(await Array.fromAsync(result), expected);
78+
assertType<IsExact<typeof result, AsyncIterable<number>>>(true);
79+
});

Diff for: filter_test.ts

+8
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,11 @@ test("filter", () => {
1717
assertEquals(indices, [0, 1, 2, 3, 4]);
1818
assertType<IsExact<typeof result, Iterable<number>>>(true);
1919
});
20+
21+
test("filter with type predicate", () => {
22+
const predicate = (v: number | string): v is number => typeof v === "number";
23+
const result = filter([1, "a", 2, "b", 3], predicate);
24+
const expected = [1, 2, 3];
25+
assertEquals(Array.from(result), expected);
26+
assertType<IsExact<typeof result, Iterable<number>>>(true);
27+
});

Diff for: pipe/async/filter_test.ts

+11
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,14 @@ test("filter usage", async () => {
1313
assertEquals(await Array.fromAsync(result), expected);
1414
assertType<IsExact<typeof result, AsyncIterable<number>>>(true);
1515
});
16+
17+
test("filter usage with type predicate", async () => {
18+
const predicate = (v: number | string): v is number => typeof v === "number";
19+
const result = pipe(
20+
[1, "a", 2, "b", 3],
21+
filter(predicate),
22+
);
23+
const expected = [1, 2, 3];
24+
assertEquals(await Array.fromAsync(result), expected);
25+
assertType<IsExact<typeof result, AsyncIterable<number>>>(true);
26+
});

Diff for: pipe/filter_test.ts

+11
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,14 @@ test("filter usage", () => {
1313
assertEquals(Array.from(result), expected);
1414
assertType<IsExact<typeof result, Iterable<number>>>(true);
1515
});
16+
17+
test("filter usage with type predicate", () => {
18+
const predicate = (v: number | string): v is number => typeof v === "number";
19+
const result = pipe(
20+
[1, "a", 2, "b", 3],
21+
filter(predicate),
22+
);
23+
const expected = [1, 2, 3];
24+
assertEquals(Array.from(result), expected);
25+
assertType<IsExact<typeof result, Iterable<number>>>(true);
26+
});

0 commit comments

Comments
 (0)