@foxglove/ulog
Version:
PX4 ULog file reader
39 lines (36 loc) • 1.65 kB
text/typescript
import { parseMessageDefinition, parseFieldDefinition } from "./definition";
describe("definition", () => {
it("parseFieldDefinition", async () => {
let field = parseFieldDefinition("");
expect(field).toBeUndefined();
field = parseFieldDefinition("uint8_t");
expect(field).toBeUndefined();
field = parseFieldDefinition("uint8_t foo")!;
expect(field).toBeDefined();
expect(field.type).toBe("uint8_t");
expect(field.name).toBe("foo");
});
it("parseMessageDefinition", async () => {
const format =
"esc_status:uint64_t timestamp;uint16_t counter;uint8_t esc_count;uint8_t esc_connectiontype;uint8_t[4] _padding0;esc_report[8] esc;";
const msgdef = parseMessageDefinition(format)!;
expect(msgdef).toBeDefined();
expect(msgdef.name).toBe("esc_status");
expect(msgdef.format).toBe(format);
expect(msgdef.fields.length).toBe(6);
expect(msgdef.fields[0]!.type).toBe("uint64_t");
expect(msgdef.fields[0]!.name).toBe("timestamp");
expect(msgdef.fields[1]!.type).toBe("uint16_t");
expect(msgdef.fields[1]!.name).toBe("counter");
expect(msgdef.fields[2]!.type).toBe("uint8_t");
expect(msgdef.fields[2]!.name).toBe("esc_count");
expect(msgdef.fields[3]!.type).toBe("uint8_t");
expect(msgdef.fields[3]!.name).toBe("esc_connectiontype");
expect(msgdef.fields[4]!.type).toBe("uint8_t");
expect(msgdef.fields[4]!.arrayLength).toBe(4);
expect(msgdef.fields[4]!.name).toBe("_padding0");
expect(msgdef.fields[5]!.type).toBe("esc_report");
expect(msgdef.fields[5]!.name).toBe("esc");
expect(msgdef.fields[5]!.arrayLength).toBe(8);
});
});