| import { describe, it, expect } from 'vitest'; |
| import { arrayBufferToBase64, base64ToArrayBuffer } from '../binary-encoding'; |
|
|
| describe('binary-encoding', () => { |
| it('round-trips arbitrary bytes', () => { |
| const bytes = new Uint8Array([0, 1, 2, 127, 128, 200, 254, 255]); |
| const b64 = arrayBufferToBase64(bytes.buffer); |
| const out = new Uint8Array(base64ToArrayBuffer(b64)); |
| expect(Array.from(out)).toEqual(Array.from(bytes)); |
| }); |
|
|
| it('produces valid base64 (decodable by atob)', () => { |
| const bytes = new Uint8Array([137, 80, 78, 71]); |
| const b64 = arrayBufferToBase64(bytes.buffer); |
| expect(b64).toBe('iVBORw=='); |
| }); |
|
|
| it('handles an empty buffer', () => { |
| expect(arrayBufferToBase64(new ArrayBuffer(0))).toBe(''); |
| expect(base64ToArrayBuffer('').byteLength).toBe(0); |
| }); |
|
|
| it('round-trips content larger than the chunk size', () => { |
| const size = 0x8000 * 2 + 123; |
| const bytes = new Uint8Array(size); |
| for (let i = 0; i < size; i++) bytes[i] = i % 256; |
| const out = new Uint8Array(base64ToArrayBuffer(arrayBufferToBase64(bytes.buffer))); |
| expect(out.length).toBe(size); |
| expect(Array.from(out)).toEqual(Array.from(bytes)); |
| }); |
| }); |
|
|