// @ts-nocheck PITA for this file.. revisit later. import { mutableProxyFactory, PProxyHandler } from "./proxy"; describe("mutable proxy types", () => { test("function", async () => { const { proxy, setTarget } = mutableProxyFactory(() => 42); expect(proxy()).toBe(42); setTarget(() => 43); expect(proxy()).toBe(43); }); test("object", async () => { const { proxy, setTarget } = mutableProxyFactory({ value: 42 }); expect(proxy.value).toBe(42); setTarget({ value: 43 }); expect(proxy.value).toBe(43); }); test("array", async () => { const { proxy, setTarget } = mutableProxyFactory([42]); expect(proxy[0]).toBe(42); setTarget([43]); expect(proxy[0]).toBe(43); }); test("object to function", async () => { const { proxy, setTarget } = mutableProxyFactory({ value: 42 }); expect(proxy.value).toBe(42); setTarget(() => 43); expect(() => proxy()).toThrow(); }); test("scalar", async () => { expect(() => { mutableProxyFactory(42); }).toThrow(); }); test("boolean", async () => { expect(() => { mutableProxyFactory(false); }).toThrow(); }); test("null", async () => { expect(() => { mutableProxyFactory(null); // eslint-disable-line unicorn/no-null }).toThrow(); }); test("undefined", async () => { expect(() => { mutableProxyFactory(); }).toThrow(); }); test("setHandler", async () => { const { proxy, setHandler } = mutableProxyFactory({ value: 42 }); setHandler(new PProxyHandler()); expect(proxy.value).toBe(42); }); test("setTarget", async () => { const { proxy, setTarget } = mutableProxyFactory({ value: 42 }); setTarget([43]); expect(proxy[0]).toBe(43); }); test("setHandler simple", async () => { const { proxy, setHandler } = mutableProxyFactory({ value: 41 }); expect(proxy.value).toBe(41); setHandler({ get: () => 42, }); expect(proxy.value).toBe(42); }); test("getHandler", async () => { const { getHandler, setHandler, proxy } = mutableProxyFactory({ value: 42, }); const handler = new PProxyHandler(); setHandler(handler); expect(getHandler()).toBe(handler); expect(proxy.value).toBe(42); }); test("getTarget", async () => { const { getTarget } = mutableProxyFactory({ value: 42 }); expect(getTarget().value).toBe(42); }); });