Răsfoiți Sursa

test(jsonl): cover reusable decoders in node matrix

imccyu 2 luni în urmă
părinte
comite
d19e598d5e

+ 16 - 1
packages/session-persistence/session-persistence-jsonl/tests/zstd.compat.spec.ts

@@ -1,5 +1,9 @@
 import { describe, expect, it } from 'vitest'
-import { compressZstdFrame, decompressZstdFrame, decompressZstdPrefix, scanZstdFrames } from '../src/zstd.ts'
+import {
+  compressZstdFrame, createZstdFrameDecoder, decompressZstdFrame, decompressZstdPrefix, scanZstdFrames,
+} from '../src/zstd.ts'
+import { NodePrivateZstdFrameDecoder } from '../src/zstd-private-decoder.ts'
+import { PublicZstdFrameDecoder } from '../src/zstd-public-decoder.ts'
 
 describe('JSONL Zstandard compatibility', () => {
   it('round-trips concatenated checksummed frames through the built-in Node API', async () => {
@@ -16,6 +20,17 @@ describe('JSONL Zstandard compatibility', () => {
     const decoded = await Promise.all(frames.map(frame => decompressZstdFrame(encoded.subarray(frame.start, frame.end))))
     expect(Buffer.concat(decoded).toString()).toContain('"type":"turn/start"')
 
+    const preferred = createZstdFrameDecoder()
+    expect(preferred).toBeInstanceOf(NodePrivateZstdFrameDecoder)
+    for (const decoder of [preferred, new PublicZstdFrameDecoder()]) {
+      try {
+        const plaintext = Array.from(decoder.decode(encoded, frames), chunk => Buffer.from(chunk))
+        expect(Buffer.concat(plaintext).toString()).toContain('"type":"turn/start"')
+      } finally {
+        decoder.close()
+      }
+    }
+
     const eventFrame = encoded.subarray(frames[1]!.start, frames[1]!.end)
     const missingChecksumByte = eventFrame.subarray(0, -1)
     expect(scanZstdFrames(missingChecksumByte)).toEqual({ frames: [], tornStart: 0 })