62 lines
1.7 KiB
TypeScript
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);
|
|
});
|
|
});
|
|
});
|