Implemented remaining payload types

This commit is contained in:
2026-03-15 21:32:01 +01:00
parent eca757b24f
commit 1f4108b888
4 changed files with 252 additions and 8 deletions

View File

@@ -0,0 +1,38 @@
import { describe, it, expect } from "vitest";
import { Dissected } from "@hamradio/packet";
import { Frame } from "../src/frame";
import type { UserDefinedPayload } from "../src/frame.types";
describe("Frame.decodeUserDefined", () => {
it("parses packet type only", () => {
const data = "CALL>APRS:{01";
const frame = Frame.fromString(data);
const decoded = frame.decode() as UserDefinedPayload;
expect(decoded).not.toBeNull();
expect(decoded.type).toBe("user-defined");
expect(decoded.userPacketType).toBe("01");
expect(decoded.data).toBe("");
});
it("parses packet type and data and emits sections", () => {
const data = "CALL>APRS:{TEX Hello world";
const frame = Frame.fromString(data);
const res = frame.decode(true) as {
payload: UserDefinedPayload;
structure: Dissected;
};
expect(res.payload).not.toBeNull();
expect(res.payload.type).toBe("user-defined");
expect(res.payload.userPacketType).toBe("TEX");
expect(res.payload.data).toBe("Hello world");
const raw = res.structure.find((s) => s.name === "user-defined");
const typeSection = res.structure.find(
(s) => s.name === "user-packet-type",
);
const dataSection = res.structure.find((s) => s.name === "user-data");
expect(raw).toBeDefined();
expect(typeSection).toBeDefined();
expect(dataSection).toBeDefined();
});
});