first commit
This commit is contained in:
61
xterminal/tests/disposable.test.ts
Normal file
61
xterminal/tests/disposable.test.ts
Normal file
@@ -0,0 +1,61 @@
|
||||
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);
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user