functional/predicates.test.ts

44 lines
1.2 KiB
TypeScript

import { assertEquals } from "https://deno.land/std/testing/asserts.ts";
import { always, and, never, not, or } from "./predicates.ts";
Deno.test("always", () => {
assertEquals(always(), true);
assertEquals(always(true), true);
assertEquals(always(false), true);
});
Deno.test("never", () => {
assertEquals(never(), false);
assertEquals(never(true), false);
assertEquals(never(false), false);
});
Deno.test("not", () => {
const iseven = (x: number) => x % 2 == 0;
const isodd = not(iseven);
assertEquals(iseven(0), true);
assertEquals(isodd(0), false);
assertEquals(iseven(1), false);
assertEquals(isodd(1), true);
assertEquals(iseven(2), true);
assertEquals(isodd(2), false);
});
Deno.test("and", () => {
const f = and((x: number) => x % 2 == 0, (x: number) => x > 5);
assertEquals(f(0), false);
assertEquals(f(2), false);
assertEquals(f(8), true);
assertEquals(f(9), false);
assertEquals(f(10), true);
});
Deno.test("or", () => {
const f = or((x: number) => x % 2 == 0, (x: number) => x > 5);
assertEquals(f(0), true);
assertEquals(f(1), false);
assertEquals(f(2), true);
assertEquals(f(8), true);
assertEquals(f(9), true);
});