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