Files
ddp-js/packages/ddp/tests/encode.test.js
T
2026-06-03 22:04:44 -05:00

84 lines
2.0 KiB
JavaScript

const { deepEqual, throws } = require('assert');
const { describe, it } = require('node:test');
const ddp = require('@jwetzell/ddp');
const goodTests = [
{
description: 'simple DDP packet',
expected: new Uint8Array([0x40, 0x0f, 0x92, 0x01, 0x45, 0x67, 0x89, 0x10, 0x10, 0x11]),
packet: {
header: {
flags: {
version: 1,
timecode: false,
storage: false,
reply: false,
query: false,
push: false,
},
sequenceNumber: 15,
dataType: {
standard: false,
type: 2,
bitsPerPixel: 4,
},
sourceOrDestinationID: 1,
dataOffset: 1164413200,
dataLength: 4113,
},
data: new Uint8Array([]),
},
},
{
description: 'DDP packet with timecode',
expected: new Uint8Array([0x50, 0x0f, 0x92, 0x01, 0x45, 0x67, 0x89, 0x10, 0x10, 0x11, 0x10, 0x11, 0x11, 0x10]),
packet: {
header: {
flags: {
version: 1,
timecode: true,
storage: false,
reply: false,
query: false,
push: false,
},
sequenceNumber: 15,
dataType: {
standard: false,
type: 2,
bitsPerPixel: 4,
},
sourceOrDestinationID: 1,
dataOffset: 1164413200,
dataLength: 4113,
timecode: {
seconds: 4113,
fractionalSeconds: 4368,
},
},
data: new Uint8Array([]),
},
},
];
const badTests = [];
describe('DDP Message Encoding Pass', () => {
goodTests.forEach((messageTest) => {
it(messageTest.description, () => {
const encoded = ddp.encode(messageTest.packet);
deepEqual(encoded, messageTest.expected);
});
});
});
describe('DDP Message Encoding Throws', () => {
badTests.forEach((messageTest) => {
it(messageTest.description, () => {
throws(() => {
ddp.encode(messageTest.message);
}, messageTest.throwsMessage);
});
});
});