Skip to content

Commit 8dd3143

Browse files
Add object/{some,every} implementation
1 parent e6eb300 commit 8dd3143

File tree

4 files changed

+64
-0
lines changed

4 files changed

+64
-0
lines changed

object/every.test.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/* eslint-env jest */
2+
// @ts-ignore ambiguous import
3+
import every from "./every.ts";
4+
5+
describe("every", () => {
6+
it("test if every element passes the given predicate", () => {
7+
const adult = ({ age }: { age: number }) => age >= 18;
8+
9+
expect(
10+
every(adult)({
11+
tom: { age: 25 },
12+
john: { age: 16 },
13+
alice: { age: 18 }
14+
})
15+
).toBe(false);
16+
});
17+
18+
it("test if every element passes the given predicate", () => {
19+
expect(
20+
every((x: number) => x >= 0)({
21+
x: 5,
22+
y: 3,
23+
z: 0
24+
})
25+
).toBe(true);
26+
});
27+
});

object/every.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import entries from "./entries";
2+
3+
export default (f: (value: any, key: string, context: object) => boolean) => (
4+
xs: object
5+
): boolean => entries(xs).every(([key, value]) => f(value, key, xs));

object/some.test.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/* eslint-env jest */
2+
// @ts-ignore ambiguous import
3+
import some from "./some.ts";
4+
5+
describe("some", () => {
6+
it("test if any element passes the given predicate", () => {
7+
const adult = ({ age }: { age: number }) => age >= 18;
8+
9+
expect(
10+
some(adult)({
11+
tom: { age: 25 },
12+
john: { age: 16 },
13+
alice: { age: 18 }
14+
})
15+
).toBe(true);
16+
});
17+
18+
it("test if any element passes the given predicate", () => {
19+
expect(
20+
some((x: number) => x < 0)({
21+
x: 5,
22+
y: 3,
23+
z: 0
24+
})
25+
).toBe(false);
26+
});
27+
});

object/some.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import entries from "./entries";
2+
3+
export default (f: (value: any, key: string, context: object) => boolean) => (
4+
xs: object
5+
): boolean => entries(xs).some(([key, value]) => f(value, key, xs));

0 commit comments

Comments
 (0)