output-json.spec.ts 779 B

123456789101112131415161718
  1. import { describe, expect, it } from 'vitest'
  2. import { truncateJsonStringBytes } from '../src/output-json.ts'
  3. describe('truncateJsonStringBytes', () => {
  4. it('returns a fitting string whole and rejects budgets without JSON quotes', () => {
  5. expect(truncateJsonStringBytes('fits', 6)).toBe('fits')
  6. expect(truncateJsonStringBytes('x', 1)).toBe('')
  7. })
  8. it('accounts every JSON escape and cuts only between complete code points', () => {
  9. const prefix = '"\\\b\t\n\f\r\u0000😀\ud800€a'
  10. const text = `${prefix}z`
  11. const budget = Buffer.byteLength(JSON.stringify(prefix), 'utf8')
  12. expect(truncateJsonStringBytes(text, budget)).toBe(prefix)
  13. expect(Buffer.byteLength(JSON.stringify(truncateJsonStringBytes(text, budget)), 'utf8')).toBe(budget)
  14. })
  15. })