Files
orca/src/shared/node-readable-text.test.ts
T
NeilandOrca c419aadb19 oom(01): A1-shared-readers — reintroduce #10179 subset (#10294)
Files: 18 applied, 0 deleted (from 6eb70d8370)

Co-authored-by: Orca <help@stably.ai>
2026-07-24 20:30:31 -07:00

41 lines
1.2 KiB
TypeScript

import { describe, expect, it } from 'vitest'
import {
NodeReadableTextTooLargeError,
readNodeReadableTextWithinLimit
} from './node-readable-text'
async function* chunks(values: unknown[]): AsyncGenerator<unknown> {
yield* values
}
describe('readNodeReadableTextWithinLimit', () => {
it('preserves accepted UTF-8 bytes split across chunks', async () => {
const encoded = Buffer.from('hello 🌍')
await expect(
readNodeReadableTextWithinLimit(
chunks([encoded.subarray(0, 8), encoded.subarray(8)]),
encoded.byteLength
)
).resolves.toBe('hello 🌍')
})
it('accepts input exactly at the byte limit', async () => {
await expect(
readNodeReadableTextWithinLimit(chunks(['ab', Buffer.from('cd')]), 4)
).resolves.toBe('abcd')
})
it('rejects before retaining input beyond the byte limit', async () => {
await expect(readNodeReadableTextWithinLimit(chunks(['1234', '5']), 4)).rejects.toEqual(
new NodeReadableTextTooLargeError(5, 4)
)
})
it('does not let an unlimited sequence of empty chunks grow retained state', async () => {
await expect(
readNodeReadableTextWithinLimit(chunks(Array.from({ length: 10_000 }, () => '')), 0)
).resolves.toBe('')
})
})