38 lines
1.4 KiB
TypeScript
38 lines
1.4 KiB
TypeScript
import { Dissected } from "@hamradio/packet";
|
|
import { describe, expect, it } from "vitest";
|
|
|
|
import { Frame } from "../src/frame";
|
|
import { DataType, 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(DataType.UserDefined);
|
|
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(DataType.UserDefined);
|
|
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();
|
|
});
|
|
});
|