44 lines
1.2 KiB
TypeScript
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);
|
|
});
|