Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions tDataTypeTemplates/insertSelecetdLNodeType.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@ import {
atccSelection,
invalidSelection,
ltrkSelection,
mhaiSelection,
mmxuSelection,
ptocSelection,
} from "./insertSelectedLNodeType.testdata.js";

import {
Expand Down Expand Up @@ -189,4 +191,28 @@ describe("insertLNodeTypeSelection", () => {
const lNodeType = edits[0].node as Element;
expect(lNodeType.tagName).to.equal("DataTypeTemplates");
});

it("add count attribute to data attribute in case is an array", () => {
const data = nsdToJson("PTOC") as LNodeDescription;
const edits = insertSelectedLNodeType(
missingDataTypes,
ptocSelection,
{ class: "PTOC", data },
);

const doTypeEdit = edits[5].node as Element;
expect(doTypeEdit.querySelector('DA[name="crvPts"]')?.getAttribute('count')).to.equal("maxPts");
});

it("add count attribute to sub data object in case is an array", () => {
const data = nsdToJson("MHAI") as LNodeDescription;
const edits = insertSelectedLNodeType(
missingDataTypes,
mhaiSelection,
{ class: "MHAI", data },
);

const doTypeEdit = edits[4].node as Element;
expect(doTypeEdit.querySelector('SDO[name="phsAHar"]')?.getAttribute('count')).to.equal("maxPts");
});
});
85 changes: 85 additions & 0 deletions tDataTypeTemplates/insertSelectedLNodeType.testdata.ts
Original file line number Diff line number Diff line change
Expand Up @@ -428,3 +428,88 @@ export const invalidSelection = {
"ldNs": {}
}
};

export const ptocSelection = {
"Beh": {
"q": {},
"stVal": {
"blocked": {},
"off": {},
"on": {},
"test": {},
"test/blocked": {}
},
"t": {}
},
"Op": {
"general": {},
"q": {},
"t": {}
},
"Str": {
"dirGeneral": {
"backward": {},
"both": {},
"forward": {},
"unknown": {}
},
"general": {},
"q": {},
"t": {}
},
"TmAChr": {
"crvPts": {
"xVal": {},
"yVal": {}
},
"maxPts": {},
"numPts": {},
"xD": {},
"yD": {},
"yUnits": {
"SIUnit": {
"°C": {},
"1/s": {}
}
},
"xUnits": {
"SIUnit": {
"°C": {},
"1/s": {}
}
}
}
}

export const mhaiSelection = {
"Beh": {
"q": {},
"stVal": {
"blocked": {},
"off": {},
"on": {},
"test": {},
"test/blocked": {}
},
"t": {}
},
"HA": {
"evalTm": {},
"frequency": {},
"maxPts": {},
"numCyc": {},
"numHar": {},
"phsAHar": {
"cVal": {
"mag": {
"f": {}
},
"ang": {
"f": {}
}
},
"q": {},
"t": {}
}
}
}
13 changes: 13 additions & 0 deletions tDataTypeTemplates/insertSelectedLNodeType.ts
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,7 @@ function hashElement(element: Element): string {
return cyrb64(JSON.stringify(describeElement(element)));
}

// eslint-disable-next-line @typescript-eslint/no-explicit-any
function data(lnData: any, path: string[]): any {
let d = lnData;
for (const slug of path.slice(0, -1)) d = d[slug].children;
Expand Down Expand Up @@ -329,6 +330,8 @@ export function insertSelectedLNodeType(
qchg?: string;
typeKind?: "BASIC" | "ENUMERATED" | "CONSTRUCTED" | "undefined";
type?: string;
isArray?: string;
sizeAttribute?: string;
},
][] = Object.entries(dO.children);

Expand All @@ -340,11 +343,21 @@ export function insertSelectedLNodeType(
const type = createDOType(path.concat([name]), selection[name]);
const sdo = createElement(doc, "SDO", { name, transient, type });
doType.prepend(sdo);

// For arrays set count attribute
if (dep.isArray === "true" && dep.sizeAttribute) {
sdo.setAttribute("count", dep.sizeAttribute);
}
} else {
const { fc, dchg, dupd, qchg } = dep;

const da = createElement(doc, "DA", { name, fc, dchg, dupd, qchg });

// For arrays set count attribute
if (dep.isArray === "true" && dep.sizeAttribute) {
da.setAttribute("count", dep.sizeAttribute);
}

if (dep.typeKind === "BASIC" || !dep.typeKind) {
da.setAttribute("bType", dep.type!);
}
Expand Down
2 changes: 0 additions & 2 deletions tDataTypeTemplates/nsdToJson.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,6 @@ describe("NSD to Json parsing function", () => {
const data = nsdToJson(lnClass)!;
const sClass = lnClassData[lnClass];

console.log(lnClass);

Object.keys(sClass).forEach((key) => {
expect(data[key]).to.deep.equal(sClass[key]);
});
Expand Down