32 lines
1004 B
TypeScript
32 lines
1004 B
TypeScript
import { describe, it, expect } from 'vitest'
|
|
import { decodeShellPayload, shellPayloadByteLength } from '../../src/utils/shellData'
|
|
|
|
describe('decodeShellPayload', () => {
|
|
it('decodes number arrays as UTF-8 bytes (not Array.join)', () => {
|
|
// ESC [ ? 2 0 0 4 l → bracketed paste off
|
|
const bytes = [27, 91, 63, 50, 48, 48, 52, 108]
|
|
const text = decodeShellPayload(bytes)
|
|
expect(text).toBe('\x1b[?2004l')
|
|
expect(text).not.toContain(',')
|
|
})
|
|
|
|
it('decodes Buffer-like objects', () => {
|
|
const payload = { type: 'Buffer', data: [114, 111, 111, 116] } // "root"
|
|
expect(decodeShellPayload(payload)).toBe('root')
|
|
})
|
|
|
|
it('passes through strings', () => {
|
|
expect(decodeShellPayload('hello')).toBe('hello')
|
|
})
|
|
|
|
it('decodes Uint8Array', () => {
|
|
expect(decodeShellPayload(new Uint8Array([65, 66, 67]))).toBe('ABC')
|
|
})
|
|
})
|
|
|
|
describe('shellPayloadByteLength', () => {
|
|
it('counts array length', () => {
|
|
expect(shellPayloadByteLength([1, 2, 3])).toBe(3)
|
|
})
|
|
})
|