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); });