import { expect } from "chai"; import Pool from "./Pool"; describe("Pool", () => { it("should work with multiple calls", async () => { const pool = new Pool(); // Add names for debugging, const a = { name: "a" }; const b = { name: "b" }; const c = { name: "c" }; expect(pool.getAvailable()).to.equal(undefined); expect(pool.getAvailable()).to.equal(undefined); expect(pool.getAvailable()).to.equal(undefined); pool.registerNewItem(a); expect(pool.getAvailable()).to.equal(a); expect(pool.getAvailable()).to.equal(a); expect(pool.getAvailable()).to.equal(a); pool.makeUnavailable(a); expect(pool.getAvailable()).to.equal(undefined); expect(pool.getAvailable()).to.equal(undefined); expect(pool.getAvailable()).to.equal(undefined); pool.makeUnavailable(a); expect(pool.getAvailable()).to.equal(undefined); expect(pool.getAvailable()).to.equal(undefined); pool.makeUnavailable(a); expect(pool.getAvailable()).to.equal(undefined); pool.makeAvailable(a); expect(pool.getAvailable()).to.equal(a); expect(pool.getAvailable()).to.equal(a); pool.makeAvailable(a); expect(pool.getAvailable()).to.equal(a); expect(pool.getAvailable()).to.equal(a); pool.makeUnavailable(a); expect(pool.getAvailable()).to.equal(undefined); expect(pool.getAvailable()).to.equal(undefined); pool.makeUnavailable(a); expect(pool.getAvailable()).to.equal(undefined); expect(pool.getAvailable()).to.equal(undefined); pool.registerNewItem(b); expect(pool.getAvailable()).to.equal(b); expect(pool.getAvailable()).to.equal(b); pool.makeAvailable(a); expect(pool.getAvailable()).to.equal(b); expect(pool.getAvailable()).to.equal(b); expect(pool.getAvailable()).to.equal(b); pool.makeUnavailable(a); expect(pool.getAvailable()).to.equal(b); expect(pool.getAvailable()).to.equal(b); expect(pool.getAvailable()).to.equal(b); pool.deregisterItem(b); expect(pool.getAvailable()).to.equal(undefined); expect(pool.getAvailable()).to.equal(undefined); pool.makeAvailable(a); expect(pool.getAvailable()).to.equal(a); expect(pool.getAvailable()).to.equal(a); pool.registerNewItem(c); pool.registerNewItem(b); pool.deregisterItem(a); pool.registerNewItem(a); expect(pool.getAvailable()).to.equal(c); expect(pool.getAvailable()).to.equal(c); pool.makeUnavailable(b); expect(pool.getAvailable()).to.equal(c); pool.makeUnavailable(c); expect(pool.getAvailable()).to.equal(a); pool.makeAvailable(a); expect(pool.getAvailable()).to.equal(a); expect(pool.getAvailable()).to.equal(a); pool.makeAvailable(c); expect(pool.getAvailable()).to.equal(a); pool.makeUnavailable(a); pool.makeAvailable(b); expect(pool.getAvailable()).to.equal(c); expect(pool.getAvailable()).to.equal(c); pool.makeUnavailable(c); expect(pool.getAvailable()).to.equal(b); expect(pool.getAvailable()).to.equal(b); expect(pool.getAvailable()).to.equal(b); }); });