import { describe, it, expect } from 'vitest'; import { createBuffer2D, dwtForward, dwtInverse, yPlaneToBuffer, bufferToYPlane } from '../core/dwt.js'; describe('DWT', () => { it('should round-trip a simple buffer (1 level)', () => { const width = 16; const height = 16; const buf = createBuffer2D(width, height); for (let i = 0; i < buf.data.length; i++) { buf.data[i] = Math.round(Math.random() * 255); } const original = new Float64Array(buf.data); const { buf: transformed, dims } = dwtForward(buf, 1); dwtInverse(transformed, dims); for (let i = 0; i < original.length; i++) { expect(transformed.data[i]).toBeCloseTo(original[i], 8); } }); it('should round-trip a buffer (2 levels)', () => { const width = 64; const height = 64; const buf = createBuffer2D(width, height); for (let i = 0; i < buf.data.length; i++) { buf.data[i] = Math.round(Math.random() * 255); } const original = new Float64Array(buf.data); const { buf: transformed, dims } = dwtForward(buf, 2); dwtInverse(transformed, dims); for (let i = 0; i < original.length; i++) { expect(transformed.data[i]).toBeCloseTo(original[i], 8); } }); it('should convert Y plane to buffer and back', () => { const width = 32; const height = 32; const yPlane = new Uint8Array(width * height); for (let i = 0; i < yPlane.length; i++) { yPlane[i] = Math.floor(Math.random() * 256); } const buf = yPlaneToBuffer(yPlane, width, height); const result = bufferToYPlane(buf); expect(result).toEqual(yPlane); }); });