tressi
Version:
A lightweight, declarative stress testing CLI for modern developers.
62 lines (53 loc) • 1.77 kB
text/typescript
import { describe, expect, it } from 'vitest';
import { CircularBuffer } from '../src/circular-buffer';
describe('CircularBuffer', () => {
it('should initialize with the correct capacity', () => {
const buffer = new CircularBuffer<number>(5);
expect(buffer.size()).toBe(0);
});
it('should add items and increase size', () => {
const buffer = new CircularBuffer<number>(5);
buffer.add(1);
buffer.add(2);
expect(buffer.size()).toBe(2);
expect(buffer.getAll()).toEqual([1, 2]);
});
it('should not exceed capacity', () => {
const buffer = new CircularBuffer<number>(3);
buffer.add(1);
buffer.add(2);
buffer.add(3);
expect(buffer.size()).toBe(3);
expect(buffer.getAll()).toEqual([1, 2, 3]);
});
it('should overwrite the oldest items when full', () => {
const buffer = new CircularBuffer<number>(3);
buffer.add(1);
buffer.add(2);
buffer.add(3);
buffer.add(4); // Overwrites 1
expect(buffer.size()).toBe(3);
expect(buffer.getAll()).toEqual([2, 3, 4]);
});
it('should handle multiple overwrites correctly', () => {
const buffer = new CircularBuffer<number>(3);
buffer.add(1);
buffer.add(2);
buffer.add(3);
buffer.add(4); // Overwrites 1
buffer.add(5); // Overwrites 2
expect(buffer.size()).toBe(3);
expect(buffer.getAll()).toEqual([3, 4, 5]);
});
it('should return an empty array when empty', () => {
const buffer = new CircularBuffer<number>(5);
expect(buffer.getAll()).toEqual([]);
});
it('should work with a capacity of 1', () => {
const buffer = new CircularBuffer<number>(1);
buffer.add(10);
expect(buffer.getAll()).toEqual([10]);
buffer.add(20);
expect(buffer.getAll()).toEqual([20]);
});
});