Automerge backed Markdown editor for the Atmosphere
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566/** * Tests for arrayBufferToBase64 utility function. * * Obsidian API: `function arrayBufferToBase64(buffer: ArrayBuffer): string` */import { describe, it, expect } from 'vitest'import { arrayBufferToBase64, base64ToArrayBuffer } from '../obsidian-stubs'
describe('arrayBufferToBase64', () => { it('returns empty string for empty ArrayBuffer', () => { const buffer = new ArrayBuffer(0) expect(arrayBufferToBase64(buffer)).toBe('') })
it('encodes single zero byte to "AA=="', () => { const bytes = new Uint8Array([0x00]) expect(arrayBufferToBase64(bytes.buffer)).toBe('AA==') })
it('encodes single byte 0xff to "/w=="', () => { const bytes = new Uint8Array([0xff]) expect(arrayBufferToBase64(bytes.buffer)).toBe('/w==') })
it('encodes "Hello" bytes to "SGVsbG8="', () => { const bytes = new Uint8Array([72, 101, 108, 108, 111]) // "Hello" expect(arrayBufferToBase64(bytes.buffer)).toBe('SGVsbG8=') })
it('encodes bytes that produce base64 without padding', () => { // "abc" -> "YWJj" (no padding needed when input length divisible by 3) const bytes = new Uint8Array([97, 98, 99]) // "abc" expect(arrayBufferToBase64(bytes.buffer)).toBe('YWJj') })
it('encodes arbitrary binary data correctly', () => { const bytes = new Uint8Array([0xde, 0xad, 0xbe, 0xef]) expect(arrayBufferToBase64(bytes.buffer)).toBe('3q2+7w==') })
it('round-trips with base64ToArrayBuffer for small data', () => { const original = new Uint8Array([1, 2, 3, 255, 0, 128]) const encoded = arrayBufferToBase64(original.buffer) const decoded = new Uint8Array(base64ToArrayBuffer(encoded)) expect(decoded).toEqual(original) })
it('round-trips with base64ToArrayBuffer for larger data (> 32KB chunk size)', () => { // Create a 50KB buffer with predictable content const size = 50000 const original = new Uint8Array(size) for (let i = 0; i < size; i++) { original[i] = i % 256 } const encoded = arrayBufferToBase64(original.buffer) const decoded = new Uint8Array(base64ToArrayBuffer(encoded)) expect(decoded.length).toBe(original.length) expect(decoded).toEqual(original) })
it('handles sequential bytes 0x00-0x0f', () => { const bytes = new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]) expect(arrayBufferToBase64(bytes.buffer)).toBe('AAECAwQFBgcICQoLDA0ODw==') })})