Files
terminal-lab/xterminal/tests/disposable.test.ts
douboer@gmail.com 3b7c1d558a first commit
2026-03-03 13:23:14 +08:00

62 lines
1.7 KiB
TypeScript

import { describe, it, expect, beforeEach } from "vitest";
import Disposable from "../source/base/disposable";
describe("Disposable", () => {
let disposable: Disposable;
beforeEach(() => {
disposable = new Disposable();
});
describe("constructor", () => {
it("should not be disposed initially", () => {
expect(disposable.isDisposed).toBe(false);
});
});
describe("register", () => {
it("should register disposable", () => {
let disposed = false;
const d = {
dispose: () => {
disposed = true;
}
};
disposable.register(d);
disposable.dispose();
expect(disposed).toBe(true);
});
it("should dispose immediately if already disposed", () => {
disposable.dispose();
let disposed = false;
const d = {
dispose: () => {
disposed = true;
}
};
disposable.register(d);
expect(disposed).toBe(true);
});
});
describe("dispose", () => {
it("should dispose all registered", () => {
let count = 0;
disposable.register({ dispose: () => count++ });
disposable.register({ dispose: () => count++ });
disposable.dispose();
expect(count).toBe(2);
expect(disposable.isDisposed).toBe(true);
});
it("should not dispose twice", () => {
let count = 0;
disposable.register({ dispose: () => count++ });
disposable.dispose();
disposable.dispose();
expect(count).toBe(1);
});
});
});