Initial Commit
This commit is contained in:
41
test/disposables/Disposable.test.ts
Normal file
41
test/disposables/Disposable.test.ts
Normal file
@@ -0,0 +1,41 @@
|
||||
import type {Mock} from 'bun:test';
|
||||
import {mock, describe, it, beforeEach, expect} from 'bun:test';
|
||||
import {Disposable} from '../../src/disposables';
|
||||
|
||||
describe(`When using a Disposable`, () => {
|
||||
describe(`Given a Disposable`, () => {
|
||||
let mockFunction: Mock<any>;
|
||||
let disposable: Disposable;
|
||||
|
||||
beforeEach(() => {
|
||||
mockFunction = mock(() => {});
|
||||
disposable = new Disposable(mockFunction);
|
||||
});
|
||||
|
||||
describe(`Given the disposable is disposed`, () => {
|
||||
beforeEach(() => {
|
||||
disposable.dispose();
|
||||
});
|
||||
|
||||
it(`executes the disposble`, () => {
|
||||
expect(mockFunction).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it(`marks the disposbale disposed`, () => {
|
||||
expect(disposable.isDisposed).toBeTrue();
|
||||
});
|
||||
|
||||
describe(`Given the disposable is repeatedly disposed`, () => {
|
||||
beforeEach(() => {
|
||||
for (let count = 0; count < 10; count++) {
|
||||
disposable.dispose();
|
||||
}
|
||||
});
|
||||
|
||||
it(`disposes the disposable only once`, () => {
|
||||
expect(mockFunction).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
36
test/disposables/DisposableList.test.ts
Normal file
36
test/disposables/DisposableList.test.ts
Normal file
@@ -0,0 +1,36 @@
|
||||
import type {Mock} from 'bun:test';
|
||||
import {mock, describe, it, beforeAll, beforeEach, expect} from 'bun:test';
|
||||
import {Disposable, DisposableList} from '../../src/disposables';
|
||||
|
||||
describe(`When using a DisposableList`, () => {
|
||||
let disposableList: DisposableList;
|
||||
|
||||
beforeEach(() => {
|
||||
disposableList = new DisposableList();
|
||||
});
|
||||
|
||||
describe(`Given a disposbale list with multiple disposables`, () => {
|
||||
let mocks: Array<Mock<any>>;
|
||||
let mockDisposables: Disposable[];
|
||||
|
||||
beforeEach(() => {
|
||||
mocks = [mock(() => {}), mock(() => {}), mock(() => {}), mock(() => {})];
|
||||
mockDisposables = mocks.map(mock => new Disposable(mock));
|
||||
mockDisposables.forEach(mockDisposable => disposableList.add(mockDisposable));
|
||||
});
|
||||
|
||||
describe(`Given the disposable list is disposed`, () => {
|
||||
beforeEach(() => {
|
||||
disposableList.dispose();
|
||||
});
|
||||
|
||||
it(`disposes all of the disposables in the list`, () => {
|
||||
mocks.forEach(mock => expect(mock).toHaveBeenCalled());
|
||||
});
|
||||
|
||||
it(`marks the disposable as disposed`, () => {
|
||||
mockDisposables.forEach(disposable => expect(disposable.isDisposed).toBeTrue());
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user