1
0
Fork 0
functional/typing.test.ts

38 lines
984 B
TypeScript

import { expect, test } from "./deps.test.ts";
import { isinstance, nn, nnu, nu } from "./typing.ts";
test("isinstance", () => {
class A {}
class A1 extends A {}
class A2 extends A {}
class B {}
const f: any[] = [5, null, undefined, new A(), new A1(), new B(), new A2()];
const result = f.filter(isinstance(A));
expect(result).toEqual([f[3], f[4], f[6]]);
});
test("nn", () => {
expect(nn(undefined)).toBeUndefined();
expect(nn(0)).toBe(0);
expect(nn("")).toBe("");
expect(nn([])).toEqual([]);
expect(() => nn(null)).toThrow("null value");
});
test("nu", () => {
expect(nu(null)).toBe(null);
expect(nu(0)).toBe(0);
expect(nu("")).toBe("");
expect(nu([])).toEqual([]);
expect(() => nu(undefined)).toThrow("undefined value");
});
test("nnu", () => {
expect(nnu(0)).toBe(0);
expect(nnu("")).toBe("");
expect(nnu([])).toEqual([]);
expect(() => nnu(undefined)).toThrow("undefined value");
expect(() => nnu(null)).toThrow("null value");
});