import { assert, describe, expect, it } from 'vitest' import { utf8FromBytesNative, utf8FromBytesNode } from './utf8-from-bytes.js' for (const utf8FromBytes of [utf8FromBytesNode, utf8FromBytesNative] as const) { assert(utf8FromBytes, 'utf8FromBytes implementation should not be null') describe(utf8FromBytes, () => { it('decodes empty Uint8Array', () => { const decoded = utf8FromBytes(new Uint8Array(0)) expect(typeof decoded).toBe('string') expect(decoded).toBe('') }) it('decodes 10MB', () => { const bytes = Buffer.allocUnsafe(10_000_000).fill('๐Ÿฉ') const decoded = utf8FromBytes(bytes) expect(decoded).toBe('๐Ÿฉ'.repeat(10_000_000 / 4)) }) for (const string of [ '', '\0\0', '\0\0\0', '\0\0\0\0', '__', 'รฉ', 'ร รง', '\0รฉร รง', '```\x1b', 'aaa', 'Hello, World!', '๐Ÿ˜€๐Ÿ˜ƒ๐Ÿ˜„๐Ÿ˜๐Ÿ˜†๐Ÿ˜…๐Ÿ˜‚๐Ÿคฃ๐Ÿ˜Š๐Ÿ˜‡', '๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ป๐Ÿ‘ฉโ€๐Ÿ”ฌ๐Ÿ‘จโ€๐Ÿ”ฌ๐Ÿ‘ฉโ€๐Ÿš€๐Ÿ‘จโ€๐Ÿš€', '๐ŸŒ๐ŸŒŽ๐ŸŒ๐ŸŒ๐Ÿช๐ŸŒŸโœจโšก๐Ÿ”ฅ๐Ÿ’ง', ] as const) { const buffer = Buffer.from(string, 'utf8') it(`decodes ${JSON.stringify(string)}`, () => { const decoded = utf8FromBytes(buffer) expect(decoded).toBe(string) }) } }) }