feat(stdlib): new modules + eslint/tsconfig migration
- Add array/async/etc. modules and type tests; migrate to eslint flat config and composite tsconfig (vitest typecheck enabled). - Fix PubSub.emit to snapshot listeners before iterating (stable EventEmitter semantics; avoids invoking listeners added during the same emit).
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { describe, it, expect } from 'vitest';
|
||||
import { describe, expect, it } from 'vitest';
|
||||
import { Deque } from '.';
|
||||
|
||||
describe('deque', () => {
|
||||
@@ -31,6 +31,22 @@ describe('deque', () => {
|
||||
expect(deque.length).toBe(0);
|
||||
expect(deque.isFull).toBe(false);
|
||||
});
|
||||
|
||||
it('throw when initial values exceed maxSize', () => {
|
||||
expect(() => new Deque([1, 2, 3, 4, 5], { maxSize: 3 })).toThrow(RangeError);
|
||||
});
|
||||
|
||||
it('enforce maxSize against subsequent pushes', () => {
|
||||
const deque = new Deque([1, 2], { maxSize: 2 });
|
||||
|
||||
expect(deque.isFull).toBe(true);
|
||||
expect(() => deque.pushBack(3)).toThrow(RangeError);
|
||||
expect(() => deque.pushFront(0)).toThrow(RangeError);
|
||||
|
||||
deque.popFront();
|
||||
expect(deque.isFull).toBe(false);
|
||||
expect(() => deque.pushBack(3)).not.toThrow();
|
||||
});
|
||||
});
|
||||
|
||||
describe('pushBack', () => {
|
||||
|
||||
Reference in New Issue
Block a user