2025-06-17 07:10:41 +02:00

35 lines
2.2 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tree_1 = require("./tree");
describe("tree", () => {
it("Creates complex node", () => {
const tree = tree_1.createComplexNode("mpe", ["0x00", "0x01"]);
expect(tree.bytes["0x00"].bytes["0x01"]).toHaveProperty("matches");
expect(tree.bytes["0x00"].bytes["0x01"]["matches"][0].typename).toBe("mpe");
});
it("Merges trees", () => {
const tree = tree_1.createComplexNode("pic", ["0x00"]);
const dba = tree_1.createNode("dba", ["0x00", "0x01", "0x02", "0x03"]);
const merged = tree_1.merge(dba, tree);
expect(merged.bytes["0x00"].matches[0].typename).toBe("pic");
expect(merged.bytes["0x00"].bytes["0x01"].bytes["0x02"].bytes["0x03"].matches[0]
.typename).toBe("dba");
});
it("Merges overlapping", () => {
const tree = tree_1.createComplexNode("pic", ["0x00"]);
const dba = tree_1.createNode("pif", ["0x00"]);
const merged = tree_1.merge(dba, tree);
expect(merged.bytes["0x00"].matches).toHaveLength(2);
});
it("Merges deep overlapping", () => {
const gifA = tree_1.createComplexNode("gif", ["0x47", "0x49", "0x46", "0x38", "0x37", "0x61"], { mime: "image/gif", extension: "gif" });
const gifB = tree_1.createNode("gif", ["0x47", "0x49", "0x46", "0x38", "0x38", "0x61"], { mime: "image/gif", extension: "gif" });
const gifC = tree_1.createNode("gif", ["0x47", "0x49", "0x46", "0x38", "0x39", "0x61"], { mime: "image/gif", extension: "gif" });
const mergeA = tree_1.merge(gifB, gifA);
const mergeB = tree_1.merge(gifC, mergeA);
expect(mergeB.bytes["0x47"].bytes["0x49"].bytes["0x46"].bytes["0x38"].bytes["0x37"].bytes["0x61"].matches[0]).toEqual({ typename: "gif", extension: "gif", mime: "image/gif" });
expect(mergeB.bytes["0x47"].bytes["0x49"].bytes["0x46"].bytes["0x38"].bytes["0x39"].bytes["0x61"].matches[0]).toEqual({ typename: "gif", extension: "gif", mime: "image/gif" });
expect(mergeB.bytes["0x47"].bytes["0x49"].bytes["0x46"].bytes["0x38"].bytes["0x38"].bytes["0x61"].matches[0]).toEqual({ typename: "gif", extension: "gif", mime: "image/gif" });
});
});