X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=tests%2Fcircular-buffer.test.mjs;h=751ece907c7db07753aec60e1df91269ea1f1845;hb=HEAD;hp=804bb587962aca4c66f9808e923c33d2dd1eef93;hpb=bad5c70587b40a86fa4f55390c84bcc88cc8cbbd;p=poolifier.git diff --git a/tests/circular-buffer.test.mjs b/tests/circular-buffer.test.mjs index 804bb587..751ece90 100644 --- a/tests/circular-buffer.test.mjs +++ b/tests/circular-buffer.test.mjs @@ -2,36 +2,38 @@ import { expect } from 'expect' import { CircularBuffer, defaultBufferSize } from '../lib/circular-buffer.cjs' -describe('Circular buffer test suite', t => { +describe('Circular buffer test suite', () => { it('Verify that circular buffer can be instantiated', () => { const circularBuffer = new CircularBuffer() expect(circularBuffer).toBeInstanceOf(CircularBuffer) expect(circularBuffer.readIdx).toBe(0) expect(circularBuffer.writeIdx).toBe(0) expect(circularBuffer.maxArrayIdx).toBe(defaultBufferSize - 1) - expect(circularBuffer.items).toBeInstanceOf(Array) + expect(circularBuffer.size).toBe(0) + expect(circularBuffer.items).toBeInstanceOf(Float32Array) expect(circularBuffer.items.length).toBe(defaultBufferSize) }) it('Verify that circular buffer size can be set at instance creation', () => { - const circularBuffer = new CircularBuffer(1000) - expect(circularBuffer.maxArrayIdx).toBe(999) - expect(circularBuffer.items).toBeInstanceOf(Array) - expect(circularBuffer.items.length).toBe(1000) + const size = 1000 + const circularBuffer = new CircularBuffer(size) + expect(circularBuffer.maxArrayIdx).toBe(size - 1) + expect(circularBuffer.items).toBeInstanceOf(Float32Array) + expect(circularBuffer.items.length).toBe(size) }) it('Verify that circular buffer size is valid at instance creation', () => { expect(() => new CircularBuffer(0.25)).toThrow( - new TypeError('Invalid circular buffer size: 0.25 is not an integer') + new TypeError("Invalid circular buffer size: '0.25' is not an integer") ) expect(() => new CircularBuffer(-1)).toThrow( new RangeError('Invalid circular buffer size: -1 < 0') ) expect(() => new CircularBuffer(Number.MAX_SAFE_INTEGER + 1)).toThrow( new TypeError( - `Invalid circular buffer size: ${ + `Invalid circular buffer size: '${ Number.MAX_SAFE_INTEGER + 1 - } is not an integer` + }' is not an integer` ) ) }) @@ -39,23 +41,109 @@ describe('Circular buffer test suite', t => { it('Verify that circular buffer put() works as intended', () => { const circularBuffer = new CircularBuffer(4) circularBuffer.put(1) - expect(circularBuffer.items).toMatchObject([1]) + expect(circularBuffer.items).toStrictEqual( + new Float32Array([1, -1, -1, -1]) + ) expect(circularBuffer.writeIdx).toBe(1) + expect(circularBuffer.size).toBe(1) circularBuffer.put(2) - expect(circularBuffer.items).toMatchObject([1, 2]) + expect(circularBuffer.items).toStrictEqual(new Float32Array([1, 2, -1, -1])) expect(circularBuffer.writeIdx).toBe(2) + expect(circularBuffer.size).toBe(2) circularBuffer.put(3) - expect(circularBuffer.items).toMatchObject([1, 2, 3]) + expect(circularBuffer.items).toStrictEqual(new Float32Array([1, 2, 3, -1])) expect(circularBuffer.writeIdx).toBe(3) + expect(circularBuffer.size).toBe(3) circularBuffer.put(4) - expect(circularBuffer.items).toMatchObject([1, 2, 3, 4]) + expect(circularBuffer.items).toStrictEqual(new Float32Array([1, 2, 3, 4])) expect(circularBuffer.writeIdx).toBe(0) + expect(circularBuffer.size).toBe(4) circularBuffer.put(5) - expect(circularBuffer.items).toMatchObject([5, 2, 3, 4]) + expect(circularBuffer.items).toStrictEqual(new Float32Array([5, 2, 3, 4])) expect(circularBuffer.writeIdx).toBe(1) + expect(circularBuffer.size).toBe(4) circularBuffer.put(6) - expect(circularBuffer.items).toMatchObject([5, 6, 3, 4]) + expect(circularBuffer.items).toStrictEqual(new Float32Array([5, 6, 3, 4])) expect(circularBuffer.writeIdx).toBe(2) + expect(circularBuffer.size).toBe(4) + }) + + it('Verify that circular buffer get() works as intended', () => { + const circularBuffer = new CircularBuffer(4) + circularBuffer.put(1) + circularBuffer.put(2) + circularBuffer.put(3) + circularBuffer.put(4) + expect(circularBuffer.get()).toBe(1) + expect(circularBuffer.readIdx).toBe(1) + expect(circularBuffer.size).toBe(3) + expect(circularBuffer.get()).toBe(2) + expect(circularBuffer.readIdx).toBe(2) + expect(circularBuffer.size).toBe(2) + circularBuffer.put(5) + circularBuffer.put(6) + expect(circularBuffer.get()).toBe(3) + expect(circularBuffer.readIdx).toBe(3) + expect(circularBuffer.size).toBe(3) + expect(circularBuffer.get()).toBe(4) + expect(circularBuffer.readIdx).toBe(0) + expect(circularBuffer.size).toBe(2) + expect(circularBuffer.get()).toBe(5) + expect(circularBuffer.readIdx).toBe(1) + expect(circularBuffer.size).toBe(1) + expect(circularBuffer.get()).toBe(6) + expect(circularBuffer.readIdx).toBe(2) + expect(circularBuffer.size).toBe(0) + expect(circularBuffer.get()).toBe(undefined) + expect(circularBuffer.readIdx).toBe(2) + expect(circularBuffer.size).toBe(0) + }) + + it('Verify that circular buffer empty() works as intended', () => { + const circularBuffer = new CircularBuffer(4) + expect(circularBuffer.empty()).toBe(true) + circularBuffer.put(1) + expect(circularBuffer.empty()).toBe(false) + circularBuffer.put(2) + expect(circularBuffer.empty()).toBe(false) + circularBuffer.put(3) + expect(circularBuffer.empty()).toBe(false) + circularBuffer.put(4) + expect(circularBuffer.empty()).toBe(false) + circularBuffer.get() + expect(circularBuffer.empty()).toBe(false) + circularBuffer.get() + expect(circularBuffer.empty()).toBe(false) + circularBuffer.get() + expect(circularBuffer.empty()).toBe(false) + circularBuffer.get() + expect(circularBuffer.empty()).toBe(true) + }) + + it('Verify that circular buffer full() works as intended', () => { + const circularBuffer = new CircularBuffer(4) + expect(circularBuffer.full()).toBe(false) + circularBuffer.put(1) + expect(circularBuffer.full()).toBe(false) + circularBuffer.put(2) + expect(circularBuffer.full()).toBe(false) + circularBuffer.put(3) + expect(circularBuffer.full()).toBe(false) + circularBuffer.put(4) + expect(circularBuffer.full()).toBe(true) + circularBuffer.get() + expect(circularBuffer.full()).toBe(false) + circularBuffer.put(5) + expect(circularBuffer.full()).toBe(true) + circularBuffer.get() + expect(circularBuffer.full()).toBe(false) + circularBuffer.get() + expect(circularBuffer.full()).toBe(false) + circularBuffer.get() + expect(circularBuffer.full()).toBe(false) + circularBuffer.get() + expect(circularBuffer.full()).toBe(false) + expect(circularBuffer.empty()).toBe(true) }) it('Verify that circular buffer toArray() works as intended', () => {