From 4630964f133e08fb0d41bdaaa5e4979545adc014 Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Tue, 20 Oct 2026 16:50:34 -0400 Subject: [PATCH 01/13] [wip] Keep every record of a MAT-file, and which node each one became A save that splices a .mat writes each unedited variable as the bytes it was read from, and that needs bytes the reader threw away: the compressed records (recompressing gives back 18 of cases.mat's 78), the header's subsystem offset, and the records it skipped, which a save holding only the variables would drop without a word. parseMat now also returns headerBytes, subsystemOffset, every top-level record in file order (offset, length, a view of its bytes, compressed, name, anonymous, read or dropped and why, and the variable made of it), and framed: whether those records tile the file exactly as MATLAB frames them. A zero tag, trailing bytes, a truncated record or a plain record without its padding leave the file unframed; what is shown is unchanged. MatNode keeps them, and binds each node it builds from a variable, of any kind, to that variable's record (recordOf, nodeOf), so a writer can go from a record to what became of it and back. A host's parse without records, or one that does not bind one for one, keeps none, so its save can be refused instead of guessed at. --- dist/datamodel/node/container/MatNode.d.ts | 32 +- .../datamodel/node/container/MatNode.d.ts.map | 2 +- dist/datamodel/node/container/MatNode.js | 89 ++- dist/datamodel/node/container/MatNode.js.map | 2 +- dist/datamodel/parser/MatParser.d.ts | 23 + dist/datamodel/parser/MatParser.d.ts.map | 2 +- dist/datamodel/parser/MatParser.js | 89 ++- dist/datamodel/parser/MatParser.js.map | 2 +- dist/index.d.ts | 1 + dist/index.d.ts.map | 2 +- dist/index.js.map | 2 +- src/datamodel/node/container/MatNode.ts | 133 ++++- src/datamodel/parser/MatParser.ts | 150 ++++- src/index.ts | 2 + test/matRecords.test.ts | 526 ++++++++++++++++++ 15 files changed, 1015 insertions(+), 42 deletions(-) create mode 100644 test/matRecords.test.ts diff --git a/dist/datamodel/node/container/MatNode.d.ts b/dist/datamodel/node/container/MatNode.d.ts index 53571ce0..ae47ea69 100644 --- a/dist/datamodel/node/container/MatNode.d.ts +++ b/dist/datamodel/node/container/MatNode.d.ts @@ -3,11 +3,34 @@ import type BaseNode from '../BaseNode.js'; import type { PropClass, PIGroupDef } from '../BaseNode.js'; import type { MatVariable } from '../data/MatlabVariableNode.js'; import type { ParseWarning } from '../../parser/ParseWarning.js'; +import type { MatRecord, ParsedMat } from '../../parser/MatParser.js'; +export type MatParse = Pick & Partial>; export default class MatNode extends ContainerNode { header: string; dirty: boolean; _anonymousElements: MatVariable[]; + headerBytes: Uint8Array | null; + records: MatRecord[] | null; + subsystemOffset: number; + framed: boolean; + unframed: { + at: number; + reason: string; + } | null; + _recordNodes: Map; + _nodeRecords: Map; constructor(name: string); + /** + * The record `node` was read from, or null for a node no record became: a variable added + * since the file was read, or any node of a tree with no records (`records` null). + */ + recordOf(node: BaseNode): MatRecord | null; + /** + * The node `record` became, whether or not it is still in the tree (a deleted one's + * `parent` is not this), or null for a record that became no node: the subsystem or + * another unnamed element (`_anonymousElements`), and a record the reader dropped. + */ + nodeOf(record: MatRecord): BaseNode | null; get displayName(): string; get readOnly(): boolean; get sourceFormat(): string; @@ -27,16 +50,13 @@ export default class MatNode extends ContainerNode { redo: () => void; } | null; getVariables(): MatVariable[]; - static fromParsed(parsed: { - header: string; - variables: MatVariable[]; - warnings?: ParseWarning[]; - }, filename: string, options?: { + static fromParsed(parsed: MatParse, filename: string, options?: { nodeCeiling?: number; }): MatNode; + _bindRecord(child: BaseNode, record: MatRecord | undefined): void; static _addVariables(node: MatNode, parsed: { variables: MatVariable[]; warnings?: ParseWarning[]; - }): void; + }, recordOf?: ReadonlyMap | null): void; } //# sourceMappingURL=MatNode.d.ts.map \ No newline at end of file diff --git a/dist/datamodel/node/container/MatNode.d.ts.map b/dist/datamodel/node/container/MatNode.d.ts.map index 5d330c01..4cafe935 100644 --- a/dist/datamodel/node/container/MatNode.d.ts.map +++ b/dist/datamodel/node/container/MatNode.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"MatNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/container/MatNode.ts"],"names":[],"mappings":"AAEA,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAIhD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAOjE,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,aAAa;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,kBAAkB,EAAE,WAAW,EAAE,CAAC;gBAEtB,IAAI,EAAE,MAAM;IAOxB,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAWD,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,aAAa,IAAI,SAAS,EAAE;IAI5B,WAAW,IAAI,UAAU,EAAE;IAI3B,UAAU,IAAI,IAAI;IAIlB,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,IAAI,EAAE,MAAM,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,IAAI,CAAA;KAAE;IAkB7G,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAYrC,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG;QAAE,IAAI,EAAE,MAAM,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,IAAI,CAAA;KAAE,GAAG,IAAI;IAmB9E,YAAY,IAAI,WAAW,EAAE;IA8B7B,MAAM,CAAC,UAAU,CACf,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,WAAW,EAAE,CAAC;QAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAA;KAAE,EAC/E,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAO,GACrC,OAAO;IAuBV,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE;QAAE,SAAS,EAAE,WAAW,EAAE,CAAC;QAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAA;KAAE,GAAG,IAAI;CA2B3G"} \ No newline at end of file +{"version":3,"file":"MatNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/container/MatNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/node/container/MatNode.js b/dist/datamodel/node/container/MatNode.js index 6c00f365..16ced357 100644 --- a/dist/datamodel/node/container/MatNode.js +++ b/dist/datamodel/node/container/MatNode.js @@ -14,6 +14,28 @@ export default class MatNode extends ContainerNode { this.header = ''; this.dirty = false; this._anonymousElements = []; + this.headerBytes = null; + this.records = null; + this.subsystemOffset = 0; + this.framed = false; + this.unframed = null; + this._recordNodes = new Map(); + this._nodeRecords = new Map(); + } + /** + * The record `node` was read from, or null for a node no record became: a variable added + * since the file was read, or any node of a tree with no records (`records` null). + */ + recordOf(node) { + return this._nodeRecords.get(node) ?? null; + } + /** + * The node `record` became, whether or not it is still in the tree (a deleted one's + * `parent` is not this), or null for a record that became no node: the subsystem or + * another unnamed element (`_anonymousElements`), and a record the reader dropped. + */ + nodeOf(record) { + return this._recordNodes.get(record) ?? null; } get displayName() { return this.name; @@ -123,37 +145,69 @@ export default class MatNode extends ContainerNode { // containers have no rows and names the first ('part-not-expanded'). A parse handed over with // no warnings array (an older host's) is given one for it, which is the array addMatSource // and addMatSourceParsed pass on: both read it after this returns. + // + // Each node built of a record is bound to it (recordOf, nodeOf), whatever node it is: a + // plain variable, an MCOS object's typed node, a function handle, one shown as not + // decoded. A parse with no records, or whose records do not cover its variables one for + // one, binds none and keeps none (`records` null). static fromParsed(parsed, filename, options = {}) { const node = new MatNode(filename); node.header = parsed.header; + const records = heldRecords(parsed); // A .mat file keeps the MCOS blob in an anonymous trailing element. Every opaque in // the file, nested or not, comes back carrying its own decode, and what the decoder // could not read of one is a warning on the file. const anonElement = parsed.variables.find((v) => v._anonymous); attachMcosDecoded(anonElement?._rawBytes, parsed.variables, parsed.warnings); const ceiling = options.nodeCeiling ?? MAT_NODE_CEILING; - const { cut, firstCut } = buildUnderCeiling(ceiling, () => MatNode._addVariables(node, parsed)); + const recordOf = records ? new Map(records.filter((r) => r.variable).map((r) => [r.variable, r])) : null; + const { cut, firstCut } = buildUnderCeiling(ceiling, () => MatNode._addVariables(node, parsed, recordOf)); if (cut > 0 && firstCut) { const warnings = parsed.warnings ?? (parsed.warnings = []); warnings.push(notExpandedWarning(firstCut.matlabPath, cut, ceiling)); } + if (records && bindsEveryRecord(node, records, parsed.variables)) { + node.headerBytes = parsed.headerBytes; + node.records = records; + node.subsystemOffset = parsed.subsystemOffset ?? 0; + node.framed = parsed.framed === true; + node.unframed = parsed.unframed ?? null; + } + else { + node._recordNodes.clear(); + node._nodeRecords.clear(); + } return node; } + _bindRecord(child, record) { + if (record) { + this._recordNodes.set(record, child); + this._nodeRecords.set(child, record); + } + } // Every variable as a row of `node`, in the file's order, under the ceiling fromParsed arms: // all of them counted first, and none refused (matNodeCeiling.chargeNodes), so that the rows // under them are what is left, and a tree is never more nodes than the ceiling or the // variables, whichever is more. - static _addVariables(node, parsed) { + // + // `recordOf` is each variable's record, by identity (MatRecord.variable), and every node + // made of a variable is bound to it here, the one place all four kinds are made. + static _addVariables(node, parsed, recordOf = null) { chargeNodes(parsed.variables.filter((v) => !v._anonymous).length); for (const variable of parsed.variables) { if (variable._anonymous) { node._anonymousElements.push(variable); continue; } + const record = recordOf?.get(variable); + const add = (child) => { + node.addChild(child); + node._bindRecord(child, record); + }; if (variable.isOpaque) { const mcosNode = buildUncut(() => modelOpaqueMcosVariable(variable, mcosDecodedFor(variable), node, parsed.warnings)); if (mcosNode) { - node.addChild(mcosNode); + add(mcosNode); continue; } } @@ -164,13 +218,38 @@ export default class MatNode extends ContainerNode { const handle = functionHandleOf(variable); if (handle) { const value = handle.text === null ? 'Matrix(' + variable.dimensions.join(',') + ')' : handle.text; - node.addChild(MatlabVariableNode.parse({ _type: 'function_handle', _value: value }, variable.name, node)); + add(MatlabVariableNode.parse({ _type: 'function_handle', _value: value }, variable.name, node)); continue; } - node.addChild(variableNodeOf(variable, node, parsed.warnings)); + add(variableNodeOf(variable, node, parsed.warnings)); } } } +// The records of `parsed` a save can splice, or null: none for a host's parse that carries +// none, and none for one whose header or records are not byte views as long as they say, +// which no reader of this package hands over. Views are told by ArrayBuffer.isView, which +// answers for one made in another realm (a worker's, structured-cloned here) as well. +function heldRecords(parsed) { + const { headerBytes, records } = parsed; + if (!Array.isArray(records) || !ArrayBuffer.isView(headerBytes) || headerBytes.byteLength !== 128) { + return null; + } + const whole = records.every((r) => r && ArrayBuffer.isView(r.bytes) && r.bytes.byteLength === r.length); + return whole ? records : null; +} +// Whether the tree `node` was built as is bound one for one: every variable the variable of +// exactly one record, and every node bound to the record of the variable it was made of (an +// unnamed element is made into no node, and is in `_anonymousElements`). A parse whose +// records were made apart from its variables, or whose variables a host changed since, +// binds short, and its records are not this tree's to splice. +function bindsEveryRecord(node, records, variables) { + const withVariable = records.filter((r) => r.variable); + const ofRecords = new Set(withVariable.map((r) => r.variable)); + return (ofRecords.size === withVariable.length && + ofRecords.size === variables.length && + variables.every((v) => ofRecords.has(v)) && + node._nodeRecords.size === node.children.length); +} // The file's one word about its node ceiling, which is not a loss, as `duplicate-id` is not // (ParseWarning): every value in it is read, and copied whole. `part` is the first container // built without its rows, in the order the tree is built, and the count is of the others. diff --git a/dist/datamodel/node/container/MatNode.js.map b/dist/datamodel/node/container/MatNode.js.map index 01fc28f4..541f42a8 100644 --- a/dist/datamodel/node/container/MatNode.js.map +++ b/dist/datamodel/node/container/MatNode.js.map @@ -1 +1 @@ -{"version":3,"file":"MatNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/container/MatNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"MatNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/container/MatNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/parser/MatParser.d.ts b/dist/datamodel/parser/MatParser.d.ts index 6aef7716..d8db4a8d 100644 --- a/dist/datamodel/parser/MatParser.d.ts +++ b/dist/datamodel/parser/MatParser.d.ts @@ -25,6 +25,29 @@ export interface ParsedMat { header: string; variables: MatVariable[]; warnings: ParseWarning[]; + headerBytes: Uint8Array; + subsystemOffset: number; + records: MatRecord[]; + framed: boolean; + unframed: { + at: number; + reason: string; + } | null; +} +/** + * One top-level record of a MAT-file, in the file's own bytes: a variable, the subsystem + * that holds the file's objects, or a record this reader did not read. + */ +export interface MatRecord { + offset: number; + length: number; + bytes: Uint8Array; + compressed: boolean; + name: string | null; + anonymous: boolean; + status: 'read' | 'dropped'; + reason?: string; + variable: MatVariable | null; } export declare function undecodedValue(dimensions: number[], className: string): string; export declare const MAX_NESTING = 128; diff --git a/dist/datamodel/parser/MatParser.d.ts.map b/dist/datamodel/parser/MatParser.d.ts.map index d5e69fe7..477c87db 100644 --- a/dist/datamodel/parser/MatParser.d.ts.map +++ b/dist/datamodel/parser/MatParser.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"MatParser.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/MatParser.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"MatParser.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/MatParser.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/parser/MatParser.js b/dist/datamodel/parser/MatParser.js index 493e3460..90b62caa 100644 --- a/dist/datamodel/parser/MatParser.js +++ b/dist/datamodel/parser/MatParser.js @@ -1312,6 +1312,21 @@ export function parseMat(arrayBuffer) { // left holding no data is that one loss, said once (collectUndecoded). const readShort = new Set(); let offset = 128; + // The file's records as a save splices them (ParsedMat.records), and the first place + // they stop tiling the file, if they do. Kept beside the walk rather than by it: the + // walk steps 8 + nbytes past every record, as it always has, and that is MATLAB's step + // for every record but a plain one whose nbytes is not a multiple of 8, which MATLAB + // pads and the walk does not. No file MATLAB wrote under test/ holds one, an miMATRIX's + // nbytes counting its sub-elements' padding, so a file that does is left unframed + // rather than walked a second way. + const records = []; + let unframed = null; + const unframe = (at, reason) => { unframed ??= { at, reason }; }; + const dropped = (record, warning) => { + record.status = 'dropped'; + record.reason = warning.message; + warnings.push(warning); + }; // The name to blame a short record on — empty for the unnamed element every MCOS // file carries, which has no name to give. const nameFor = (variable) => (variable._anonymous ? '' : variable.name); @@ -1327,13 +1342,18 @@ export function parseMat(arrayBuffer) { message: `The file ends with ${buf.length - offset} byte(s) where a record header needs 8, ` + 'so anything stored after the last variable read was not read.', }); + unframe(offset, `the file ends ${buf.length - offset} byte(s) into a record's tag`); break; } const dataType = view.getUint32(offset, true); const numBytes = view.getUint32(offset + 4, true); // The format's own end-of-variables marker. NOT a warning: a file that ends - // where it says it ends has been read completely. + // where it says it ends has been read completely. Not a record either, and the + // file is not framed: measured against MATLAB R2027a, a file whose last variable is + // followed by 8 zero bytes fails to load, as one followed by 3 or 100 does. if (dataType === 0 && numBytes === 0) { + unframe(offset, `a zero tag at byte ${offset} is no record, and it and the ${buf.length - offset - 8} byte(s) ` + + 'after it are not read'); break; } // A record may declare more bytes than the file holds. Everything below clamps @@ -1343,7 +1363,42 @@ export function parseMat(arrayBuffer) { // until after the parse so the warning can name the variable it cost. const missing = offset + 8 + numBytes - buf.length; let shortened = ''; - if (dataType === MI_COMPRESSED) { + const isCompressed = dataType === MI_COMPRESSED; + const extent = 8 + (isCompressed ? numBytes : align8(numBytes)); + const length = Math.min(extent, buf.length - offset); + const record = { + offset, + length, + bytes: buf.subarray(offset, offset + length), + compressed: isCompressed, + name: null, + anonymous: false, + status: 'read', + variable: null, + }; + records.push(record); + if (length < extent) { + unframe(offset, `the record at byte ${offset} needs ${extent} bytes and the file holds ${length}`); + } + else if (!isCompressed && numBytes % 8 !== 0) { + unframe(offset, `the plain record at byte ${offset} declares ${numBytes} bytes, which is not a whole ` + + 'number of 8-byte words'); + } + else if ((dataType >>> 16) !== 0 && (dataType & 0xFFFF) !== 0) { + // Both halves of the type word set: a small data element's tag, the form a + // short sub-element is written in. This reader steps over it as 8 + its second + // word, which is not how that form is laid out, and MATLAB is not known to step + // over one at all at the top of a file. + unframe(offset, `the record at byte ${offset} has a small data element's tag`); + } + // The variable read out of this record, whose record it is (MatNode binds the + // node made of it to the record by it). + const readAs = (variable) => { + record.variable = variable; + record.name = variable._anonymous ? '' : variable.name; + record.anonymous = !!variable._anonymous; + }; + if (isCompressed) { const compressed = buf.slice(offset + 8, offset + 8 + numBytes); let pako; try { @@ -1357,7 +1412,7 @@ export function parseMat(arrayBuffer) { // one unreadable record is one variable, not the file. A record that would // inflate past the ceiling for one record (MAT_RECORD_INFLATE_CEILING) is // unreadable the same way, and is never read cut to the ceiling. - warnings.push({ + dropped(record, { code: 'part-unreadable', message: err instanceof InflateCeilingError ? `A compressed record at byte ${offset} inflates to more than the ${err.ceiling}-byte ceiling ` @@ -1378,7 +1433,7 @@ export function parseMat(arrayBuffer) { const innerType = tagged ? deView.getUint32(0, true) : 0; const innerBytes = tagged ? deView.getUint32(4, true) : 0; if (!tagged) { - warnings.push({ + dropped(record, { code: 'part-unreadable', message: `A compressed record at byte ${offset} inflates to ${deView.byteLength} bytes, fewer than the 8 ` + "of a data element's tag, so the variable it holds was not read.", @@ -1393,6 +1448,7 @@ export function parseMat(arrayBuffer) { else { variables.push({ name: '', className: '', dimensions: [], isComplex: false, isLogical: false, value: null, fields: null, _rawBytes: new Uint8Array(pako.buffer, pako.byteOffset, pako.byteLength), _anonymous: true }); } + readAs(variables[variables.length - 1]); shortened = nameFor(variables[variables.length - 1]); // The record's warning below, one level in. The matrix's own tag in the // payload may claim more bytes than the payload holds, as a record may claim @@ -1415,7 +1471,7 @@ export function parseMat(arrayBuffer) { } } else { - warnings.push({ + dropped(record, { code: 'part-unreadable', message: `A compressed record at byte ${offset} holds a data element of type ` + `${innerType} where a variable has to be a matrix, so it was not read.`, @@ -1431,12 +1487,13 @@ export function parseMat(arrayBuffer) { else { variables.push({ name: '', className: '', dimensions: [], isComplex: false, isLogical: false, value: null, fields: null, _rawBytes: buf.slice(offset, offset + 8 + numBytes), _anonymous: true }); } + readAs(variables[variables.length - 1]); shortened = nameFor(variables[variables.length - 1]); } else { // Only miCOMPRESSED and miMATRIX carry a variable at this level. Anything // else was skipped, and a whole variable's worth of file went with it. - warnings.push({ + dropped(record, { code: 'part-unreadable', message: `A data element of type ${dataType} at byte ${offset} is not a variable, ` + 'so it was not read.', @@ -1462,7 +1519,25 @@ export function parseMat(arrayBuffer) { for (const variable of variables) { collectUndecoded(variable, variable.name || '', warnings, readShort); } - return { header, variables, warnings }; + return { + header, + variables, + warnings, + headerBytes: buf.subarray(0, 128), + subsystemOffset: subsystemOffsetOf(buf, view), + records, + framed: unframed === null, + unframed, + }; +} +// Header bytes 116-123 as a number: a little-endian uint64, or 0 when they are 8 spaces, +// which MATLAB reads as no subsystem as it does 8 zero bytes. An offset past 2^53 is +// past any file this reads, and is kept as the nearest double, which no record starts at. +function subsystemOffsetOf(buf, view) { + if (buf.subarray(116, 124).every((b) => b === 0x20)) { + return 0; + } + return Number(view.getBigUint64(116, true)); } /** * What this reader says of an array holding fewer elements than it declares, a struct diff --git a/dist/datamodel/parser/MatParser.js.map b/dist/datamodel/parser/MatParser.js.map index c59548d3..97502791 100644 --- a/dist/datamodel/parser/MatParser.js.map +++ b/dist/datamodel/parser/MatParser.js.map @@ -1 +1 @@ -{"version":3,"file":"MatParser.js","sourceRoot":"","sources":["../../../src/datamodel/parser/MatParser.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"MatParser.js","sourceRoot":"","sources":["../../../src/datamodel/parser/MatParser.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts index 4363ae4a..cc6b0d94 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -36,6 +36,7 @@ export type { ProjectPage, ProjectPageRun, ProjectPageShortcut, ProjectPageLabel export type { ParsedSlx, BlockParamUsage } from './datamodel/parser/SlxParser.js'; export type { ParsedMdl } from './datamodel/parser/MdlParser.js'; export type { ParsedMat, MatVariable } from './datamodel/parser/MatParser.js'; +export type { MatRecord } from './datamodel/parser/MatParser.js'; export type { SparseData } from './datamodel/parser/SparseData.js'; export type { ParseWarning, ParseWarningCode } from './datamodel/parser/ParseWarning.js'; export { ingest } from './core/ingest.js'; diff --git a/dist/index.d.ts.map b/dist/index.d.ts.map index b4e609a1..830198b8 100644 --- a/dist/index.d.ts.map +++ b/dist/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/index.js.map b/dist/index.js.map index 24958c9b..ffd5cc79 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/datamodel/node/container/MatNode.ts b/src/datamodel/node/container/MatNode.ts index 56f9bb2a..b3310736 100644 --- a/src/datamodel/node/container/MatNode.ts +++ b/src/datamodel/node/container/MatNode.ts @@ -10,20 +10,70 @@ import type { MatVariable } from '../data/MatlabVariableNode.js'; import type { ParseWarning } from '../../parser/ParseWarning.js'; import { reasonOf } from '../../parser/ParseWarning.js'; import { functionHandleOf } from '../../parser/MatParser.js'; +import type { MatRecord, ParsedMat } from '../../parser/MatParser.js'; import PropName from '../../prop/PropName.js'; import { MAT_NODE_CEILING } from '../../display/DisplayConvention.js'; import { buildUnderCeiling, buildUncut, chargeNodes } from '../data/matNodeCeiling.js'; +// What MatNode.fromParsed builds a tree from: a parse of this package's (ParsedMat), or a +// host's, whose parse may be an older one's, without the records a save splices. +export type MatParse = Pick & + Partial>; + export default class MatNode extends ContainerNode { header: string; dirty: boolean; _anonymousElements: MatVariable[]; + // The file as a save splices it (ParsedMat's fields of the same names): its header's 128 + // bytes, every record in it, the subsystem's offset, and whether the records are the file. + // + // `records` is null, and so is `headerBytes`, when this tree was not built from records + // a save can trust: a host's parse that carries none (an older package's, handed to + // addMatSourceParsed), one whose records are not byte views, or one whose variables are + // not each the variable of one record. No save of such a tree is safe, and a writer + // that finds `records` null refuses it, rather than building one out of the variables + // alone, which loses every record the reader did not read. + headerBytes: Uint8Array | null; + records: MatRecord[] | null; + subsystemOffset: number; + framed: boolean; + unframed: { at: number; reason: string } | null; + // Which node each record became, and the other way round (nodeOf, recordOf). A node is + // the same object for as long as it is in the tree: an edit changes it in place, a + // delete takes it out (its `parent` is then no longer this), and its undo puts the same + // node back. So a record's node, in the tree or not, is what became of the record. + _recordNodes: Map; + _nodeRecords: Map; constructor(name: string) { super(name, null); this.header = ''; this.dirty = false; this._anonymousElements = []; + this.headerBytes = null; + this.records = null; + this.subsystemOffset = 0; + this.framed = false; + this.unframed = null; + this._recordNodes = new Map(); + this._nodeRecords = new Map(); + } + + /** + * The record `node` was read from, or null for a node no record became: a variable added + * since the file was read, or any node of a tree with no records (`records` null). + */ + recordOf(node: BaseNode): MatRecord | null { + return this._nodeRecords.get(node) ?? null; + } + + /** + * The node `record` became, whether or not it is still in the tree (a deleted one's + * `parent` is not this), or null for a record that became no node: the subsystem or + * another unnamed element (`_anonymousElements`), and a record the reader dropped. + */ + nodeOf(record: MatRecord): BaseNode | null { + return this._recordNodes.get(record) ?? null; } get displayName(): string { @@ -146,13 +196,15 @@ export default class MatNode extends ContainerNode { // containers have no rows and names the first ('part-not-expanded'). A parse handed over with // no warnings array (an older host's) is given one for it, which is the array addMatSource // and addMatSourceParsed pass on: both read it after this returns. - static fromParsed( - parsed: { header: string; variables: MatVariable[]; warnings?: ParseWarning[] }, - filename: string, - options: { nodeCeiling?: number } = {}, - ): MatNode { + // + // Each node built of a record is bound to it (recordOf, nodeOf), whatever node it is: a + // plain variable, an MCOS object's typed node, a function handle, one shown as not + // decoded. A parse with no records, or whose records do not cover its variables one for + // one, binds none and keeps none (`records` null). + static fromParsed(parsed: MatParse, filename: string, options: { nodeCeiling?: number } = {}): MatNode { const node = new MatNode(filename); node.header = parsed.header; + const records = heldRecords(parsed); // A .mat file keeps the MCOS blob in an anonymous trailing element. Every opaque in // the file, nested or not, comes back carrying its own decode, and what the decoder @@ -161,29 +213,61 @@ export default class MatNode extends ContainerNode { attachMcosDecoded(anonElement?._rawBytes, parsed.variables, parsed.warnings); const ceiling = options.nodeCeiling ?? MAT_NODE_CEILING; - const { cut, firstCut } = buildUnderCeiling(ceiling, () => MatNode._addVariables(node, parsed)); + const recordOf = records ? new Map(records.filter((r) => r.variable).map((r) => [r.variable!, r])) : null; + const { cut, firstCut } = buildUnderCeiling(ceiling, () => + MatNode._addVariables(node, parsed, recordOf), + ); if (cut > 0 && firstCut) { const warnings = parsed.warnings ?? (parsed.warnings = []); warnings.push(notExpandedWarning(firstCut.matlabPath, cut, ceiling)); } + if (records && bindsEveryRecord(node, records, parsed.variables)) { + node.headerBytes = parsed.headerBytes!; + node.records = records; + node.subsystemOffset = parsed.subsystemOffset ?? 0; + node.framed = parsed.framed === true; + node.unframed = parsed.unframed ?? null; + } else { + node._recordNodes.clear(); + node._nodeRecords.clear(); + } return node; } + _bindRecord(child: BaseNode, record: MatRecord | undefined): void { + if (record) { + this._recordNodes.set(record, child); + this._nodeRecords.set(child, record); + } + } + // Every variable as a row of `node`, in the file's order, under the ceiling fromParsed arms: // all of them counted first, and none refused (matNodeCeiling.chargeNodes), so that the rows // under them are what is left, and a tree is never more nodes than the ceiling or the // variables, whichever is more. - static _addVariables(node: MatNode, parsed: { variables: MatVariable[]; warnings?: ParseWarning[] }): void { + // + // `recordOf` is each variable's record, by identity (MatRecord.variable), and every node + // made of a variable is bound to it here, the one place all four kinds are made. + static _addVariables( + node: MatNode, + parsed: { variables: MatVariable[]; warnings?: ParseWarning[] }, + recordOf: ReadonlyMap | null = null, + ): void { chargeNodes(parsed.variables.filter((v) => !v._anonymous).length); for (const variable of parsed.variables) { if ((variable as unknown as { _anonymous?: boolean })._anonymous) { node._anonymousElements.push(variable); continue; } + const record = recordOf?.get(variable); + const add = (child: BaseNode) => { + node.addChild(child); + node._bindRecord(child, record); + }; if (variable.isOpaque) { const mcosNode = buildUncut(() => modelOpaqueMcosVariable(variable, mcosDecodedFor(variable), node, parsed.warnings)); if (mcosNode) { - node.addChild(mcosNode); + add(mcosNode); continue; } } @@ -194,14 +278,43 @@ export default class MatNode extends ContainerNode { const handle = functionHandleOf(variable); if (handle) { const value = handle.text === null ? 'Matrix(' + variable.dimensions.join(',') + ')' : handle.text; - node.addChild(MatlabVariableNode.parse({ _type: 'function_handle', _value: value }, variable.name, node)); + add(MatlabVariableNode.parse({ _type: 'function_handle', _value: value }, variable.name, node)); continue; } - node.addChild(variableNodeOf(variable, node, parsed.warnings)); + add(variableNodeOf(variable, node, parsed.warnings)); } } } +// The records of `parsed` a save can splice, or null: none for a host's parse that carries +// none, and none for one whose header or records are not byte views as long as they say, +// which no reader of this package hands over. Views are told by ArrayBuffer.isView, which +// answers for one made in another realm (a worker's, structured-cloned here) as well. +function heldRecords(parsed: MatParse): MatRecord[] | null { + const { headerBytes, records } = parsed; + if (!Array.isArray(records) || !ArrayBuffer.isView(headerBytes) || headerBytes.byteLength !== 128) { + return null; + } + const whole = records.every((r) => r && ArrayBuffer.isView(r.bytes) && r.bytes.byteLength === r.length); + return whole ? records : null; +} + +// Whether the tree `node` was built as is bound one for one: every variable the variable of +// exactly one record, and every node bound to the record of the variable it was made of (an +// unnamed element is made into no node, and is in `_anonymousElements`). A parse whose +// records were made apart from its variables, or whose variables a host changed since, +// binds short, and its records are not this tree's to splice. +function bindsEveryRecord(node: MatNode, records: MatRecord[], variables: MatVariable[]): boolean { + const withVariable = records.filter((r) => r.variable); + const ofRecords = new Set(withVariable.map((r) => r.variable)); + return ( + ofRecords.size === withVariable.length && + ofRecords.size === variables.length && + variables.every((v) => ofRecords.has(v)) && + node._nodeRecords.size === node.children.length + ); +} + // The file's one word about its node ceiling, which is not a loss, as `duplicate-id` is not // (ParseWarning): every value in it is read, and copied whole. `part` is the first container // built without its rows, in the order the tree is built, and the count is of the others. diff --git a/src/datamodel/parser/MatParser.ts b/src/datamodel/parser/MatParser.ts index 62085225..706a68c4 100644 --- a/src/datamodel/parser/MatParser.ts +++ b/src/datamodel/parser/MatParser.ts @@ -117,6 +117,62 @@ export interface ParsedMat { // back without it — see test/parseWarnings.test.ts, which pins the near-misses as // firmly as the warnings. warnings: ParseWarning[]; + // What a save of this file splices (MatNode keeps them all): the header's 128 bytes, + // every record in it, and whether those records are the file, byte for byte. + // + // A view of the input, as every record's bytes are, so nothing is copied: what a save + // writes for a variable nobody edited is the bytes it was read from, and for a + // compressed one that is the only way to write it byte-identical. MATLAB deflates in + // a way a recompression does not reproduce: inflated and deflated again by fflate at + // level 6, 18 of the 78 records of test/parity/artifacts/mat/cases.mat came back as + // they were. + headerBytes: Uint8Array; + // Header bytes 116-123: the absolute offset of the subsystem record's tag, which MATLAB + // trusts without a scan (measured against MATLAB R2027a: a stale offset fails the + // whole load). 0 when the file has no subsystem, which 8 spaces also mean. + subsystemOffset: number; + // Every top-level record, in file order, the ones this reader read and the ones it + // could not or would not (`status`). A save that writes only the variables it holds + // drops the rest without a word, and a record that will not inflate here may still + // be one MATLAB reads. + records: MatRecord[]; + // Whether the records tile [128, end of file) exactly as MATLAB frames them: a + // compressed record is its 8-byte tag and payload, with no padding after it, and a + // plain one is padded out to an 8-byte boundary (MatRecord.length). False for a + // record the file cuts short, for bytes after the last record, and for a stop at a + // zero tag with bytes left; `unframed` says where and why. Only bytes that are + // framed can be spliced: past the first byte that is not, the reader and MATLAB may + // not agree on what the records are. + framed: boolean; + unframed: { at: number; reason: string } | null; +} + +/** + * One top-level record of a MAT-file, in the file's own bytes: a variable, the subsystem + * that holds the file's objects, or a record this reader did not read. + */ +export interface MatRecord { + // Where its tag starts, and how many bytes it covers: its tag and payload, and for a + // plain record its padding to the next 8-byte boundary, as far as the file holds them. + offset: number; + length: number; + // Those bytes, a view of the input. + bytes: Uint8Array; + // An miCOMPRESSED record, whose payload is a zlib stream of one miMATRIX. + compressed: boolean; + // The element's name, '' for an unnamed one (`anonymous`), and null when no element + // could be read out of the record. + name: string | null; + // An element with no name: the subsystem, which MATLAB writes unnamed and last, or + // one this reader read too little of to find its name. + anonymous: boolean; + // 'read' when the reader made a variable of it (`variable`); 'dropped' when it did + // not, with the warning's text for why. + status: 'read' | 'dropped'; + reason?: string; + // The variable the reader made of it, the one in `ParsedMat.variables`, by identity: + // what MatNode looks a node's record up by. Null for a dropped record. + variable: MatVariable | null; } interface SubElement { @@ -1418,6 +1474,22 @@ export function parseMat(arrayBuffer: ArrayBuffer): ParsedMat { const readShort = new Set(); let offset = 128; + // The file's records as a save splices them (ParsedMat.records), and the first place + // they stop tiling the file, if they do. Kept beside the walk rather than by it: the + // walk steps 8 + nbytes past every record, as it always has, and that is MATLAB's step + // for every record but a plain one whose nbytes is not a multiple of 8, which MATLAB + // pads and the walk does not. No file MATLAB wrote under test/ holds one, an miMATRIX's + // nbytes counting its sub-elements' padding, so a file that does is left unframed + // rather than walked a second way. + const records: MatRecord[] = []; + let unframed: { at: number; reason: string } | null = null; + const unframe = (at: number, reason: string) => { unframed ??= { at, reason }; }; + const dropped = (record: MatRecord, warning: ParseWarning) => { + record.status = 'dropped'; + record.reason = warning.message; + warnings.push(warning); + }; + // The name to blame a short record on — empty for the unnamed element every MCOS // file carries, which has no name to give. const nameFor = (variable: MatVariable) => (variable._anonymous ? '' : variable.name); @@ -1434,14 +1506,21 @@ export function parseMat(arrayBuffer: ArrayBuffer): ParsedMat { message: `The file ends with ${buf.length - offset} byte(s) where a record header needs 8, ` + 'so anything stored after the last variable read was not read.', }); + unframe(offset, `the file ends ${buf.length - offset} byte(s) into a record's tag`); break; } const dataType = view.getUint32(offset, true); const numBytes = view.getUint32(offset + 4, true); // The format's own end-of-variables marker. NOT a warning: a file that ends - // where it says it ends has been read completely. - if (dataType === 0 && numBytes === 0) { break; } + // where it says it ends has been read completely. Not a record either, and the + // file is not framed: measured against MATLAB R2027a, a file whose last variable is + // followed by 8 zero bytes fails to load, as one followed by 3 or 100 does. + if (dataType === 0 && numBytes === 0) { + unframe(offset, `a zero tag at byte ${offset} is no record, and it and the ${buf.length - offset - 8} byte(s) ` + + 'after it are not read'); + break; + } // A record may declare more bytes than the file holds. Everything below clamps // rather than throwing (see readSubelement), so the variable still opens — @@ -1451,7 +1530,41 @@ export function parseMat(arrayBuffer: ArrayBuffer): ParsedMat { const missing = offset + 8 + numBytes - buf.length; let shortened = ''; - if (dataType === MI_COMPRESSED) { + const isCompressed = dataType === MI_COMPRESSED; + const extent = 8 + (isCompressed ? numBytes : align8(numBytes)); + const length = Math.min(extent, buf.length - offset); + const record: MatRecord = { + offset, + length, + bytes: buf.subarray(offset, offset + length), + compressed: isCompressed, + name: null, + anonymous: false, + status: 'read', + variable: null, + }; + records.push(record); + if (length < extent) { + unframe(offset, `the record at byte ${offset} needs ${extent} bytes and the file holds ${length}`); + } else if (!isCompressed && numBytes % 8 !== 0) { + unframe(offset, `the plain record at byte ${offset} declares ${numBytes} bytes, which is not a whole ` + + 'number of 8-byte words'); + } else if ((dataType >>> 16) !== 0 && (dataType & 0xFFFF) !== 0) { + // Both halves of the type word set: a small data element's tag, the form a + // short sub-element is written in. This reader steps over it as 8 + its second + // word, which is not how that form is laid out, and MATLAB is not known to step + // over one at all at the top of a file. + unframe(offset, `the record at byte ${offset} has a small data element's tag`); + } + // The variable read out of this record, whose record it is (MatNode binds the + // node made of it to the record by it). + const readAs = (variable: MatVariable) => { + record.variable = variable; + record.name = variable._anonymous ? '' : variable.name; + record.anonymous = !!variable._anonymous; + }; + + if (isCompressed) { const compressed = buf.slice(offset + 8, offset + 8 + numBytes); let pako: Uint8Array; try { @@ -1464,7 +1577,7 @@ export function parseMat(arrayBuffer: ArrayBuffer): ParsedMat { // one unreadable record is one variable, not the file. A record that would // inflate past the ceiling for one record (MAT_RECORD_INFLATE_CEILING) is // unreadable the same way, and is never read cut to the ceiling. - warnings.push({ + dropped(record, { code: 'part-unreadable', message: err instanceof InflateCeilingError ? `A compressed record at byte ${offset} inflates to more than the ${err.ceiling}-byte ceiling ` @@ -1485,7 +1598,7 @@ export function parseMat(arrayBuffer: ArrayBuffer): ParsedMat { const innerType = tagged ? deView.getUint32(0, true) : 0; const innerBytes = tagged ? deView.getUint32(4, true) : 0; if (!tagged) { - warnings.push({ + dropped(record, { code: 'part-unreadable', message: `A compressed record at byte ${offset} inflates to ${deView.byteLength} bytes, fewer than the 8 ` + "of a data element's tag, so the variable it holds was not read.", @@ -1498,6 +1611,7 @@ export function parseMat(arrayBuffer: ArrayBuffer): ParsedMat { } else { variables.push({ name: '', className: '', dimensions: [], isComplex: false, isLogical: false, value: null, fields: null, _rawBytes: new Uint8Array(pako.buffer, pako.byteOffset, pako.byteLength), _anonymous: true }); } + readAs(variables[variables.length - 1]); shortened = nameFor(variables[variables.length - 1]); // The record's warning below, one level in. The matrix's own tag in the // payload may claim more bytes than the payload holds, as a record may claim @@ -1519,7 +1633,7 @@ export function parseMat(arrayBuffer: ArrayBuffer): ParsedMat { warnings.push(short); } } else { - warnings.push({ + dropped(record, { code: 'part-unreadable', message: `A compressed record at byte ${offset} holds a data element of type ` + `${innerType} where a variable has to be a matrix, so it was not read.`, @@ -1533,11 +1647,12 @@ export function parseMat(arrayBuffer: ArrayBuffer): ParsedMat { } else { variables.push({ name: '', className: '', dimensions: [], isComplex: false, isLogical: false, value: null, fields: null, _rawBytes: buf.slice(offset, offset + 8 + numBytes), _anonymous: true }); } + readAs(variables[variables.length - 1]); shortened = nameFor(variables[variables.length - 1]); } else { // Only miCOMPRESSED and miMATRIX carry a variable at this level. Anything // else was skipped, and a whole variable's worth of file went with it. - warnings.push({ + dropped(record, { code: 'part-unreadable', message: `A data element of type ${dataType} at byte ${offset} is not a variable, ` + 'so it was not read.', @@ -1567,7 +1682,26 @@ export function parseMat(arrayBuffer: ArrayBuffer): ParsedMat { collectUndecoded(variable, variable.name || '', warnings, readShort); } - return { header, variables, warnings }; + return { + header, + variables, + warnings, + headerBytes: buf.subarray(0, 128), + subsystemOffset: subsystemOffsetOf(buf, view), + records, + framed: unframed === null, + unframed, + }; +} + +// Header bytes 116-123 as a number: a little-endian uint64, or 0 when they are 8 spaces, +// which MATLAB reads as no subsystem as it does 8 zero bytes. An offset past 2^53 is +// past any file this reads, and is kept as the nearest double, which no record starts at. +function subsystemOffsetOf(buf: Uint8Array, view: DataView): number { + if (buf.subarray(116, 124).every((b) => b === 0x20)) { + return 0; + } + return Number(view.getBigUint64(116, true)); } /** diff --git a/src/index.ts b/src/index.ts index ff294665..ef368959 100644 --- a/src/index.ts +++ b/src/index.ts @@ -148,6 +148,8 @@ export type { export type { ParsedSlx, BlockParamUsage } from './datamodel/parser/SlxParser.js'; export type { ParsedMdl } from './datamodel/parser/MdlParser.js'; export type { ParsedMat, MatVariable } from './datamodel/parser/MatParser.js'; +// One record of a MAT-file as ParsedMat.records holds it, and as MatNode keeps it for a save. +export type { MatRecord } from './datamodel/parser/MatParser.js'; // A sparse array's non-zeros, which is how MatVariable holds one (`sparse`): named for // the same reason, since a consumer reading a sparse variable reads this. export type { SparseData } from './datamodel/parser/SparseData.js'; diff --git a/test/matRecords.test.ts b/test/matRecords.test.ts new file mode 100644 index 00000000..734cfaab --- /dev/null +++ b/test/matRecords.test.ts @@ -0,0 +1,526 @@ +// Copyright 2026 The MathWorks, Inc. +// +// What a save of a `.mat` splices: the file's own header, every top-level record in it, +// and which node each record became (MatParser's ParsedMat.records, MatNode.recordOf and +// nodeOf). A save that writes an unedited variable as the bytes it was read from is only as +// good as those bytes, so the first sweep holds every Level-5 fixture to the strictest form +// of it: the header and the records, end to end, ARE the file, byte for byte. +// +// Then the files whose records do not tile the file as MATLAB frames them (`framed` false): +// each is built here out of a framed one, and each still opens as it did, since nothing in +// this channel changes what is shown. And then the binding: every node of the tree, of +// whatever kind (a plain variable, a typed MCOS node, a function handle, a value shown as +// not decoded), is bound to the record it was read from and to no other. + +import { describe, it, expect, afterEach } from 'vitest'; +import { readFileSync, readdirSync } from 'node:fs'; +import { join } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { zlibSync } from 'fflate'; +import { parseMat } from '../src/datamodel/parser/MatParser.js'; +import type { MatRecord, ParsedMat } from '../src/datamodel/parser/MatParser.js'; +import { setMatRecordInflateCeiling } from '../src/datamodel/parser/Inflate.js'; +import { createSession } from '../src/index.js'; +import { CLASS, MI, charVar, element, matFile, numericVar, u32le } from './tools/matBytes.js'; + +const TEST_ROOT = fileURLToPath(new URL('.', import.meta.url)); + +// Every `.mat` under test/, recursively, so a fixture added later is swept by default. +function matFilesUnder(dir: string): string[] { + const out: string[] = []; + for (const entry of readdirSync(dir, { withFileTypes: true })) { + const abs = join(dir, entry.name); + if (entry.isDirectory()) { + out.push(...matFilesUnder(abs)); + } else if (entry.isFile() && entry.name.endsWith('.mat')) { + out.push(abs); + } + } + return out.sort(); +} + +// The one file of the corpus the reader refuses: a `-v7.3` file is HDF5, not Level 5. +const REFUSED = new Map([['strings_v73.mat', 'MAT-file version 7.3 (HDF5) is not supported']]); + +const shown = (abs: string) => abs.slice(TEST_ROOT.length); +const basename = (abs: string) => abs.slice(abs.lastIndexOf('/') + 1); + +function arrayBufferOf(bytes: Uint8Array): ArrayBuffer { + return bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength) as ArrayBuffer; +} + +function concat(parts: Uint8Array[]): Uint8Array { + const out = new Uint8Array(parts.reduce((n, p) => n + p.byteLength, 0)); + let at = 0; + for (const p of parts) { + out.set(p, at); + at += p.byteLength; + } + return out; +} + +const sameBytes = (a: Uint8Array, b: Uint8Array) => a.byteLength === b.byteLength && a.every((x, i) => x === b[i]); + +const align8 = (n: number) => n + ((8 - (n % 8)) % 8); + +const scalar = (name: string, value: number) => numericVar({ name, cls: CLASS.DOUBLE, dimensions: [1, 1], real: [value] }); + +/** A top-level miCOMPRESSED record of `payload`: tag and zlib stream, unpadded, as MATLAB writes it. */ +const compressedRecord = (payload: Uint8Array) => { + const stream = zlibSync(payload); + return concat([u32le(MI.COMPRESSED), u32le(stream.length), stream]); +}; + +/** A MatNode opened from `bytes` through the session, as a host opens one. */ +function opened(bytes: ArrayBuffer, name = 'f.mat') { + const session = createSession(); + const root: any = session.addMatSource(name, bytes); + return { session, root, by: (n: string) => root.children.find((c: any) => c.name === n) }; +} + +const fixture = (rel: string) => arrayBufferOf(new Uint8Array(readFileSync(join(TEST_ROOT, rel)))); + +describe('every Level-5 fixture is its header and its records, byte for byte', () => { + const files = matFilesUnder(TEST_ROOT); + + it('sweeps the whole corpus', () => { + // Lower bounds, so that a mis-filtered list cannot pass the sweep below vacuously. + expect(files.length).toBeGreaterThanOrEqual(30); + expect(files.map(basename)).toEqual(expect.arrayContaining(['cases.mat', 'Param.mat', 'strings.mat', 'nested_handles.mat'])); + }); + + for (const file of files) { + const refusal = REFUSED.get(basename(file)); + if (refusal) { + it(`${shown(file)} is refused, and has no records to sweep`, () => { + expect(() => parseMat(fixture(shown(file)))).toThrow(refusal); + }); + continue; + } + + it(shown(file), () => { + const input = fixture(shown(file)); + const bytes = new Uint8Array(input); + const parsed = parseMat(input); + + expect([parsed.framed, parsed.unframed]).toEqual([true, null]); + expect(sameBytes(concat([parsed.headerBytes, ...parsed.records.map((r) => r.bytes)]), bytes)).toBe(true); + // Views of the input, not copies: a file's records cost nothing more to keep. + expect(parsed.headerBytes.buffer).toBe(input); + expect(parsed.records.every((r) => r.bytes.buffer === input)).toBe(true); + + // Each record framed as MATLAB frames it, one after another from byte 128. + const view = new DataView(input); + let at = 128; + for (const record of parsed.records) { + const type = view.getUint32(record.offset, true); + const nbytes = view.getUint32(record.offset + 4, true); + expect(record.offset).toBe(at); + expect(record.compressed).toBe(type === MI.COMPRESSED); + expect(record.length).toBe(record.compressed ? 8 + nbytes : 8 + align8(nbytes)); + expect(record.bytes.byteLength).toBe(record.length); + at += record.length; + } + expect(at).toBe(bytes.byteLength); + + // Every record read, each the record of one variable, in the file's order, and named + // as that variable is. + expect(parsed.records.map((r) => r.status)).toEqual(parsed.variables.map(() => 'read')); + expect(parsed.records.map((r) => r.variable)).toEqual(parsed.variables); + parsed.records.forEach((r, i) => expect(r.variable).toBe(parsed.variables[i])); + expect(parsed.records.map((r) => r.name)).toEqual(parsed.variables.map((v) => (v._anonymous ? '' : v.name))); + + // The subsystem is the one unnamed record, the last, and where the header says it is. + const unnamed = parsed.records.filter((r) => r.anonymous); + if (parsed.subsystemOffset === 0) { + expect(unnamed).toEqual([]); + } else { + expect(unnamed.map((r) => r.offset)).toEqual([parsed.subsystemOffset]); + expect(parsed.records[parsed.records.length - 1]).toBe(unnamed[0]); + } + }); + } + + it('holds files with a subsystem and without one, compressed and plain', () => { + const parsed = files.filter((f) => !REFUSED.has(basename(f))).map((f) => parseMat(fixture(shown(f)))); + expect(parsed.some((p) => p.subsystemOffset !== 0)).toBe(true); + expect(parsed.some((p) => p.subsystemOffset === 0 && p.records.length > 0)).toBe(true); + // nested_handles.mat and hexobj_values.mat are -v6: plain records, 8-byte aligned. + expect(parsed.some((p) => p.records.some((r) => !r.compressed))).toBe(true); + expect(parsed.some((p) => p.records.some((r) => r.compressed))).toBe(true); + }); + + for (const file of files.filter((f) => !REFUSED.has(basename(f)))) { + it(`${shown(file)}: every node opened is bound to its record, and to no other`, () => { + const { root } = opened(fixture(shown(file)), basename(file)); + const parsed = parseMat(fixture(shown(file))); + expect(root.framed).toBe(true); + expect(root.subsystemOffset).toBe(parsed.subsystemOffset); + expect(sameBytes(root.headerBytes, parsed.headerBytes)).toBe(true); + const records: MatRecord[] = root.records; + expect(records.map((r) => [r.offset, r.length, r.name])).toEqual(parsed.records.map((r) => [r.offset, r.length, r.name])); + + // A node per named record, in the file's order; none for the subsystem. + const named = records.filter((r) => !r.anonymous); + expect(root.children.length).toBe(named.length); + named.forEach((record, i) => { + const node = root.children[i]; + expect(root.recordOf(node)).toBe(record); + expect(root.nodeOf(record)).toBe(node); + expect(record.name).toBe(node.name); + }); + for (const record of records.filter((r) => r.anonymous)) { + expect(root.nodeOf(record)).toBeNull(); + } + }); + } +}); + +describe('a node of every kind is bound to its record', () => { + it('cases.mat: plain values, strings, and the typed nodes of Simulink objects', () => { + const { root, by } = opened(fixture('parity/artifacts/mat/cases.mat'), 'cases.mat'); + const kinds: [string, string, string][] = [ + ['kp', 'MatlabVariableNode', 'double'], + ['structNest', 'MatlabVariableNode', 'struct'], + ['cellNest', 'MatlabVariableNode', 'cell'], + ['strScalar', 'MatlabVariableNode', 'string'], + ['aParam', 'ParameterNode', 'Simulink.Parameter'], + ['aSignal', 'SignalNode', 'Simulink.Signal'], + ['aBus', 'BusNode', 'Simulink.Bus'], + ['objRow', 'ObjectNode', 'Simulink.Parameter'], + ]; + for (const [name, nodeClass, className] of kinds) { + const node = by(name); + expect([node.constructor.name, node.className], name).toEqual([nodeClass, className]); + const record = root.recordOf(node); + expect([record.name, record.status, record.compressed], name).toEqual([name, 'read', true]); + expect(root.nodeOf(record), name).toBe(node); + } + // A typed node holds no variable (MatNode.getVariables skips it), and is bound all the same. + expect(by('aParam')._var).toBeUndefined(); + expect(root.recordOf(by('aParam')).variable.isOpaque).toBe(true); + }); + + it('Param.mat: a Simulink.Parameter, and the subsystem bound to no node', () => { + const { root } = opened(fixture('fixtures/mcos/Param.mat'), 'Param.mat'); + const [param, subsystem] = root.records as MatRecord[]; + expect(root.children.map((c: any) => c.constructor.name)).toEqual(['ParameterNode']); + expect(root.recordOf(root.children[0])).toBe(param); + expect([subsystem.anonymous, subsystem.name, subsystem.offset, root.nodeOf(subsystem)]).toEqual([true, '', root.subsystemOffset, null]); + expect(root._anonymousElements.length).toBe(1); + expect(root._anonymousElements[0]).toBe(subsystem.variable); + }); + + it('dispcat_opaque.mat: function handles, built from a literal, are bound as well', () => { + const { root, by } = opened(fixture('fixtures/display/dispcat_opaque.mat'), 'dispcat_opaque.mat'); + for (const name of ['fh_sin', 'fh_anon', 'e_func_handle_none']) { + const node = by(name); + expect(node.className, name).toBe('function_handle'); + expect(root.recordOf(node).name).toBe(name); + expect(root.nodeOf(root.recordOf(node))).toBe(node); + } + }); + + it('strings.mat: every string array', () => { + const { root } = opened(fixture('fixtures/strings.mat'), 'strings.mat'); + expect(root.children.length).toBe(11); + for (const node of root.children) { + expect([node.className, root.recordOf(node).name]).toEqual(['string', node.name]); + } + }); + + it('a value shown as not decoded, its flags word overwritten with a class the reader does not model', () => { + const z = numericVar({ name: 'z', cls: CLASS.DOUBLE, dimensions: [1, 1], real: [3], imag: [4] }); + // Byte 16 of the matrix is its array-flags data: class 255, and the complex flag kept. + z[16] = 0xff; + const { root, by } = opened(matFile([scalar('a', 1), z])); + expect(by('z').displayValue).toContain('not decoded'); + expect(root.children.map((c: any) => root.recordOf(c).name)).toEqual(['a', 'z']); + expect(root.framed).toBe(true); + }); +}); + +describe('records that do not tile the file are not framed, and the file opens as it did', () => { + const a = scalar('a', 1); + const b = scalar('b', 2); + const base = new Uint8Array(matFile([a, b])); + + // How a file opens, as a host is shown it: each variable's name and value, and the warnings. + const shownAs = (bytes: ArrayBuffer) => { + const { root } = opened(bytes); + return { rows: root.children.map((c: any) => [c.name, c.displayValue]), warnings: parseMat(bytes).warnings }; + }; + + it('the synthesized base is framed: two plain records', () => { + const parsed = parseMat(arrayBufferOf(base)); + expect([parsed.framed, parsed.records.map((r) => [r.offset, r.compressed])]).toEqual([true, [[128, false], [128 + a.length, false]]]); + expect(shownAs(arrayBufferOf(base))).toEqual({ rows: [['a', '1'], ['b', '2']], warnings: [] }); + }); + + for (const zeros of [8, 16]) { + it(`${zeros} trailing zero bytes: a zero tag, which is no record`, () => { + const bytes = arrayBufferOf(concat([base, new Uint8Array(zeros)])); + const parsed = parseMat(bytes); + expect(parsed.framed).toBe(false); + expect(parsed.unframed!.at).toBe(base.length); + expect(parsed.records.length).toBe(2); + expect(shownAs(bytes)).toEqual(shownAs(arrayBufferOf(base))); + }); + } + + it('3 trailing bytes: the file ends inside a tag', () => { + const bytes = arrayBufferOf(concat([base, new Uint8Array([1, 2, 3])])); + const parsed = parseMat(bytes); + expect([parsed.framed, parsed.unframed!.at, parsed.records.length]).toEqual([false, base.length, 2]); + expect(shownAs(bytes).rows).toEqual([['a', '1'], ['b', '2']]); + expect(parsed.warnings.map((w) => w.message)).toEqual([ + 'The file ends with 3 byte(s) where a record header needs 8, so anything stored after the last variable read was not read.', + ]); + }); + + it('a truncated last record: its view holds what the file does', () => { + const cut = base.subarray(0, base.length - 5); + const parsed = parseMat(arrayBufferOf(cut)); + const last = parsed.records[1]; + expect([parsed.framed, parsed.unframed!.at]).toEqual([false, 128 + a.length]); + expect([last.length, last.bytes.byteLength, last.status, last.name]).toEqual([b.length - 5, b.length - 5, 'read', 'b']); + // The reader reads it short and says so, as it did. + expect(parsed.warnings.map((w) => w.part)).toEqual(['b']); + expect(shownAs(arrayBufferOf(cut)).rows.map((r: unknown[]) => r[0])).toEqual(['a', 'b']); + }); + + // A char 'abc' is an miUTF8 element of 3 bytes and 5 of padding, its last sub-element: a + // record whose nbytes leaves that padding out declares 5 bytes fewer than its matrix holds. + const c = charVar('c', 'abc', MI.UTF8); + const unpadded = (withPad: boolean) => + concat([u32le(MI.MATRIX), u32le(c.length - 8 - 5), c.subarray(8, withPad ? c.length : c.length - 5)]); + + it('a plain record missing its final padding', () => { + const bytes = arrayBufferOf(concat([new Uint8Array(matFile([a])), unpadded(false)])); + const parsed = parseMat(bytes); + expect([parsed.framed, parsed.unframed!.at]).toEqual([false, 128 + a.length]); + expect(parsed.unframed!.reason).toContain(`needs ${c.length} bytes and the file holds ${c.length - 5}`); + expect(shownAs(bytes)).toEqual({ rows: [['a', '1'], ['c', "'abc'"]], warnings: [] }); + }); + + it('a plain record whose nbytes is not a multiple of 8, even with its padding there', () => { + // The reader steps over it without the padding, and reads the next tag out of it. + const parsed = parseMat(arrayBufferOf(concat([new Uint8Array(matFile([a])), unpadded(true)]))); + expect([parsed.framed, parsed.unframed!.at]).toEqual([false, 128 + a.length]); + expect(parsed.unframed!.reason).toContain('not a whole number of 8-byte words'); + expect(parsed.records.map((r) => r.name)).toEqual(['a', 'c']); + }); + + it('zero padding after a compressed record', () => { + // MATLAB writes a compressed record unpadded, and fails a file padded after one + // (research R5); the reader steps 8 + nbytes, onto the padding. + let record = compressedRecord(scalar('a', 1)); + let value = 1; + while (record.length % 8 === 0) { + record = compressedRecord(scalar('a', ++value)); + } + const bytes = arrayBufferOf(concat([new Uint8Array(matFile([record])), new Uint8Array(8 - (record.length % 8))])); + const parsed = parseMat(bytes); + expect([parsed.framed, parsed.unframed!.at, parsed.records.length]).toEqual([false, 128 + record.length, 1]); + expect(shownAs(bytes).rows).toEqual([['a', String(value)]]); + }); + + it('a zero tag with a variable after it: the reader stops there, as it did', () => { + const bytes = arrayBufferOf(new Uint8Array(matFile([a, new Uint8Array(8), b]))); + const parsed = parseMat(bytes); + expect([parsed.framed, parsed.unframed!.at, parsed.records.map((r) => r.name)]).toEqual([false, 128 + a.length, ['a']]); + expect(shownAs(bytes)).toEqual({ rows: [['a', '1']], warnings: [] }); + }); + + it("a small data element's tag at the top of the file", () => { + // An int32 0 in the small form, whose payload word the reader takes for its nbytes. + const small = concat([u32le((4 << 16) | MI.INT32), u32le(0)]); + const bytes = arrayBufferOf(new Uint8Array(matFile([a, small, b]))); + const parsed = parseMat(bytes); + expect([parsed.framed, parsed.unframed!.at]).toEqual([false, 128 + a.length]); + expect(shownAs(bytes).rows).toEqual([['a', '1'], ['b', '2']]); + }); + + it('a header and nothing after it is framed, and holds no records', () => { + const parsed = parseMat(matFile([])); + expect([parsed.framed, parsed.records, parsed.subsystemOffset]).toEqual([true, [], 0]); + }); +}); + +describe('a record the reader drops is still a record', () => { + afterEach(() => setMatRecordInflateCeiling(undefined)); + + const a = scalar('a', 1); + const b = scalar('b', 2); + + // The file `[a, middle, b]`, the dropped middle record, and the one warning it gave. + function dropping(middle: Uint8Array) { + const input = matFile([a, middle, b]); + const parsed = parseMat(input); + expect(parsed.framed).toBe(true); + expect(sameBytes(concat([parsed.headerBytes, ...parsed.records.map((r) => r.bytes)]), new Uint8Array(input))).toBe(true); + const [, dropped] = parsed.records; + expect([dropped.offset, dropped.length, dropped.status, dropped.name, dropped.variable, dropped.anonymous]) + .toEqual([128 + a.length, middle.length, 'dropped', null, null, false]); + expect(parsed.warnings.map((w) => w.message)).toEqual([dropped.reason]); + // The variables around it open and are bound; it has no node. + const { root } = opened(input); + expect(root.children.map((n: any) => root.recordOf(n).name)).toEqual(['a', 'b']); + expect(root.nodeOf(root.records[1])).toBeNull(); + return dropped; + } + + it('one that does not inflate', () => { + const junk = new Uint8Array([0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88]); + const dropped = dropping(concat([u32le(MI.COMPRESSED), u32le(junk.length), junk])); + expect([dropped.compressed, dropped.reason]).toEqual([true, expect.stringContaining('could not be decompressed')]); + }); + + it('one that inflates past the ceiling for one record', () => { + setMatRecordInflateCeiling(1024); + const big = numericVar({ name: 'big', cls: CLASS.UINT8, dimensions: [4096, 1], real: new Array(4096).fill(0) }); + expect(dropping(compressedRecord(big)).reason).toContain('inflates to more than the 1024-byte ceiling'); + }); + + it('one that inflates to fewer bytes than a tag', () => { + expect(dropping(compressedRecord(new Uint8Array(4))).reason).toContain('fewer than the 8'); + }); + + it('one that inflates to an element that is not a matrix', () => { + expect(dropping(compressedRecord(element(MI.INT32, new Uint8Array(8)))).reason).toContain('where a variable has to be a matrix'); + }); + + it('a plain record of a type that is not a variable', () => { + const dropped = dropping(element(MI.INT32, new Uint8Array(8))); + expect([dropped.compressed, dropped.reason]).toEqual([false, expect.stringContaining('is not a variable')]); + }); +}); + +describe("the header's subsystem offset", () => { + const withOffset = (bytes: number[]) => { + const input = new Uint8Array(matFile([scalar('a', 1)])); + input.set(bytes, 116); + return parseMat(arrayBufferOf(input)).subsystemOffset; + }; + + it('is the little-endian uint64 in bytes 116-123', () => { + expect(withOffset([0x34, 0x12, 0, 0, 0, 0, 0, 0])).toBe(0x1234); + expect(withOffset([0, 0, 0, 0, 1, 0, 0, 0])).toBe(2 ** 32); + }); + + it('is 0 for 8 zero bytes, and for 8 spaces', () => { + expect(withOffset([0, 0, 0, 0, 0, 0, 0, 0])).toBe(0); + expect(withOffset(new Array(8).fill(0x20))).toBe(0); + }); +}); + +describe("a host's parse", () => { + const input = () => fixture('fixtures/mcos/object_props.mat'); + + function openedParsed(parsed: unknown) { + const session = createSession(); + return session.addMatSourceParsed('object_props.mat', parsed) as any; + } + + it('with no records, as an older package hands one over: no records, nothing bound, and the tree as before', () => { + const { header, variables, warnings } = parseMat(input()); + const root = openedParsed({ header, variables, warnings }); + expect([root.records, root.headerBytes, root.framed, root.subsystemOffset]).toEqual([null, null, false, 0]); + expect(root.children.map((c: any) => root.recordOf(c))).toEqual([null, null, null]); + expect(root.children.map((c: any) => c.name)).toEqual(opened(input()).root.children.map((c: any) => c.name)); + }); + + it('structured-cloned off a worker: each record is still its variable, and the nodes are bound', () => { + const root = openedParsed(structuredClone(parseMat(input()))); + expect([root.framed, root.records.length]).toEqual([true, 4]); + expect(root.children.map((c: any) => root.recordOf(c)?.name)).toEqual(root.children.map((c: any) => c.name)); + }); + + it('whose variables a host changed since: nothing bound', () => { + const parsed: ParsedMat = parseMat(input()); + const root = openedParsed({ ...parsed, variables: parsed.variables.slice(1) }); + expect(root.records).toBeNull(); + expect(root.children.map((c: any) => root.recordOf(c))).toEqual(root.children.map(() => null)); + }); + + it('whose records hold no bytes: nothing bound', () => { + const parsed: ParsedMat = parseMat(input()); + const root = openedParsed({ ...parsed, records: parsed.records.map((r) => ({ ...r, bytes: Array.from(r.bytes) })) }); + expect(root.records).toBeNull(); + }); +}); + +// What a save decides on, pinned here so that it is not changed from under the writer: the +// top-level node's status says whether anything under it was edited, and a node keeps its +// record through every edit, a delete and its undo. +describe('an edit and its record', () => { + const casesMat = () => { + const { session, root, by } = opened(fixture('parity/artifacts/mat/cases.mat'), 'cases.mat'); + const edit = (node: any, prop: string, value: string) => { + session.setActive(root, node); + return session.editProperty(node.id, prop, value); + }; + return { session, root, by, edit }; + }; + + const childEdits: [string, (by: (n: string) => any) => any][] = [ + ['a matrix element', (by) => by('mat2x3').children[0]], + ['a struct field', (by) => by('structScalar').children[0]], + ["a struct array element's field", (by) => by('struct1x3').children[0].children[0]], + ['a cell member', (by) => by('cellFlat').children[0]], + ]; + for (const [what, target] of childEdits) { + it(`${what}'s edit makes the variable it is in Modified`, () => { + const { by, edit } = casesMat(); + const node = target(by); + let top = node; + while (top.parent.parent) { + top = top.parent; + } + expect(top.status).toBe(''); + expect(edit(node, 'Value', '9')).toBe(true); + expect(top.status).toBe('Modified'); + }); + } + + it('an added field makes the struct Modified', () => { + const { session, root, by } = casesMat(); + const struct = by('structScalar'); + session.setActive(root, struct); + expect(session.addChildTo(struct.id)).not.toBeNull(); + expect(struct.status).toBe('Modified'); + }); + + it("an object's property edit makes its typed node Modified", () => { + const { by, edit } = casesMat(); + expect(edit(by('aParam'), 'Value', '[1 2 3]')).toBe(true); + expect(by('aParam').status).toBe('Modified'); + }); + + it('a rename shows on the node, and the record keeps the name the file holds', () => { + const { root, by, edit } = casesMat(); + const node = by('kp'); + expect(edit(node, 'Name', 'kp2')).toBe(true); + expect([node.name, node.status, root.recordOf(node).name]).toEqual(['kp2', 'Modified', 'kp']); + }); + + it('a deleted node is out of the tree and still its record\'s, and its undo puts that node back', () => { + const { session, root, by } = casesMat(); + const node = by('kp'); + const record = root.recordOf(node); + session.setActive(root, node); + expect(session.deleteNodeById(node.id)).toBe(true); + expect(node.parent).toBeNull(); + expect(root.nodeOf(record)).toBe(node); + session.undo(); + expect(node.parent).toBe(root); + expect(root.children[0]).toBe(node); + expect(root.recordOf(node)).toBe(record); + }); + + it('a variable added since the file was read has no record, and no status to say it is new', () => { + const { root } = casesMat(); + const { node } = root.execAddEntry(); + expect([root.recordOf(node), node.status]).toEqual([null, '']); + }); +}); From 7f6ed6e5c43891a67386456a02a5f0ae1b89c54c Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Tue, 20 Oct 2026 17:04:58 -0400 Subject: [PATCH 02/13] [wip] Check a MAT-file against the rules MATLAB loads it by A .mat save needs a judge of the bytes it writes, and parseMat is not one: it opens whatever it can. Of the 36 files in the new MATLAB-verdict corpus that MATLAB does not load as stored, parseMat opens all 36, and 32 of them without a warning. A file this package writes and reads back therefore proves only that the package agrees with itself. checkMatFile (src/datamodel/parser/MatFileCheck.ts) reads no value. It lists every place a file breaks a rule MATLAB applies at load, each a MatViolation { code, at, message, variable }: the header, records that do not tile the file, the zlib wrapper, the subsystem offset and its place last, unnamed and doubled names, char data types, sub-elements that do not fill their matrix, integer storage, and data sizes, at every depth and inside the subsystem's stream. It shares no reading code with MatParser, never throws, and stops with a budget note past 2^24 matrices or 1 GiB inflated. violationsAdded compares two lists by code and variable, which is what the save needs to refuse a file that is worse than the one it read. Neither is exported from the barrel yet. test/fixtures/mat-check holds 100 copies of files MATLAB R2027a wrote, most edited one byte range at a time, with MATLAB's verdict on each in verdicts.json. test/matFileCheck.test.ts asserts every file MATLAB fails, loads short or loads changed has a violation, and every file it loads has none, except four it flags on purpose (a name stored twice, zero bytes after the subsystem). Every Level-5 .mat already in the repo has none. The two sweeps that grade every fixture as a complete file (parseWarnings, matNodeCeiling) skip the new folder. --- dist/datamodel/parser/MatFileCheck.d.ts | 82 ++ dist/datamodel/parser/MatFileCheck.d.ts.map | 1 + dist/datamodel/parser/MatFileCheck.js | 1067 ++++++++++++++ dist/datamodel/parser/MatFileCheck.js.map | 1 + src/datamodel/parser/MatFileCheck.ts | 1226 +++++++++++++++++ .../added-variable-after-subsystem.mat | Bin 0 -> 1721 bytes .../added-variable-before-subsystem.mat | Bin 0 -> 1721 bytes .../mat-check/added-variable-no-subsystem.mat | Bin 0 -> 266 bytes .../mat-check/added-variable-stale-offset.mat | Bin 0 -> 1721 bytes test/fixtures/mat-check/char-ascii-int8.mat | Bin 0 -> 208 bytes test/fixtures/mat-check/char-ascii-uint16.mat | Bin 0 -> 200 bytes test/fixtures/mat-check/char-ascii-uint8.mat | Bin 0 -> 208 bytes test/fixtures/mat-check/char-ascii-utf16.mat | Bin 0 -> 200 bytes test/fixtures/mat-check/char-ascii-utf32.mat | Bin 0 -> 208 bytes test/fixtures/mat-check/char-ascii-utf8.mat | Bin 0 -> 200 bytes test/fixtures/mat-check/char-cjk-uint16.mat | Bin 0 -> 208 bytes test/fixtures/mat-check/char-cjk-utf16.mat | Bin 0 -> 208 bytes test/fixtures/mat-check/char-cjk-utf32.mat | Bin 0 -> 216 bytes test/fixtures/mat-check/char-cjk-utf8.mat | Bin 0 -> 216 bytes test/fixtures/mat-check/char-emoji-uint16.mat | Bin 0 -> 208 bytes test/fixtures/mat-check/char-emoji-utf16.mat | Bin 0 -> 208 bytes test/fixtures/mat-check/char-emoji-utf32.mat | Bin 0 -> 216 bytes test/fixtures/mat-check/char-emoji-utf8.mat | Bin 0 -> 208 bytes .../mat-check/char-every-encoding.mat | Bin 0 -> 1440 bytes test/fixtures/mat-check/char-latin1-int8.mat | Bin 0 -> 200 bytes .../fixtures/mat-check/char-latin1-uint16.mat | Bin 0 -> 216 bytes test/fixtures/mat-check/char-latin1-uint8.mat | Bin 0 -> 200 bytes test/fixtures/mat-check/char-latin1-utf16.mat | Bin 0 -> 216 bytes test/fixtures/mat-check/char-latin1-utf32.mat | Bin 0 -> 224 bytes test/fixtures/mat-check/char-latin1-utf8.mat | Bin 0 -> 208 bytes .../deleted-every-object-variable.mat | Bin 0 -> 1276 bytes .../mat-check/deleted-object-orphan.mat | Bin 0 -> 1549 bytes .../deleted-objects-and-subsystem.mat | Bin 0 -> 366 bytes .../mat-check/deleted-one-of-two-handles.mat | Bin 0 -> 565 bytes .../fixtures/mat-check/deleted-one-string.mat | Bin 0 -> 591 bytes .../mat-check/deleted-shared-handle-copy.mat | Bin 0 -> 512 bytes .../deleted-variable-offset-recomputed.mat | Bin 0 -> 1581 bytes ...ouble-integer-storage-types-compressed.mat | Bin 0 -> 456 bytes .../double-integer-storage-types.mat | Bin 0 -> 600 bytes .../mat-check/duplicate-name-earlier-copy.mat | Bin 0 -> 1187 bytes .../mat-check/duplicate-name-later-copy.mat | Bin 0 -> 1187 bytes .../mat-check/duplicate-object-names.mat | Bin 0 -> 675 bytes .../mat-check/final-pad-cut-size-fixed.mat | Bin 0 -> 1133 bytes test/fixtures/mat-check/final-pad-cut.mat | Bin 0 -> 1133 bytes .../mat-check/header-only-offset-spaces.mat | Bin 0 -> 128 bytes test/fixtures/mat-check/header-only.mat | Bin 0 -> 128 bytes .../mat-check/header-text-all-nul.mat | Bin 0 -> 1633 bytes .../header-text-no-matlab-prefix.mat | Bin 0 -> 1633 bytes .../mat-check/header-text-nul-padded.mat | Bin 0 -> 1633 bytes .../mat-check/header-text-other-writer.mat | Bin 0 -> 1633 bytes .../matlab-append-objects-replaced.mat | Bin 0 -> 957 bytes .../mat-check/matlab-append-onto-orphans.mat | Bin 0 -> 1595 bytes .../matlab-append-onto-uncompressed.mat | Bin 0 -> 2036 bytes .../matlab-append-replacing-variable.mat | Bin 0 -> 1978 bytes .../matlab-append-revives-hidden-variable.mat | Bin 0 -> 1767 bytes .../mat-check/matlab-append-v6-onto-v7.mat | Bin 0 -> 1479 bytes test/fixtures/mat-check/matlab-objects.mat | Bin 0 -> 1633 bytes test/fixtures/mat-check/matlab-one-double.mat | Bin 0 -> 178 bytes test/fixtures/mat-check/matlab-plain.mat | Bin 0 -> 1115 bytes .../mat-check/matlab-shared-handle.mat | Bin 0 -> 595 bytes test/fixtures/mat-check/matlab-strings.mat | Bin 0 -> 674 bytes .../fixtures/mat-check/matlab-two-handles.mat | Bin 0 -> 648 bytes test/fixtures/mat-check/name-63-chars.mat | Bin 0 -> 306 bytes test/fixtures/mat-check/name-70-chars.mat | Bin 0 -> 314 bytes test/fixtures/mat-check/name-empty.mat | Bin 0 -> 242 bytes test/fixtures/mat-check/name-keyword.mat | Bin 0 -> 250 bytes .../fixtures/mat-check/name-leading-digit.mat | Bin 0 -> 250 bytes .../mat-check/name-non-ascii-utf8.mat | Bin 0 -> 250 bytes test/fixtures/mat-check/name-with-space.mat | Bin 0 -> 258 bytes test/fixtures/mat-check/non-utf8-name.mat | Bin 0 -> 250 bytes .../objects-compressed-zero-padded.mat | Bin 0 -> 1672 bytes .../mat-check/objects-first-reordered.mat | Bin 0 -> 1633 bytes .../mat-check/objects-mixed-compression.mat | Bin 0 -> 1858 bytes .../mat-check/objects-plain-subsystem.mat | Bin 0 -> 5291 bytes .../mat-check/objects-plain-variables.mat | Bin 0 -> 1990 bytes .../mat-check/objects-uncompressed.mat | Bin 0 -> 5648 bytes .../mat-check/objects-zlib-level9.mat | Bin 0 -> 1622 bytes .../plain-compressed-zero-padded.mat | Bin 0 -> 1192 bytes .../plain-mixed-compression-unaligned.mat | Bin 0 -> 1384 bytes .../fixtures/mat-check/plain-uncompressed.mat | Bin 0 -> 1672 bytes test/fixtures/mat-check/plain-zlib-level0.mat | Bin 0 -> 1995 bytes test/fixtures/mat-check/plain-zlib-level1.mat | Bin 0 -> 1202 bytes test/fixtures/mat-check/plain-zlib-level9.mat | Bin 0 -> 1115 bytes .../mat-check/renamed-object-variable.mat | Bin 0 -> 1643 bytes test/fixtures/mat-check/renamed-parameter.mat | Bin 0 -> 1628 bytes .../mat-check/renamed-plain-variable.mat | Bin 0 -> 1640 bytes .../renamed-uncompressed-object-variable.mat | Bin 0 -> 709 bytes .../mat-check/reordered-variables.mat | Bin 0 -> 1633 bytes test/fixtures/mat-check/small-tags.mat | Bin 0 -> 184 bytes .../mat-check/spaces-subsystem-offset.mat | Bin 0 -> 1581 bytes .../mat-check/sparse-without-sparse-flag.mat | Bin 0 -> 240 bytes .../mat-check/stale-subsystem-offset.mat | Bin 0 -> 1581 bytes .../struct-field-name-length-too-small.mat | Bin 0 -> 320 bytes .../mat-check/struct-wide-field-names.mat | Bin 0 -> 1520 bytes test/fixtures/mat-check/subsystem-first.mat | Bin 0 -> 1633 bytes .../mat-check/subsystem-in-middle.mat | Bin 0 -> 1633 bytes .../subsystem-offset-at-first-variable.mat | Bin 0 -> 1581 bytes test/fixtures/mat-check/trailing-3-zeros.mat | Bin 0 -> 1118 bytes test/fixtures/mat-check/trailing-8-zeros.mat | Bin 0 -> 1123 bytes .../trailing-zeros-after-subsystem.mat | Bin 0 -> 1641 bytes .../uncompressed-trailing-8-zeros.mat | Bin 0 -> 1680 bytes .../mat-check/variable-after-subsystem.mat | Bin 0 -> 1633 bytes test/fixtures/mat-check/verdicts.json | 833 +++++++++++ test/fixtures/mat-check/version-0x0000.mat | Bin 0 -> 1633 bytes test/fixtures/mat-check/version-0x0200.mat | Bin 0 -> 1633 bytes .../mat-check/zero-subsystem-offset.mat | Bin 0 -> 1581 bytes test/matFileCheck.test.ts | 660 +++++++++ test/matNodeCeiling.test.ts | 8 +- test/parseWarnings.test.ts | 5 +- 109 files changed, 3880 insertions(+), 3 deletions(-) create mode 100644 dist/datamodel/parser/MatFileCheck.d.ts create mode 100644 dist/datamodel/parser/MatFileCheck.d.ts.map create mode 100644 dist/datamodel/parser/MatFileCheck.js create mode 100644 dist/datamodel/parser/MatFileCheck.js.map create mode 100644 src/datamodel/parser/MatFileCheck.ts create mode 100644 test/fixtures/mat-check/added-variable-after-subsystem.mat create mode 100644 test/fixtures/mat-check/added-variable-before-subsystem.mat create mode 100644 test/fixtures/mat-check/added-variable-no-subsystem.mat create mode 100644 test/fixtures/mat-check/added-variable-stale-offset.mat create mode 100644 test/fixtures/mat-check/char-ascii-int8.mat create mode 100644 test/fixtures/mat-check/char-ascii-uint16.mat create mode 100644 test/fixtures/mat-check/char-ascii-uint8.mat create mode 100644 test/fixtures/mat-check/char-ascii-utf16.mat create mode 100644 test/fixtures/mat-check/char-ascii-utf32.mat create mode 100644 test/fixtures/mat-check/char-ascii-utf8.mat create mode 100644 test/fixtures/mat-check/char-cjk-uint16.mat create mode 100644 test/fixtures/mat-check/char-cjk-utf16.mat create mode 100644 test/fixtures/mat-check/char-cjk-utf32.mat create mode 100644 test/fixtures/mat-check/char-cjk-utf8.mat create mode 100644 test/fixtures/mat-check/char-emoji-uint16.mat create mode 100644 test/fixtures/mat-check/char-emoji-utf16.mat create mode 100644 test/fixtures/mat-check/char-emoji-utf32.mat create mode 100644 test/fixtures/mat-check/char-emoji-utf8.mat create mode 100644 test/fixtures/mat-check/char-every-encoding.mat create mode 100644 test/fixtures/mat-check/char-latin1-int8.mat create mode 100644 test/fixtures/mat-check/char-latin1-uint16.mat create mode 100644 test/fixtures/mat-check/char-latin1-uint8.mat create mode 100644 test/fixtures/mat-check/char-latin1-utf16.mat create mode 100644 test/fixtures/mat-check/char-latin1-utf32.mat create mode 100644 test/fixtures/mat-check/char-latin1-utf8.mat create mode 100644 test/fixtures/mat-check/deleted-every-object-variable.mat create mode 100644 test/fixtures/mat-check/deleted-object-orphan.mat create mode 100644 test/fixtures/mat-check/deleted-objects-and-subsystem.mat create mode 100644 test/fixtures/mat-check/deleted-one-of-two-handles.mat create mode 100644 test/fixtures/mat-check/deleted-one-string.mat create mode 100644 test/fixtures/mat-check/deleted-shared-handle-copy.mat create mode 100644 test/fixtures/mat-check/deleted-variable-offset-recomputed.mat create mode 100644 test/fixtures/mat-check/double-integer-storage-types-compressed.mat create mode 100644 test/fixtures/mat-check/double-integer-storage-types.mat create mode 100644 test/fixtures/mat-check/duplicate-name-earlier-copy.mat create mode 100644 test/fixtures/mat-check/duplicate-name-later-copy.mat create mode 100644 test/fixtures/mat-check/duplicate-object-names.mat create mode 100644 test/fixtures/mat-check/final-pad-cut-size-fixed.mat create mode 100644 test/fixtures/mat-check/final-pad-cut.mat create mode 100644 test/fixtures/mat-check/header-only-offset-spaces.mat create mode 100644 test/fixtures/mat-check/header-only.mat create mode 100644 test/fixtures/mat-check/header-text-all-nul.mat create mode 100644 test/fixtures/mat-check/header-text-no-matlab-prefix.mat create mode 100644 test/fixtures/mat-check/header-text-nul-padded.mat create mode 100644 test/fixtures/mat-check/header-text-other-writer.mat create mode 100644 test/fixtures/mat-check/matlab-append-objects-replaced.mat create mode 100644 test/fixtures/mat-check/matlab-append-onto-orphans.mat create mode 100644 test/fixtures/mat-check/matlab-append-onto-uncompressed.mat create mode 100644 test/fixtures/mat-check/matlab-append-replacing-variable.mat create mode 100644 test/fixtures/mat-check/matlab-append-revives-hidden-variable.mat create mode 100644 test/fixtures/mat-check/matlab-append-v6-onto-v7.mat create mode 100644 test/fixtures/mat-check/matlab-objects.mat create mode 100644 test/fixtures/mat-check/matlab-one-double.mat create mode 100644 test/fixtures/mat-check/matlab-plain.mat create mode 100644 test/fixtures/mat-check/matlab-shared-handle.mat create mode 100644 test/fixtures/mat-check/matlab-strings.mat create mode 100644 test/fixtures/mat-check/matlab-two-handles.mat create mode 100644 test/fixtures/mat-check/name-63-chars.mat create mode 100644 test/fixtures/mat-check/name-70-chars.mat create mode 100644 test/fixtures/mat-check/name-empty.mat create mode 100644 test/fixtures/mat-check/name-keyword.mat create mode 100644 test/fixtures/mat-check/name-leading-digit.mat create mode 100644 test/fixtures/mat-check/name-non-ascii-utf8.mat create mode 100644 test/fixtures/mat-check/name-with-space.mat create mode 100644 test/fixtures/mat-check/non-utf8-name.mat create mode 100644 test/fixtures/mat-check/objects-compressed-zero-padded.mat create mode 100644 test/fixtures/mat-check/objects-first-reordered.mat create mode 100644 test/fixtures/mat-check/objects-mixed-compression.mat create mode 100644 test/fixtures/mat-check/objects-plain-subsystem.mat create mode 100644 test/fixtures/mat-check/objects-plain-variables.mat create mode 100644 test/fixtures/mat-check/objects-uncompressed.mat create mode 100644 test/fixtures/mat-check/objects-zlib-level9.mat create mode 100644 test/fixtures/mat-check/plain-compressed-zero-padded.mat create mode 100644 test/fixtures/mat-check/plain-mixed-compression-unaligned.mat create mode 100644 test/fixtures/mat-check/plain-uncompressed.mat create mode 100644 test/fixtures/mat-check/plain-zlib-level0.mat create mode 100644 test/fixtures/mat-check/plain-zlib-level1.mat create mode 100644 test/fixtures/mat-check/plain-zlib-level9.mat create mode 100644 test/fixtures/mat-check/renamed-object-variable.mat create mode 100644 test/fixtures/mat-check/renamed-parameter.mat create mode 100644 test/fixtures/mat-check/renamed-plain-variable.mat create mode 100644 test/fixtures/mat-check/renamed-uncompressed-object-variable.mat create mode 100644 test/fixtures/mat-check/reordered-variables.mat create mode 100644 test/fixtures/mat-check/small-tags.mat create mode 100644 test/fixtures/mat-check/spaces-subsystem-offset.mat create mode 100644 test/fixtures/mat-check/sparse-without-sparse-flag.mat create mode 100644 test/fixtures/mat-check/stale-subsystem-offset.mat create mode 100644 test/fixtures/mat-check/struct-field-name-length-too-small.mat create mode 100644 test/fixtures/mat-check/struct-wide-field-names.mat create mode 100644 test/fixtures/mat-check/subsystem-first.mat create mode 100644 test/fixtures/mat-check/subsystem-in-middle.mat create mode 100644 test/fixtures/mat-check/subsystem-offset-at-first-variable.mat create mode 100644 test/fixtures/mat-check/trailing-3-zeros.mat create mode 100644 test/fixtures/mat-check/trailing-8-zeros.mat create mode 100644 test/fixtures/mat-check/trailing-zeros-after-subsystem.mat create mode 100644 test/fixtures/mat-check/uncompressed-trailing-8-zeros.mat create mode 100644 test/fixtures/mat-check/variable-after-subsystem.mat create mode 100644 test/fixtures/mat-check/verdicts.json create mode 100644 test/fixtures/mat-check/version-0x0000.mat create mode 100644 test/fixtures/mat-check/version-0x0200.mat create mode 100644 test/fixtures/mat-check/zero-subsystem-offset.mat create mode 100644 test/matFileCheck.test.ts diff --git a/dist/datamodel/parser/MatFileCheck.d.ts b/dist/datamodel/parser/MatFileCheck.d.ts new file mode 100644 index 00000000..6e0b6e61 --- /dev/null +++ b/dist/datamodel/parser/MatFileCheck.d.ts @@ -0,0 +1,82 @@ +/** + * What a MatViolation is about. Each is one rule MATLAB applies at `load`: + * + * - `short-file`: fewer than the 128 bytes of a header; + * - `not-level5`: the version (bytes 124-125) or the endian mark (126-127) is not a Level-5 + * file's, or the two disagree; + * - `level4-lookalike`: a 16-bit half of bytes 0-3 is zero, so MATLAB reads the file as Level 4; + * - `big-endian`: an 'MI' file, noted and not checked further (this package does not read one); + * - `framing`: the records do not tile the file from byte 128 to its end: one is cut short, one + * is not a whole number of 8-byte words, or bytes follow or pad them; + * - `top-level-type`: a record that is neither miMATRIX nor miCOMPRESSED; + * - `empty-matrix`: a record holding an miMATRIX of 0 bytes; + * - `compressed-wrapper`: a compressed record that is not one zlib stream of one miMATRIX; + * - `subsystem-offset`: header bytes 116-123 do not point at the subsystem's record, or are 0 + * with a subsystem in the file; + * - `subsystem-not-last`: a record after the subsystem, which MATLAB silently leaves out; + * - `anonymous-record`: an unnamed record that is not the subsystem, where MATLAB stops listing; + * - `name`: a variable name that is not valid UTF-8, not an identifier, or a keyword (an empty + * one is an `anonymous-record`); + * - `duplicate-name`: two records of one name; + * - `char-type`: char data in a type MATLAB does not read as text, or reads wrong; + * - `utf8-count`: miUTF8 char data whose UTF-16 length is not the array's element count; + * - `nbytes`: a matrix its sub-elements do not fill exactly; + * - `int-storage`: a numeric array of a class other than double, stored in a type other than + * its class's own; + * - `element`: a sub-element MATLAB cannot read where it stands: array flags, dimensions or a + * name of the wrong type, an unknown class or data type, a small tag of more than 4 bytes, a + * container member that is not a matrix; + * - `data-size`: a data sub-element holding more or fewer elements than the dimensions say; + * - `budget`: the check stopped here, and nothing from here on was checked. + */ +export type MatViolationCode = 'short-file' | 'not-level5' | 'level4-lookalike' | 'big-endian' | 'framing' | 'top-level-type' | 'empty-matrix' | 'compressed-wrapper' | 'subsystem-offset' | 'subsystem-not-last' | 'anonymous-record' | 'name' | 'duplicate-name' | 'char-type' | 'utf8-count' | 'nbytes' | 'int-storage' | 'element' | 'data-size' | 'budget'; +/** One rule a MAT-file breaks, and where. */ +export interface MatViolation { + code: MatViolationCode; + /** + * The byte of the file it is at. Inside a compressed record that is the record's own tag, + * since the bytes at fault exist only inflated; the message gives their place in the + * inflated payload. For a header field (`subsystem-offset`) it is the field. + */ + at: number; + /** What is wrong, and what MATLAB does with it, in a sentence a user can be shown. */ + message: string; + /** The variable it is in, when its record has a name that could be read. */ + variable?: string; +} +/** How much one check may spend. Past either budget it stops with a `budget` note. */ +export interface MatCheckOptions { + /** Matrices walked, top-level and nested together. Defaults to MAT_CHECK_ELEMENT_BUDGET. */ + maxElements?: number; + /** Bytes inflated from compressed records, over the whole file. Defaults to MAT_CHECK_INFLATE_BUDGET. */ + maxInflatedBytes?: number; +} +/** + * How many matrices one check walks, at most: 2^24. A matrix costs the check a few tag reads, + * and 2^24 of them is a struct array of 1.6 million elements and ten fields each. + */ +export declare const MAT_CHECK_ELEMENT_BUDGET: number; +/** + * How many bytes one check inflates, at most, over every compressed record of the file: 1 GiB. + * The check inflates one record at a time and drops it, so this bounds time more than memory; + * the largest record in the corpus `parseMat` is measured against inflates to 114 MB. + */ +export declare const MAT_CHECK_INFLATE_BUDGET: number; +/** + * Check a Level-5 MAT-file against the rules MATLAB loads one by (see the top of this file), + * and list every place it breaks one, in file order. An empty list means MATLAB loads the + * file, every variable in it, as stored. Pure and synchronous, and it never throws: bytes that + * are not a MAT-file at all are a violation too. + */ +export declare function checkMatFile(bytes: Uint8Array, options?: MatCheckOptions): MatViolation[]; +/** + * The violations of `after` that `before` does not have: what a rewrite of a file added to it. + * + * Matched by code and variable, never by offset or message, which an edit anywhere before a + * record moves; and counted, so a third violation of one kind in one variable is added where + * the original had two. `renamed` maps a variable's name in `after` to its name in `before`. + * A `budget` note in `after` is always added: a check that did not finish proves nothing about + * what it did not reach, whatever the original's check reached. + */ +export declare function violationsAdded(before: readonly MatViolation[], after: readonly MatViolation[], renamed?: ReadonlyMap): MatViolation[]; +//# sourceMappingURL=MatFileCheck.d.ts.map \ No newline at end of file diff --git a/dist/datamodel/parser/MatFileCheck.d.ts.map b/dist/datamodel/parser/MatFileCheck.d.ts.map new file mode 100644 index 00000000..06f3cd0f --- /dev/null +++ b/dist/datamodel/parser/MatFileCheck.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"MatFileCheck.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/MatFileCheck.ts"],"names":[],"mappings":"AAuEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,MAAM,gBAAgB,GACxB,YAAY,GACZ,YAAY,GACZ,kBAAkB,GAClB,YAAY,GACZ,SAAS,GACT,gBAAgB,GAChB,cAAc,GACd,oBAAoB,GACpB,kBAAkB,GAClB,oBAAoB,GACpB,kBAAkB,GAClB,MAAM,GACN,gBAAgB,GAChB,WAAW,GACX,YAAY,GACZ,QAAQ,GACR,aAAa,GACb,SAAS,GACT,WAAW,GACX,QAAQ,CAAC;AAEb,6CAA6C;AAC7C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,gBAAgB,CAAC;IACvB;;;;OAIG;IACH,EAAE,EAAE,MAAM,CAAC;IACX,sFAAsF;IACtF,OAAO,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,sFAAsF;AACtF,MAAM,WAAW,eAAe;IAC9B,4FAA4F;IAC5F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yGAAyG;IACzG,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;GAGG;AACH,eAAO,MAAM,wBAAwB,QAAU,CAAC;AAEhD;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,QAAU,CAAC;AAsLhD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,GAAE,eAAoB,GAAG,YAAY,EAAE,CAa7F;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,SAAS,YAAY,EAAE,EAC/B,KAAK,EAAE,SAAS,YAAY,EAAE,EAC9B,OAAO,GAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAa,GAC/C,YAAY,EAAE,CAkBhB"} \ No newline at end of file diff --git a/dist/datamodel/parser/MatFileCheck.js b/dist/datamodel/parser/MatFileCheck.js new file mode 100644 index 00000000..f49cf52b --- /dev/null +++ b/dist/datamodel/parser/MatFileCheck.js @@ -0,0 +1,1067 @@ +// src/datamodel/parser/MatFileCheck.ts +// Copyright 2026 The MathWorks, Inc. +// +// Whether MATLAB loads a Level-5 MAT-file, judged by the rules MATLAB loads one by, and not by +// this package's own reader. +// +// WHY A SECOND READER. `parseMat` is built to open whatever it can, which is right for a +// viewer and wrong for a judge. It clamps every declared length to the bytes present, takes a +// zero tag for the end of the variables, reads char data stored as miUTF32 or miUINT8, and +// lists a variable stored after the subsystem. MATLAB does none of that. Of the 36 files in the +// MATLAB-verdict corpus (test/fixtures/mat-check) that MATLAB does not load as stored, because +// the load fails or a variable comes back missing or changed, `parseMat` opens all 36, and 32 +// of them without a single warning (measured when this was written). So a `.mat` this package +// writes and then reads back proves only that the package agrees with itself. This module is +// the other judge: it reads no value, and it lists every place a file breaks a rule MATLAB +// applies at `load`, as a MatViolation. It shares no reading code with MatParser, so none of +// the reader's repairs can leak into a verdict. +// +// THE RULES. Each was measured against MATLAB R2027a (27.1 prerelease, maca64) with `S = +// load(f)` on copies of MATLAB-written files edited one byte range at a time +// (test/fixtures/mat-check/verdicts.json holds the files and MATLAB's verdict on each): +// +// * the header: bytes 124-125 are the version 0x0100 and 126-127 the endian mark 'IM' (0x0000 +// and 0x0200 fail, and 0x0200 makes MATLAB try HDF5); neither 16-bit half of bytes 0-3 is +// zero (a header of NULs fails: MATLAB takes the file for Level 4); +// * the records tile the file from byte 128 to its last byte. A plain record is its tag and +// its declared bytes, a multiple of 8 (one cut short, or missing its final pad, fails); a +// compressed one is its tag and exactly its zlib stream, with no padding after it (zero +// padding to 8 fails), and nothing follows the last record (3, 8 or 100 zero bytes fail); +// * a record is an miMATRIX, or an miCOMPRESSED whose RFC 1950 zlib stream inflates to one +// miMATRIX and nothing else (zlib levels 0, 1, 6 and 9 all load); +// * header bytes 116-123 are the offset of the subsystem's record (the objects' data), or 0 +// when there is none. MATLAB trusts the offset and never looks for the record: a stale, +// zeroed or space-filled one fails the whole load; +// * the subsystem is the last record and the only unnamed one. MATLAB stops listing variables +// at the first unnamed record, so a variable after it is silently missing from the load +// (the load succeeds, and `whos -file` still lists it); +// * a variable's name is a MATLAB identifier in valid UTF-8: '1abc' and 'café' fail `S = +// load(f)`, 'end' loads as 'end_', and a name that is not UTF-8 crashed MATLAB; +// * char data is miUTF8 holding as many UTF-16 units as the array's elements, or miUTF16, or +// miUINT16 below U+0100: miUTF32, miUINT8 and miINT8 fail, a surrogate in miUINT16 fails, +// and CJK in miUINT16 loads keeping only the low byte of each unit, with no warning; +// * every element is readable: one bad variable fails the whole-file load. +// +// Some rules were not probed, deliberately: what MATLAB writes is plain, and a file that breaks +// it is one no MATLAB was seen to write. Only a double is ever stored in a narrower type than +// its class (every other numeric class is stored in its own), every sub-element fills its +// matrix exactly, and every data sub-element holds as many elements as its dimensions say. +// They are checked as MATLAB writes them (`int-storage`, `nbytes`, `data-size`, `element`). +// +// WHERE IT IS STRICTER THAN MATLAB, on purpose, so the save path never writes a file that +// loads only by luck. Each is listed with its reason in test/matFileCheck.test.ts: a name +// stored twice (it loads, but `load f` keeps the last copy and `load f x` the first); bytes +// after the subsystem's record, which MATLAB's load never reads; a zlib stream whose Adler-32 +// trailer is not the record's last four bytes. +// +// WHAT IT IS FOR. The `.mat` save checks the file it writes, and refuses to return it if it has +// a violation the original did not. A violation is therefore said with the variable it is in, +// when that has a readable name, so two files can be compared by variable rather than by an +// offset an edit moved (violationsAdded). +// +// BOUNDED. A file's bytes say how much work reading them is, and a hostile one can say a lot: +// a few kilobytes of zlib inflate to gigabytes, and a cell can declare a billion elements. So +// the check spends a budget of inflated bytes and of matrices walked (MatCheckOptions), and +// stops when either runs out, with a `budget` note saying where. It never throws: whatever the +// bytes, the answer is a list. +import { InflateCeilingError, inflateZlib, MAT_RECORD_INFLATE_CEILING } from './Inflate.js'; +import { MAX_NESTING } from './MatParser.js'; +import { reasonOf } from './ParseWarning.js'; +/** + * How many matrices one check walks, at most: 2^24. A matrix costs the check a few tag reads, + * and 2^24 of them is a struct array of 1.6 million elements and ten fields each. + */ +export const MAT_CHECK_ELEMENT_BUDGET = 2 ** 24; +/** + * How many bytes one check inflates, at most, over every compressed record of the file: 1 GiB. + * The check inflates one record at a time and drops it, so this bounds time more than memory; + * the largest record in the corpus `parseMat` is measured against inflates to 114 MB. + */ +export const MAT_CHECK_INFLATE_BUDGET = 2 ** 30; +const MI_INT8 = 1; +const MI_UINT8 = 2; +const MI_INT16 = 3; +const MI_UINT16 = 4; +const MI_INT32 = 5; +const MI_UINT32 = 6; +const MI_SINGLE = 7; +const MI_DOUBLE = 9; +const MI_INT64 = 12; +const MI_UINT64 = 13; +const MI_MATRIX = 14; +const MI_COMPRESSED = 15; +const MI_UTF8 = 16; +const MI_UTF16 = 17; +const TYPE_NAMES = { + [MI_INT8]: 'miINT8', [MI_UINT8]: 'miUINT8', [MI_INT16]: 'miINT16', [MI_UINT16]: 'miUINT16', + [MI_INT32]: 'miINT32', [MI_UINT32]: 'miUINT32', [MI_SINGLE]: 'miSINGLE', [MI_DOUBLE]: 'miDOUBLE', + [MI_INT64]: 'miINT64', [MI_UINT64]: 'miUINT64', [MI_MATRIX]: 'miMATRIX', [MI_COMPRESSED]: 'miCOMPRESSED', + [MI_UTF8]: 'miUTF8', [MI_UTF16]: 'miUTF16', 18: 'miUTF32', +}; +/** The bytes one element of each numeric data type takes. */ +const WIDTH = { + [MI_INT8]: 1, [MI_UINT8]: 1, [MI_INT16]: 2, [MI_UINT16]: 2, [MI_INT32]: 4, [MI_UINT32]: 4, + [MI_SINGLE]: 4, [MI_DOUBLE]: 8, [MI_INT64]: 8, [MI_UINT64]: 8, +}; +const MX_CELL = 1; +const MX_STRUCT = 2; +const MX_OBJECT = 3; +const MX_CHAR = 4; +const MX_SPARSE = 5; +const MX_DOUBLE = 6; +const MX_SINGLE = 7; +const MX_UINT8 = 9; +const MX_FUNCTION = 16; +const MX_OPAQUE = 17; +const CLASS_NAMES = { + 1: 'cell', 2: 'struct', 3: 'object', 4: 'char', 5: 'sparse', 6: 'double', 7: 'single', + 8: 'int8', 9: 'uint8', 10: 'int16', 11: 'uint16', 12: 'int32', 13: 'uint32', 14: 'int64', + 15: 'uint64', 16: 'function_handle', 17: 'opaque', +}; +/** The one data type each numeric class but double is stored in. */ +const OWN_TYPE = { + 7: MI_SINGLE, 8: MI_INT8, 9: MI_UINT8, 10: MI_INT16, 11: MI_UINT16, 12: MI_INT32, + 13: MI_UINT32, 14: MI_INT64, 15: MI_UINT64, +}; +// The array flags' bits above the class byte. +const LOGICAL_BIT = 0x200; +const COMPLEX_BIT = 0x800; +const SPARSE_BIT = 0x1000; +// MATLAB's keywords (iskeyword), which a variable name may not be: the same list +// datamodel/matlabName.ts holds, restated because this folder imports nothing from there. +const KEYWORDS = new Set([ + 'break', 'case', 'catch', 'classdef', 'continue', 'else', 'elseif', 'end', 'for', 'function', + 'global', 'if', 'otherwise', 'parfor', 'persistent', 'return', 'spmd', 'switch', 'try', 'while', +]); +const IDENTIFIER = /^[A-Za-z][A-Za-z0-9_]*$/; +// Fatal, so bytes that are not UTF-8 are said to be, and keeping a BOM, so a name or a text +// that opens with one is not read as one without it. +const strictUtf8 = new TextDecoder('utf-8', { fatal: true, ignoreBOM: true }); +const looseUtf8 = new TextDecoder('utf-8', { ignoreBOM: true }); +// The MAT stream a subsystem's uint8 data opens with: the version 0x0100 and 'IM'. +const STREAM_MAGIC = [0x00, 0x01, 0x49, 0x4d]; +/** Thrown inside a check when a budget runs out, and turned into its `budget` note. */ +class OutOfBudget extends Error { + constructor(at, message) { + super(message); + this.at = at; + this.name = 'OutOfBudget'; + } +} +function fileSpace(view) { + return { view, fileAt: (o) => o, where: (o) => `Byte ${o}` }; +} +function payloadSpace(view, record) { + return { + view, + fileAt: () => record, + where: (o) => `Byte ${o} of the compressed record at byte ${record}, inflated,`, + }; +} +class Check { + constructor(options) { + this.out = []; + /** The record being checked, for a `budget` note on a throw nobody expected. */ + this.cursor = 128; + /** Whether the walk is inside the subsystem's stream, which belongs to no variable. */ + this.inSubsystem = false; + this.maxElements = options.maxElements ?? MAT_CHECK_ELEMENT_BUDGET; + this.maxInflated = options.maxInflatedBytes ?? MAT_CHECK_INFLATE_BUDGET; + this.elementsLeft = this.maxElements; + this.inflateLeft = this.maxInflated; + } + /** A violation of the file as a whole, or of one record seen from outside it. */ + file(code, at, message, variable) { + const v = { code, at, message }; + if (variable) + v.variable = variable; + this.out.push(v); + } + /** A violation inside a matrix, said with where it is and whose it is. */ + report(code, space, o, text) { + const whose = this.inSubsystem + ? ' (in the subsystem, the data of the objects in the file)' + : this.variable ? ` (in "${this.variable}")` : ''; + const v = { code, at: space.fileAt(o), message: `${space.where(o)}${whose}: ${text}.` }; + if (this.variable && !this.inSubsystem) + v.variable = this.variable; + this.out.push(v); + } + /** One more matrix walked, or the end of the check. */ + spend(space, o) { + if (--this.elementsLeft < 0) { + throw new OutOfBudget(space.fileAt(o), `more than the ${this.maxElements} matrices one check walks`); + } + } +} +/** + * Check a Level-5 MAT-file against the rules MATLAB loads one by (see the top of this file), + * and list every place it breaks one, in file order. An empty list means MATLAB loads the + * file, every variable in it, as stored. Pure and synchronous, and it never throws: bytes that + * are not a MAT-file at all are a violation too. + */ +export function checkMatFile(bytes, options = {}) { + const check = new Check(options); + try { + checkFile(check, bytes); + } + catch (err) { + // A budget run out, or, if this module has a defect, any other throw: either way the + // check did not finish, and that is said rather than thrown, at the record it was in. + const at = err instanceof OutOfBudget ? err.at : check.cursor; + const why = err instanceof OutOfBudget ? err.message : `an error in the check itself (${reasonOf(err)})`; + check.file('budget', at, `The check stopped at byte ${at}, at ${why}, so nothing from there on was checked.`); + } + // Stable, so the violations of one place keep the order they were found in. + return check.out.sort((a, b) => a.at - b.at); +} +/** + * The violations of `after` that `before` does not have: what a rewrite of a file added to it. + * + * Matched by code and variable, never by offset or message, which an edit anywhere before a + * record moves; and counted, so a third violation of one kind in one variable is added where + * the original had two. `renamed` maps a variable's name in `after` to its name in `before`. + * A `budget` note in `after` is always added: a check that did not finish proves nothing about + * what it did not reach, whatever the original's check reached. + */ +export function violationsAdded(before, after, renamed = new Map()) { + const key = (code, variable) => `${code}\u0000${variable ?? ''}`; + const held = new Map(); + for (const v of before) { + const k = key(v.code, v.variable); + held.set(k, (held.get(k) ?? 0) + 1); + } + const added = []; + for (const v of after) { + const k = key(v.code, v.variable === undefined ? undefined : renamed.get(v.variable) ?? v.variable); + const left = held.get(k) ?? 0; + if (v.code === 'budget' || left === 0) { + added.push(v); + } + else { + held.set(k, left - 1); + } + } + return added; +} +function checkFile(check, bytes) { + if (bytes.byteLength < 128) { + check.file('short-file', 0, `The file holds ${bytes.byteLength} bytes, fewer than the 128 of a MAT-file's header.`); + return; + } + if (!checkHeader(check, bytes)) { + return; + } + const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength); + const offset = subsystemOffset(view, bytes); + const records = walkRecords(check, view, bytes, offset); + checkPlacement(check, records, offset, bytes.byteLength); +} +/** Whether the rest of the file is a Level-5 one to check, having said what the header breaks. */ +function checkHeader(check, bytes) { + // MATLAB looks at the first four bytes before anything else, and a zero in either 16-bit + // half of them makes it read the file as Level 4: a header text that opens with NULs. + if ((bytes[0] | bytes[1]) === 0 || (bytes[2] | bytes[3]) === 0) { + check.file('level4-lookalike', 0, 'A 16-bit half of the header\'s first four bytes is zero, so MATLAB reads ' + + 'the file as a Level 4 MAT-file and fails the load. The header text must not open with NUL bytes.'); + } + const mark = String.fromCharCode(bytes[126], bytes[127]); + const version = `${hex2(bytes[124])} ${hex2(bytes[125])}`; + if (mark === 'MI' && bytes[124] === 0x01 && bytes[125] === 0x00) { + check.file('big-endian', 126, 'The file is big-endian (\'MI\'). MATLAB reads one, but this package does not, ' + + 'so nothing after the header was checked.'); + return false; + } + if (mark !== 'IM' && mark !== 'MI') { + check.file('not-level5', 126, `Header bytes 126-127 are ${hex2(bytes[126])} ${hex2(bytes[127])}, not the endian mark ` + + '\'IM\' of a Level-5 MAT-file, so MATLAB does not read it as one.'); + return false; + } + if (mark === 'IM' && !(bytes[124] === 0x00 && bytes[125] === 0x01)) { + check.file('not-level5', 124, bytes[124] === 0x00 && bytes[125] === 0x02 + ? 'Header bytes 124-125 are 00 02, the version 0x0200 of a -v7.3 (HDF5) file, which is not a Level-5 MAT-file.' + : `Header bytes 124-125 are ${version}, where a Level-5 MAT-file holds the version 0x0100 (bytes 00 01), ` + + 'so MATLAB fails the load.'); + return false; + } + if (mark === 'MI') { + check.file('not-level5', 124, `Header bytes 124-125 are ${version}, and a big-endian ('MI') file holds the version ` + + '0x0100 as bytes 01 00: the version and the endian mark disagree, so MATLAB fails the load.'); + return false; + } + return true; +} +function hex2(b) { + return b.toString(16).padStart(2, '0'); +} +/** Header bytes 116-123: the subsystem's offset, where eight spaces mean 0 as zeros do. */ +function subsystemOffset(view, bytes) { + if (bytes.subarray(116, 124).every((b) => b === 0x20)) { + return 0; + } + return view.getUint32(120, true) * 2 ** 32 + view.getUint32(116, true); +} +/** + * Every record from byte 128 to the end of the file, each checked, and what the placement + * rules need of each. The walk is MATLAB's: a record is its 8-byte tag and the bytes the tag + * declares, and the next one starts right after them, whatever the alignment. + */ +function walkRecords(check, view, bytes, offset) { + const records = []; + const file = fileSpace(view); + const length = bytes.byteLength; + let at = 128; + while (at < length) { + check.cursor = at; + check.variable = undefined; + if (bytes[at] === 0) { + // No record tag opens with a zero byte (a record's type is 14 or 15), so this is padding, + // or the bytes after the last record, or a tag of type 0. Said once, as what it is. + const zeros = zeroRun(bytes, at); + const last = records[records.length - 1]; + if (at + zeros === length && last !== undefined && last.at === offset && last.subsystem) { + // Measured: MATLAB loads a file with 8 zero bytes after its subsystem, because its + // load stops reading at the subsystem. They are no record all the same, and what + // MATLAB's own `save -append`, which reads past the subsystem, makes of them is not + // known, so they are said as the bytes that do not frame they are. + check.file('framing', at, `The file ends with ${zeros} zero byte(s) after the subsystem's record, which are no ` + + 'record: MATLAB\'s load does not read past the subsystem, but MATLAB writes nothing after it.'); + break; + } + if (at + zeros === length) { + const after = last === undefined ? 'its header' : 'its last record'; + check.file('framing', at, zeros < 8 + ? `The file ends with ${zeros} zero byte(s) after ${after}, fewer than a record's tag: ` + + 'MATLAB fails the load. Nothing may follow the last record.' + : `The file ends with ${zeros} zero bytes after ${after}, which MATLAB reads as a record of type 0, ` + + 'and fails the load. Nothing may follow the last record.'); + break; + } + if (zeros < 8 && at + zeros + 8 <= length && isRecordType(view.getUint32(at + zeros, true))) { + check.file('framing', at, `${zeros} zero byte(s) at byte ${at} pad the record before them: MATLAB reads the ` + + 'next record right where the last one\'s declared bytes end, and a compressed record is never padded, so ' + + 'it fails the load.'); + at += zeros; + continue; + } + const word = at + 4 <= length ? view.getUint32(at, true) : 0; + check.file('framing', at, `The bytes at ${at} are no record's tag (they read as ${typeName(word)}): MATLAB ` + + 'fails the load, and nothing after them was checked.'); + break; + } + if (length - at < 8) { + check.file('framing', at, `The file ends ${length - at} byte(s) into a record's tag: MATLAB fails the load.`); + break; + } + const type = view.getUint32(at, true); + const n = view.getUint32(at + 4, true); + if (at + 8 + n > length) { + check.file('framing', at, `The record at byte ${at} declares ${n} bytes, and the file holds ${length - at - 8} ` + + 'after its tag: it is cut short, and MATLAB fails the load.'); + break; + } + if (type === MI_MATRIX) { + records.push(plainRecord(check, file, at, n)); + } + else if (type === MI_COMPRESSED) { + records.push(compressedRecord(check, bytes.subarray(at + 8, at + 8 + n), at)); + } + else { + check.file('top-level-type', at, `The record at byte ${at} is a data element of ${typeName(type)}: a variable is ` + + 'stored as an miMATRIX or an miCOMPRESSED, and MATLAB fails the load on anything else.'); + } + at += 8 + n; + } + return records; +} +function zeroRun(bytes, at) { + let end = at; + while (end < bytes.byteLength && bytes[end] === 0) + end++; + return end - at; +} +function isRecordType(word) { + return word === MI_MATRIX || word === MI_COMPRESSED; +} +function typeName(type) { + return TYPE_NAMES[type] ?? `type ${type}`; +} +function plainRecord(check, file, at, n) { + if (n === 0) { + check.file('empty-matrix', at, `The record at byte ${at} is an miMATRIX of 0 bytes: MATLAB fails the load. ` + + 'Only a matrix inside another may be empty.'); + return { at, name: null, subsystem: false }; + } + const info = topMatrix(check, file, at, at + 8, at + 8 + n); + if (n % 8 !== 0) { + check.file('framing', at, `The record at byte ${at} declares ${n} bytes, not a whole number of 8-byte words: ` + + 'a plain record ends padded to 8 bytes, so this one is missing its final pad, and MATLAB fails the load.', info.name || undefined); + } + return info; +} +/** + * A compressed record: one zlib stream (RFC 1950) that inflates to one miMATRIX and nothing + * else, and ends at the record's last byte. Its matrix is then checked in the inflated bytes. + */ +function compressedRecord(check, payload, at) { + const unread = { at, name: null, subsystem: false }; + // Said once the record's name is known, if it can be, and ahead of what its matrix breaks. + const faults = []; + const fault = (text) => { + faults.push(`The compressed record at byte ${at} ${text}.`); + }; + const first = check.out.length; + const done = (info) => { + const said = faults.map((message) => { + const v = { code: 'compressed-wrapper', at, message }; + if (info.name) + v.variable = info.name; + return v; + }); + check.out.splice(first, 0, ...said); + return info; + }; + const head = zlibHeaderFault(payload); + if (head) { + fault(`${head}: MATLAB inflates a record only as a zlib stream, and fails the load`); + return done(unread); + } + const ceiling = Math.min(check.inflateLeft, MAT_RECORD_INFLATE_CEILING); + let inflated; + try { + inflated = inflateZlib(payload, ceiling); + } + catch (err) { + if (err instanceof InflateCeilingError) { + if (ceiling < MAT_RECORD_INFLATE_CEILING) { + throw new OutOfBudget(at, `more than the ${check.maxInflated} bytes one check inflates`); + } + fault(`inflates to more than the ${MAT_RECORD_INFLATE_CEILING} bytes one record of a -v7 file can hold`); + return done(unread); + } + fault(`does not inflate (${reasonOf(err)}): MATLAB fails the load`); + return done(unread); + } + check.inflateLeft -= inflated.byteLength; + // The stream ends with the Adler-32 of what it inflates to, so a record whose last four + // bytes are that checksum ends where its stream does. Anything else is bytes after the + // stream, which MATLAB's record never has, or a checksum that is wrong. + const trailer = new DataView(payload.buffer, payload.byteOffset + payload.byteLength - 4, 4).getUint32(0, false); + if (trailer !== adler32(inflated)) { + fault('does not end with its zlib stream\'s checksum: bytes follow the stream inside the record, or the ' + + 'checksum is wrong. MATLAB writes a record as exactly its stream'); + } + if (inflated.byteLength < 8) { + fault(`inflates to ${inflated.byteLength} byte(s), fewer than one element's tag: MATLAB fails the load`); + return done(unread); + } + const view = new DataView(inflated.buffer, inflated.byteOffset, inflated.byteLength); + const type = view.getUint32(0, true); + const n = view.getUint32(4, true); + if (type === MI_COMPRESSED) { + fault('inflates to another compressed record: MATLAB never nests one, and fails the load'); + return done(unread); + } + if (type !== MI_MATRIX) { + fault(`inflates to a data element of ${typeName(type)}, where a record holds a matrix: MATLAB fails the load`); + return done(unread); + } + if (n === 0) { + check.file('empty-matrix', at, `The compressed record at byte ${at} holds an miMATRIX of 0 bytes: MATLAB fails ` + + 'the load. Only a matrix inside another may be empty.'); + return done(unread); + } + const held = inflated.byteLength - 8; + if (n > held) { + fault(`holds a matrix that declares ${n} bytes, and it inflates to ${held} after the matrix's tag: ` + + 'the matrix is cut short, and MATLAB fails the load'); + } + else if (n < held) { + fault(`inflates to ${held - n} byte(s) after its matrix: MATLAB's record holds one matrix and nothing after it`); + } + return done(topMatrix(check, payloadSpace(view, at), at, 8, 8 + Math.min(n, held))); +} +/** + * Why `payload` is not a zlib stream by its first two bytes, or null when it opens like one: + * compression method 8 (deflate) with a window of at most 32 KiB, a header check that holds, + * and no preset dictionary, which MATLAB does not supply. + */ +function zlibHeaderFault(payload) { + if (payload.byteLength < 6) { + return `holds ${payload.byteLength} byte(s), fewer than the smallest zlib stream`; + } + const cmf = payload[0]; + const flg = payload[1]; + if (cmf === 0x1f && flg === 0x8b) { + return 'is a gzip stream, not a zlib one'; + } + if ((cmf & 0x0f) !== 8 || cmf >> 4 > 7 || ((cmf << 8) | flg) % 31 !== 0) { + return `does not open with a zlib header (it opens ${hex2(cmf)} ${hex2(flg)}; raw deflate has none)`; + } + if (flg & 0x20) { + return 'is a zlib stream that needs a preset dictionary'; + } + return null; +} +/** RFC 1950's checksum of `bytes`. */ +function adler32(bytes) { + let a = 1; + let b = 0; + const n = bytes.byteLength; + for (let i = 0; i < n;) { + // 5552 bytes is the most the sums take before they must be reduced to stay exact in 32 bits, + // and so certainly within a double. + const stop = Math.min(n, i + 5552); + for (; i < stop; i++) { + a += bytes[i]; + b += a; + } + a %= 65521; + b %= 65521; + } + return (b * 65536 + a) >>> 0; +} +/** + * The tag of the sub-element at `o`, which has to end by `end`, or null when it does not, or + * when its small form declares more than the 4 bytes it can hold. Both are said here, so a + * caller that gets null stops reading the matrix and adds nothing. + */ +function readTag(check, space, o, end, what) { + if (o + 8 > end) { + check.report('nbytes', space, o, `the matrix ends ${end - o} byte(s) into the tag of its ${what}, so its ` + + 'sub-elements do not fill it: MATLAB fails the load'); + return null; + } + const word = space.view.getUint32(o, true); + const small = word >>> 16; + if (small !== 0) { + // The small form: the count in the upper half of the first word, the data in the second. + if (small > 4) { + check.report('element', space, o, `the ${what} has a small tag declaring ${small} bytes, more than the 4 ` + + 'it holds: MATLAB fails the load'); + return null; + } + return { type: word & 0xffff, n: small, data: o + 4, next: o + 8 }; + } + const n = space.view.getUint32(o + 4, true); + // A matrix inside another is its tag and its declared bytes; a primitive is padded to 8. + const next = o + 8 + (word === MI_MATRIX ? n : align8(n)); + if (next > end) { + const size = word === MI_MATRIX || n % 8 === 0 ? `${n} bytes` : `${n} bytes, ${align8(n)} with its pad,`; + check.report('nbytes', space, o, `the ${what} declares ${size} and the matrix holding it has ` + + `${Math.max(0, end - o - 8)} left after its tag: MATLAB fails the load`); + return null; + } + return { type: word, n, data: o + 8, next }; +} +function align8(n) { + return n + ((8 - (n % 8)) % 8); +} +/** A top-level record's matrix: checked, and what the placement rules need of it. */ +function topMatrix(check, space, at, start, end) { + const info = { at, name: null, subsystem: false }; + check.spend(space, start); + const head = readHeader(check, space, start, end); + if (!head) { + return info; + } + info.name = recordName(check, at, head.name); + const stream = info.name === '' ? subsystemStream(space, head, end) : null; + info.subsystem = stream !== null; + const p = classBody(check, space, head, end, 0); + if (p !== null) { + fillsExactly(check, space, p, end); + } + if (stream !== null) { + checkSubsystem(check, space, stream.start, stream.end); + } + return info; +} +/** + * A variable's name, having said what is wrong with it: '' for none, and for bytes that are + * not UTF-8 the name as far as it reads, so the violation can still say whose it is. + */ +function recordName(check, at, bytes) { + if (bytes.byteLength === 0) { + return ''; + } + let name; + try { + name = strictUtf8.decode(bytes); + } + catch { + name = looseUtf8.decode(bytes); + check.variable = name; + check.file('name', at, `The variable name at byte ${at} is not valid UTF-8 (bytes ${Array.from(bytes, hex2).join(' ')}): ` + + 'MATLAB crashes reading it, in `load` and in `whos -file` alike.', name); + return name; + } + check.variable = name; + if (!IDENTIFIER.test(name)) { + check.file('name', at, `The variable name "${name}" at byte ${at} is not a MATLAB identifier (a letter, then ` + + 'letters, digits and underscores): `S = load(f)` fails on it, and `load(f)` leaves it out.', name); + } + else if (KEYWORDS.has(name)) { + check.file('name', at, `The variable name "${name}" at byte ${at} is a MATLAB keyword: MATLAB loads it as ` + + `"${name}_", with a warning.`, name); + } + return name; +} +/** + * Everything before a matrix's class's own sub-elements: the array flags, the dimensions + * (which an opaque has none of), the name. Null, having said why, when they are not there to + * read as MATLAB reads them. + */ +function readHeader(check, space, start, end) { + const view = space.view; + const flagsTag = readTag(check, space, start, end, 'array flags'); + if (!flagsTag) { + return null; + } + if (flagsTag.type !== MI_UINT32 || flagsTag.n !== 8) { + check.report('element', space, start, `the matrix's array flags are ${flagsTag.n} byte(s) of ${typeName(flagsTag.type)}, ` + + 'where MATLAB writes and reads two miUINT32 words: it fails the load'); + return null; + } + const flags = view.getUint32(flagsTag.data, true); + const cls = flags & 0xff; + if (cls < MX_CELL || cls > MX_OPAQUE) { + check.report('element', space, start, `the matrix's array class is ${cls}, which is no class MATLAB reads: ` + + 'it fails the load'); + return null; + } + let p = flagsTag.next; + const dims = []; + let numel = 1; + if (cls !== MX_OPAQUE) { + const dimsTag = readTag(check, space, p, end, 'dimensions'); + if (!dimsTag) { + return null; + } + if (dimsTag.type !== MI_INT32 || dimsTag.n % 4 !== 0 || dimsTag.n < 8) { + check.report('element', space, p, `the matrix's dimensions are ${dimsTag.n} byte(s) of ${typeName(dimsTag.type)}, ` + + 'where MATLAB writes and reads two or more miINT32 extents: it fails the load'); + return null; + } + for (let i = 0; i < dimsTag.n; i += 4) { + const extent = view.getInt32(dimsTag.data + i, true); + if (extent < 0) { + check.report('element', space, p, `the matrix's dimension ${i / 4 + 1} is ${extent}, which is no size: ` + + 'MATLAB fails the load'); + return null; + } + dims.push(extent); + numel *= extent; + } + p = dimsTag.next; + } + const nameTag = readTag(check, space, p, end, 'name'); + if (!nameTag) { + return null; + } + if (nameTag.type !== MI_INT8 && nameTag.type !== MI_UINT8) { + check.report('element', space, p, `the matrix's name is ${typeName(nameTag.type)}, where MATLAB writes an ` + + 'miINT8 one: it fails the load'); + return null; + } + const name = new Uint8Array(view.buffer, view.byteOffset + nameTag.data, nameTag.n); + return { cls, flags, dims, numel, name, p: nameTag.next }; +} +/** A matrix inside another: a cell's member, a struct's field, an object's data. */ +function nestedMatrix(check, space, start, end, depth) { + check.spend(space, start); + if (depth > MAX_NESTING) { + throw new OutOfBudget(space.fileAt(start), `a matrix nested more than ${MAX_NESTING} levels deep`); + } + const head = readHeader(check, space, start, end); + if (!head) { + return; + } + const p = classBody(check, space, head, end, depth); + if (p !== null) { + fillsExactly(check, space, p, end); + } +} +/** A matrix whose class's sub-elements end at `p` holds nothing after them. */ +function fillsExactly(check, space, p, end) { + if (p !== end) { + check.report('nbytes', space, p, `${end - p} byte(s) follow the matrix's last sub-element inside it: MATLAB reads ` + + 'a matrix as its sub-elements back to back, and they must fill it exactly'); + } +} +/** + * The sub-elements a matrix of `head.cls` holds after its name, checked: where they end, or + * null when a fault already said means the rest cannot be read. + */ +function classBody(check, space, head, end, depth) { + const cls = head.cls; + switch (cls) { + case MX_CELL: + return members(check, space, head.p, end, head.numel, depth, 'cell member'); + case MX_STRUCT: + return structBody(check, space, head, head.p, end, depth); + case MX_OBJECT: { + const p = className(check, space, head.p, end); + return p === null ? null : structBody(check, space, head, p, end, depth); + } + case MX_CHAR: + return charBody(check, space, head, end); + case MX_SPARSE: + return sparseBody(check, space, head, end); + case MX_FUNCTION: + return members(check, space, head.p, end, head.numel, depth, 'function handle member'); + case MX_OPAQUE: { + const sub = className(check, space, head.p, end, 'subsystem name'); + const p = sub === null ? null : className(check, space, sub, end); + return p === null ? null : members(check, space, p, end, 1, depth, 'object data'); + } + default: + return head.flags & SPARSE_BIT ? sparseBody(check, space, head, end) : numericBody(check, space, head, end); + } +} +/** + * `count` matrices back to back from `p`, each checked: a cell's members, a struct's fields + * (element by element, field by field), a function handle's parts, an object's data. + */ +function members(check, space, p, end, count, depth, what) { + for (let i = 0; i < count; i++) { + if (p >= end) { + check.report('nbytes', space, p, `the matrix holds ${i} of the ${count} ${what}(s) it declares: MATLAB fails the load`); + return null; + } + const tag = readTag(check, space, p, end, `${what} ${i + 1}`); + if (!tag) { + return null; + } + if (tag.type !== MI_MATRIX) { + check.report('element', space, p, `${what} ${i + 1} is a data element of ${typeName(tag.type)}, where MATLAB ` + + 'reads only a matrix: it fails the load'); + return null; + } + // An empty matrix here is a member MATLAB reads as [], and has no sub-elements to check, + // but it is spent as one: a billion of them is still a billion reads. + if (tag.n > 0) { + nestedMatrix(check, space, tag.data, tag.next, depth + 1); + } + else { + check.spend(space, p); + } + p = tag.next; + } + return p; +} +/** An miINT8 name after a matrix's own: an object's class name, an opaque's subsystem name. */ +function className(check, space, p, end, what = 'class name') { + const tag = readTag(check, space, p, end, what); + if (!tag) { + return null; + } + if ((tag.type !== MI_INT8 && tag.type !== MI_UINT8) || tag.n === 0) { + check.report('element', space, p, `the object's ${what} is ${tag.n} byte(s) of ${typeName(tag.type)}, where MATLAB ` + + 'writes a name in miINT8: it fails the load'); + return null; + } + return tag.next; +} +/** A struct's (or an object's) field-name length, its field names, then every field's value. */ +function structBody(check, space, head, p, end, depth) { + const widthTag = readTag(check, space, p, end, 'field-name length'); + if (!widthTag) { + return null; + } + if (widthTag.type !== MI_INT32 || widthTag.n !== 4) { + check.report('element', space, p, `the struct's field-name length is ${widthTag.n} byte(s) of ${typeName(widthTag.type)}, ` + + 'where MATLAB writes one miINT32: it fails the load'); + return null; + } + const width = space.view.getInt32(widthTag.data, true); + const namesTag = readTag(check, space, widthTag.next, end, 'field names'); + if (!namesTag) { + return null; + } + if (namesTag.type !== MI_INT8 && namesTag.type !== MI_UINT8) { + check.report('element', space, widthTag.next, `the struct's field names are ${typeName(namesTag.type)}, where MATLAB ` + + 'writes miINT8: it fails the load'); + return null; + } + if (width <= 0 && namesTag.n > 0) { + check.report('element', space, p, `the struct's field-name length is ${width}, with ${namesTag.n} byte(s) of names: ` + + 'MATLAB fails the load'); + return null; + } + // MATLAB counts the fields as the names' bytes over the length, whole names only. + const fields = width > 0 ? Math.floor(namesTag.n / width) : 0; + return members(check, space, namesTag.next, end, head.numel * fields, depth, 'field value'); +} +/** + * A char array's data: miUTF8 holding as many UTF-16 units as the array's elements, miUTF16 + * of two bytes each, or miUINT16 below U+0100 (MATLAB keeps only the low byte of a unit above + * it, and fails on a surrogate). A complex char array MATLAB does not load at all. + */ +function charBody(check, space, head, end) { + const tag = readTag(check, space, head.p, end, 'char data'); + if (!tag) { + return null; + } + const numel = head.numel; + const view = space.view; + switch (tag.type) { + case MI_UTF8: { + let text = null; + try { + text = strictUtf8.decode(new Uint8Array(view.buffer, view.byteOffset + tag.data, tag.n)); + } + catch { + check.report('char-type', space, head.p, 'the char array\'s miUTF8 data is not valid UTF-8'); + } + if (text !== null && text.length !== numel) { + check.report('utf8-count', space, head.p, `the char array's miUTF8 data is ${text.length} UTF-16 unit(s) of text, ` + + `and the array has ${numel} element(s): MATLAB fails the load`); + } + break; + } + case MI_UTF16: + if (tag.n !== 2 * numel) { + check.report('data-size', space, head.p, `the char array's miUTF16 data is ${tag.n} byte(s), and the array has ` + + `${numel} element(s) of 2 bytes each`); + } + break; + case MI_UINT16: + if (tag.n !== 2 * numel) { + check.report('data-size', space, head.p, `the char array's miUINT16 data is ${tag.n} byte(s), and the array has ` + + `${numel} element(s) of 2 bytes each`); + } + for (let o = tag.data; o + 2 <= tag.data + tag.n; o += 2) { + const unit = view.getUint16(o, true); + if (unit > 0xff) { + check.report('char-type', space, head.p, `the char array's miUINT16 data holds U+${unit.toString(16).toUpperCase().padStart(4, '0')}: ` + + 'MATLAB reads miUINT16 text one byte a character, keeping only the low byte of a unit above U+00FF ' + + 'and failing on a surrogate. Text beyond U+00FF is stored as miUTF8 or miUTF16'); + break; + } + } + break; + default: + check.report('char-type', space, head.p, `the char array's data is ${typeName(tag.type)}: MATLAB reads char data ` + + 'only as miUTF8, miUTF16 or miUINT16, and fails the load'); + } + let p = tag.next; + if (head.flags & COMPLEX_BIT) { + check.report('char-type', space, head.p, 'the char array is marked complex, and MATLAB loads a complex char array ' + + 'as nothing'); + const imag = readTag(check, space, p, end, 'imaginary char data'); + if (!imag) { + return null; + } + p = imag.next; + } + return p; +} +/** + * A full numeric array's real part, and its imaginary part when it is complex. A double may be + * stored in any numeric type (MATLAB narrows integral doubles to the smallest that holds them); + * every other class only in its own. + */ +function numericBody(check, space, head, end) { + let p = head.p; + for (const part of head.flags & COMPLEX_BIT ? ['real part', 'imaginary part'] : ['data']) { + const tag = readTag(check, space, p, end, part); + if (!tag) { + return null; + } + checkNumbers(check, space, p, head, tag, part, head.numel); + p = tag.next; + } + return p; +} +/** One numeric part's type and size, against its array's class and `count` elements. */ +function checkNumbers(check, space, o, head, tag, part, count) { + const logical = head.flags & LOGICAL_BIT && head.cls === MX_UINT8; + const what = logical ? 'logical' : head.cls === MX_SPARSE ? 'sparse' : CLASS_NAMES[head.cls]; + const width = WIDTH[tag.type]; + const own = OWN_TYPE[head.cls]; + if (own !== undefined && tag.type !== own) { + check.report('int-storage', space, o, `the ${what} array's ${part} is stored as ${typeName(tag.type)}, and MATLAB ` + + `stores a ${what} array only as ${typeName(own)}: only a double is ever stored in a narrower type`); + return; + } + if (width === undefined) { + check.report('element', space, o, `the ${what} array's ${part} is ${typeName(tag.type)}, which MATLAB does not ` + + 'read as numbers: it fails the load'); + return; + } + if (tag.n % width !== 0 || tag.n / width !== count) { + check.report('data-size', space, o, `the ${what} array's ${part} is ${tag.n} byte(s) of ${typeName(tag.type)}, and it ` + + `has ${count} element(s) of ${width} byte(s) each`); + } +} +/** + * A sparse array: its row indices, its column starts (one per column and one more), its + * non-zeros, and their imaginary parts when it is complex. MATLAB has sparse arrays of double, + * single and logical class only. + */ +function sparseBody(check, space, head, end) { + const cls = head.cls; + const logical = (head.flags & LOGICAL_BIT) !== 0; + if (!(cls === MX_SPARSE || cls === MX_DOUBLE || cls === MX_SINGLE || (cls === MX_UINT8 && logical))) { + check.report('element', space, head.p, `the matrix is a sparse ${CLASS_NAMES[cls]} array, and MATLAB has sparse ` + + 'arrays of double, single and logical class only'); + } + if (head.dims.length !== 2) { + check.report('element', space, head.p, `the sparse array has ${head.dims.length} dimensions, and a sparse array has 2`); + } + const ir = readTag(check, space, head.p, end, 'row indices'); + if (!ir) { + return null; + } + const jc = readTag(check, space, ir.next, end, 'column starts'); + if (!jc) { + return null; + } + for (const [tag, o, part] of [[ir, head.p, 'row indices'], [jc, ir.next, 'column starts']]) { + if (tag.type !== MI_INT32) { + check.report('element', space, o, `the sparse array's ${part} are ${typeName(tag.type)}, where MATLAB writes ` + + 'miINT32'); + } + } + const nonZeros = ir.type === MI_INT32 ? ir.n / 4 : Math.floor(ir.n / (WIDTH[ir.type] ?? 1)); + if (jc.type === MI_INT32 && head.dims.length === 2 && jc.n !== 4 * (head.dims[1] + 1)) { + check.report('data-size', space, ir.next, `the sparse array's column starts are ${jc.n / 4} miINT32, and it has ` + + `${head.dims[1]} column(s), which take one more`); + } + let p = jc.next; + for (const part of head.flags & COMPLEX_BIT ? ['real non-zeros', 'imaginary non-zeros'] : ['non-zeros']) { + const tag = readTag(check, space, p, end, part); + if (!tag) { + return null; + } + checkNumbers(check, space, p, { ...head, cls: cls === MX_SPARSE && logical ? MX_UINT8 : cls }, tag, part, nonZeros); + p = tag.next; + } + return p; +} +/** + * Where the subsystem data an unnamed record holds is, or null when it holds none: the data of + * a real uint8 array, opening as a MAT stream does (00 01 49 4D). Read without a word said, + * since `classBody` checks the same sub-element as the array's data. + */ +function subsystemStream(space, head, end) { + const view = space.view; + if (head.cls !== MX_UINT8 || head.flags & (LOGICAL_BIT | COMPLEX_BIT | SPARSE_BIT) || head.p + 16 > end) { + return null; + } + const n = view.getUint32(head.p + 4, true); + const start = head.p + 8; + if (view.getUint32(head.p, true) !== MI_UINT8 || n < 8 || start + n > end) { + return null; + } + return STREAM_MAGIC.every((b, i) => view.getUint8(start + i) === b) ? { start, end: start + n } : null; +} +/** + * The subsystem's stream, checked as MATLAB reads it when it loads an object: its 8-byte + * preamble, then matrices back to back to its last byte. The second half of the preamble's + * reserved word says the stream's tags are 32-bit, as in every file MATLAB was seen writing; + * a stream that says otherwise is not walked. + */ +function checkSubsystem(check, space, start, end) { + if (space.view.getUint16(start + 4, true) !== 0) { + return; + } + check.inSubsystem = true; + try { + let o = start + 8; + while (o < end) { + const element = readTag(check, space, o, end, 'subsystem element'); + if (!element) { + return; + } + if (element.type !== MI_MATRIX) { + check.report('element', space, o, `the subsystem's stream holds a data element of ${typeName(element.type)}, ` + + 'where it holds only matrices'); + return; + } + if (element.n > 0) { + nestedMatrix(check, space, element.data, element.next, 1); + } + else { + check.spend(space, o); + } + o = element.next; + } + } + finally { + check.inSubsystem = false; + } +} +/** + * The rules about where records are: the header's offset points at the subsystem, the + * subsystem is last, no other record is unnamed, no name is stored twice. + */ +function checkPlacement(check, records, offset, length) { + let subsystem = -1; + if (offset !== 0) { + const i = records.findIndex((r) => r.at === offset); + const record = records[i]; + const field = `Header bytes 116-123 give the subsystem's offset as ${offset}`; + const fails = 'MATLAB reads the objects in the file only from there, and fails the load'; + if (!record) { + check.file('subsystem-offset', 116, offset < 128 || offset >= length + ? `${field}, outside the file's records: ${fails}.` + : `${field}, where no record starts: ${fails}.`); + } + else if (record.name === null) { + // The record there could not be read, which is said where it is. + } + else if (record.name !== '') { + check.file('subsystem-offset', 116, `${field}, which is variable "${record.name}", not the subsystem: ${fails}.`); + } + else if (!record.subsystem) { + check.file('subsystem-offset', 116, `${field}, an unnamed record that holds no subsystem data: ${fails}.`); + } + else { + subsystem = i; + } + } + else { + for (const r of records) { + if (r.subsystem) { + check.file('subsystem-offset', 116, `Header bytes 116-123 say the file has no subsystem, and the record at byte ` + + `${r.at} is one: MATLAB then reads none of the objects in the file, and fails the load.`); + } + } + } + if (subsystem >= 0) { + for (const r of records.slice(subsystem + 1)) { + const what = r.name ? `Variable "${r.name}"` : `The record at byte ${r.at}`; + check.file('subsystem-not-last', r.at, `${what} is stored after the subsystem (byte ${records[subsystem].at}): ` + + 'MATLAB stops reading variables at the subsystem, so `load` silently leaves it out.', r.name || undefined); + } + } + records.forEach((r, i) => { + if (r.name !== '' || i === subsystem) { + return; + } + const after = records.length - i - 1; + const what = r.subsystem + ? `The record at byte ${r.at} holds subsystem data, and the header's offset does not point at it` + : `The record at byte ${r.at} has no name`; + check.file('anonymous-record', r.at, `${what}: MATLAB stops reading variables at the first unnamed record, which ` + + 'is the subsystem\'s place' + + (after > 0 ? `, so \`load\` silently leaves out the ${after} record(s) after it.` : ', and leaves it out of `load`.')); + }); + const first = new Map(); + for (const r of records) { + if (!r.name) { + continue; + } + const seen = first.get(r.name); + if (seen === undefined) { + first.set(r.name, r.at); + } + else { + check.file('duplicate-name', r.at, `Variable "${r.name}" is stored again at byte ${r.at} (first at byte ${seen}): ` + + 'MATLAB loads both, `load(f)` keeping the last and `load(f, name)` the first.', r.name); + } + } +} +//# sourceMappingURL=MatFileCheck.js.map \ No newline at end of file diff --git a/dist/datamodel/parser/MatFileCheck.js.map b/dist/datamodel/parser/MatFileCheck.js.map new file mode 100644 index 00000000..1800ee6d --- /dev/null +++ b/dist/datamodel/parser/MatFileCheck.js.map @@ -0,0 +1 @@ +{"version":3,"file":"MatFileCheck.js","sourceRoot":"","sources":["../../../src/datamodel/parser/MatFileCheck.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/datamodel/parser/MatFileCheck.ts b/src/datamodel/parser/MatFileCheck.ts new file mode 100644 index 00000000..c866edaf --- /dev/null +++ b/src/datamodel/parser/MatFileCheck.ts @@ -0,0 +1,1226 @@ +// src/datamodel/parser/MatFileCheck.ts +// Copyright 2026 The MathWorks, Inc. +// +// Whether MATLAB loads a Level-5 MAT-file, judged by the rules MATLAB loads one by, and not by +// this package's own reader. +// +// WHY A SECOND READER. `parseMat` is built to open whatever it can, which is right for a +// viewer and wrong for a judge. It clamps every declared length to the bytes present, takes a +// zero tag for the end of the variables, reads char data stored as miUTF32 or miUINT8, and +// lists a variable stored after the subsystem. MATLAB does none of that. Of the 36 files in the +// MATLAB-verdict corpus (test/fixtures/mat-check) that MATLAB does not load as stored, because +// the load fails or a variable comes back missing or changed, `parseMat` opens all 36, and 32 +// of them without a single warning (measured when this was written). So a `.mat` this package +// writes and then reads back proves only that the package agrees with itself. This module is +// the other judge: it reads no value, and it lists every place a file breaks a rule MATLAB +// applies at `load`, as a MatViolation. It shares no reading code with MatParser, so none of +// the reader's repairs can leak into a verdict. +// +// THE RULES. Each was measured against MATLAB R2027a (27.1 prerelease, maca64) with `S = +// load(f)` on copies of MATLAB-written files edited one byte range at a time +// (test/fixtures/mat-check/verdicts.json holds the files and MATLAB's verdict on each): +// +// * the header: bytes 124-125 are the version 0x0100 and 126-127 the endian mark 'IM' (0x0000 +// and 0x0200 fail, and 0x0200 makes MATLAB try HDF5); neither 16-bit half of bytes 0-3 is +// zero (a header of NULs fails: MATLAB takes the file for Level 4); +// * the records tile the file from byte 128 to its last byte. A plain record is its tag and +// its declared bytes, a multiple of 8 (one cut short, or missing its final pad, fails); a +// compressed one is its tag and exactly its zlib stream, with no padding after it (zero +// padding to 8 fails), and nothing follows the last record (3, 8 or 100 zero bytes fail); +// * a record is an miMATRIX, or an miCOMPRESSED whose RFC 1950 zlib stream inflates to one +// miMATRIX and nothing else (zlib levels 0, 1, 6 and 9 all load); +// * header bytes 116-123 are the offset of the subsystem's record (the objects' data), or 0 +// when there is none. MATLAB trusts the offset and never looks for the record: a stale, +// zeroed or space-filled one fails the whole load; +// * the subsystem is the last record and the only unnamed one. MATLAB stops listing variables +// at the first unnamed record, so a variable after it is silently missing from the load +// (the load succeeds, and `whos -file` still lists it); +// * a variable's name is a MATLAB identifier in valid UTF-8: '1abc' and 'café' fail `S = +// load(f)`, 'end' loads as 'end_', and a name that is not UTF-8 crashed MATLAB; +// * char data is miUTF8 holding as many UTF-16 units as the array's elements, or miUTF16, or +// miUINT16 below U+0100: miUTF32, miUINT8 and miINT8 fail, a surrogate in miUINT16 fails, +// and CJK in miUINT16 loads keeping only the low byte of each unit, with no warning; +// * every element is readable: one bad variable fails the whole-file load. +// +// Some rules were not probed, deliberately: what MATLAB writes is plain, and a file that breaks +// it is one no MATLAB was seen to write. Only a double is ever stored in a narrower type than +// its class (every other numeric class is stored in its own), every sub-element fills its +// matrix exactly, and every data sub-element holds as many elements as its dimensions say. +// They are checked as MATLAB writes them (`int-storage`, `nbytes`, `data-size`, `element`). +// +// WHERE IT IS STRICTER THAN MATLAB, on purpose, so the save path never writes a file that +// loads only by luck. Each is listed with its reason in test/matFileCheck.test.ts: a name +// stored twice (it loads, but `load f` keeps the last copy and `load f x` the first); bytes +// after the subsystem's record, which MATLAB's load never reads; a zlib stream whose Adler-32 +// trailer is not the record's last four bytes. +// +// WHAT IT IS FOR. The `.mat` save checks the file it writes, and refuses to return it if it has +// a violation the original did not. A violation is therefore said with the variable it is in, +// when that has a readable name, so two files can be compared by variable rather than by an +// offset an edit moved (violationsAdded). +// +// BOUNDED. A file's bytes say how much work reading them is, and a hostile one can say a lot: +// a few kilobytes of zlib inflate to gigabytes, and a cell can declare a billion elements. So +// the check spends a budget of inflated bytes and of matrices walked (MatCheckOptions), and +// stops when either runs out, with a `budget` note saying where. It never throws: whatever the +// bytes, the answer is a list. + +import { InflateCeilingError, inflateZlib, MAT_RECORD_INFLATE_CEILING } from './Inflate.js'; +import { MAX_NESTING } from './MatParser.js'; +import { reasonOf } from './ParseWarning.js'; + +/** + * What a MatViolation is about. Each is one rule MATLAB applies at `load`: + * + * - `short-file`: fewer than the 128 bytes of a header; + * - `not-level5`: the version (bytes 124-125) or the endian mark (126-127) is not a Level-5 + * file's, or the two disagree; + * - `level4-lookalike`: a 16-bit half of bytes 0-3 is zero, so MATLAB reads the file as Level 4; + * - `big-endian`: an 'MI' file, noted and not checked further (this package does not read one); + * - `framing`: the records do not tile the file from byte 128 to its end: one is cut short, one + * is not a whole number of 8-byte words, or bytes follow or pad them; + * - `top-level-type`: a record that is neither miMATRIX nor miCOMPRESSED; + * - `empty-matrix`: a record holding an miMATRIX of 0 bytes; + * - `compressed-wrapper`: a compressed record that is not one zlib stream of one miMATRIX; + * - `subsystem-offset`: header bytes 116-123 do not point at the subsystem's record, or are 0 + * with a subsystem in the file; + * - `subsystem-not-last`: a record after the subsystem, which MATLAB silently leaves out; + * - `anonymous-record`: an unnamed record that is not the subsystem, where MATLAB stops listing; + * - `name`: a variable name that is not valid UTF-8, not an identifier, or a keyword (an empty + * one is an `anonymous-record`); + * - `duplicate-name`: two records of one name; + * - `char-type`: char data in a type MATLAB does not read as text, or reads wrong; + * - `utf8-count`: miUTF8 char data whose UTF-16 length is not the array's element count; + * - `nbytes`: a matrix its sub-elements do not fill exactly; + * - `int-storage`: a numeric array of a class other than double, stored in a type other than + * its class's own; + * - `element`: a sub-element MATLAB cannot read where it stands: array flags, dimensions or a + * name of the wrong type, an unknown class or data type, a small tag of more than 4 bytes, a + * container member that is not a matrix; + * - `data-size`: a data sub-element holding more or fewer elements than the dimensions say; + * - `budget`: the check stopped here, and nothing from here on was checked. + */ +export type MatViolationCode = + | 'short-file' + | 'not-level5' + | 'level4-lookalike' + | 'big-endian' + | 'framing' + | 'top-level-type' + | 'empty-matrix' + | 'compressed-wrapper' + | 'subsystem-offset' + | 'subsystem-not-last' + | 'anonymous-record' + | 'name' + | 'duplicate-name' + | 'char-type' + | 'utf8-count' + | 'nbytes' + | 'int-storage' + | 'element' + | 'data-size' + | 'budget'; + +/** One rule a MAT-file breaks, and where. */ +export interface MatViolation { + code: MatViolationCode; + /** + * The byte of the file it is at. Inside a compressed record that is the record's own tag, + * since the bytes at fault exist only inflated; the message gives their place in the + * inflated payload. For a header field (`subsystem-offset`) it is the field. + */ + at: number; + /** What is wrong, and what MATLAB does with it, in a sentence a user can be shown. */ + message: string; + /** The variable it is in, when its record has a name that could be read. */ + variable?: string; +} + +/** How much one check may spend. Past either budget it stops with a `budget` note. */ +export interface MatCheckOptions { + /** Matrices walked, top-level and nested together. Defaults to MAT_CHECK_ELEMENT_BUDGET. */ + maxElements?: number; + /** Bytes inflated from compressed records, over the whole file. Defaults to MAT_CHECK_INFLATE_BUDGET. */ + maxInflatedBytes?: number; +} + +/** + * How many matrices one check walks, at most: 2^24. A matrix costs the check a few tag reads, + * and 2^24 of them is a struct array of 1.6 million elements and ten fields each. + */ +export const MAT_CHECK_ELEMENT_BUDGET = 2 ** 24; + +/** + * How many bytes one check inflates, at most, over every compressed record of the file: 1 GiB. + * The check inflates one record at a time and drops it, so this bounds time more than memory; + * the largest record in the corpus `parseMat` is measured against inflates to 114 MB. + */ +export const MAT_CHECK_INFLATE_BUDGET = 2 ** 30; + +const MI_INT8 = 1; +const MI_UINT8 = 2; +const MI_INT16 = 3; +const MI_UINT16 = 4; +const MI_INT32 = 5; +const MI_UINT32 = 6; +const MI_SINGLE = 7; +const MI_DOUBLE = 9; +const MI_INT64 = 12; +const MI_UINT64 = 13; +const MI_MATRIX = 14; +const MI_COMPRESSED = 15; +const MI_UTF8 = 16; +const MI_UTF16 = 17; + +const TYPE_NAMES: Record = { + [MI_INT8]: 'miINT8', [MI_UINT8]: 'miUINT8', [MI_INT16]: 'miINT16', [MI_UINT16]: 'miUINT16', + [MI_INT32]: 'miINT32', [MI_UINT32]: 'miUINT32', [MI_SINGLE]: 'miSINGLE', [MI_DOUBLE]: 'miDOUBLE', + [MI_INT64]: 'miINT64', [MI_UINT64]: 'miUINT64', [MI_MATRIX]: 'miMATRIX', [MI_COMPRESSED]: 'miCOMPRESSED', + [MI_UTF8]: 'miUTF8', [MI_UTF16]: 'miUTF16', 18: 'miUTF32', +}; + +/** The bytes one element of each numeric data type takes. */ +const WIDTH: Record = { + [MI_INT8]: 1, [MI_UINT8]: 1, [MI_INT16]: 2, [MI_UINT16]: 2, [MI_INT32]: 4, [MI_UINT32]: 4, + [MI_SINGLE]: 4, [MI_DOUBLE]: 8, [MI_INT64]: 8, [MI_UINT64]: 8, +}; + +const MX_CELL = 1; +const MX_STRUCT = 2; +const MX_OBJECT = 3; +const MX_CHAR = 4; +const MX_SPARSE = 5; +const MX_DOUBLE = 6; +const MX_SINGLE = 7; +const MX_UINT8 = 9; +const MX_FUNCTION = 16; +const MX_OPAQUE = 17; + +const CLASS_NAMES: Record = { + 1: 'cell', 2: 'struct', 3: 'object', 4: 'char', 5: 'sparse', 6: 'double', 7: 'single', + 8: 'int8', 9: 'uint8', 10: 'int16', 11: 'uint16', 12: 'int32', 13: 'uint32', 14: 'int64', + 15: 'uint64', 16: 'function_handle', 17: 'opaque', +}; + +/** The one data type each numeric class but double is stored in. */ +const OWN_TYPE: Record = { + 7: MI_SINGLE, 8: MI_INT8, 9: MI_UINT8, 10: MI_INT16, 11: MI_UINT16, 12: MI_INT32, + 13: MI_UINT32, 14: MI_INT64, 15: MI_UINT64, +}; + +// The array flags' bits above the class byte. +const LOGICAL_BIT = 0x200; +const COMPLEX_BIT = 0x800; +const SPARSE_BIT = 0x1000; + +// MATLAB's keywords (iskeyword), which a variable name may not be: the same list +// datamodel/matlabName.ts holds, restated because this folder imports nothing from there. +const KEYWORDS = new Set([ + 'break', 'case', 'catch', 'classdef', 'continue', 'else', 'elseif', 'end', 'for', 'function', + 'global', 'if', 'otherwise', 'parfor', 'persistent', 'return', 'spmd', 'switch', 'try', 'while', +]); + +const IDENTIFIER = /^[A-Za-z][A-Za-z0-9_]*$/; + +// Fatal, so bytes that are not UTF-8 are said to be, and keeping a BOM, so a name or a text +// that opens with one is not read as one without it. +const strictUtf8 = new TextDecoder('utf-8', { fatal: true, ignoreBOM: true }); +const looseUtf8 = new TextDecoder('utf-8', { ignoreBOM: true }); + +// The MAT stream a subsystem's uint8 data opens with: the version 0x0100 and 'IM'. +const STREAM_MAGIC = [0x00, 0x01, 0x49, 0x4d]; + +/** Thrown inside a check when a budget runs out, and turned into its `budget` note. */ +class OutOfBudget extends Error { + constructor(readonly at: number, message: string) { + super(message); + this.name = 'OutOfBudget'; + } +} + +/** + * The bytes a matrix is read out of: the file itself, or a compressed record's payload, + * inflated. `fileAt` is the file offset a violation at `o` is reported at, and `where` says + * where `o` is, in words. + */ +interface Space { + view: DataView; + fileAt(o: number): number; + where(o: number): string; +} + +function fileSpace(view: DataView): Space { + return { view, fileAt: (o) => o, where: (o) => `Byte ${o}` }; +} + +function payloadSpace(view: DataView, record: number): Space { + return { + view, + fileAt: () => record, + where: (o) => `Byte ${o} of the compressed record at byte ${record}, inflated,`, + }; +} + +/** What the placement rules need of one top-level record. */ +interface RecordInfo { + at: number; + /** Its variable's name; '' for an unnamed one, null when the name could not be read. */ + name: string | null; + /** It is unnamed and holds subsystem data: uint8 bytes that open as a MAT stream. */ + subsystem: boolean; +} + +/** A sub-element's tag, in either of the format's two spellings. */ +interface Tag { + type: number; + /** The payload bytes it declares. */ + n: number; + /** Where its payload starts. */ + data: number; + /** Where the next sub-element starts: past the payload and its pad to 8 bytes. */ + next: number; +} + +/** What `readHeader` reads of a matrix: everything before its class's own sub-elements. */ +interface MatrixHead { + cls: number; + flags: number; + dims: number[]; + numel: number; + name: Uint8Array; + /** Where the class's own sub-elements start. */ + p: number; +} + +class Check { + readonly out: MatViolation[] = []; + readonly maxElements: number; + readonly maxInflated: number; + elementsLeft: number; + inflateLeft: number; + /** The record being checked, for a `budget` note on a throw nobody expected. */ + cursor = 128; + /** The variable whose record is being checked, once its name is read. */ + variable: string | undefined; + /** Whether the walk is inside the subsystem's stream, which belongs to no variable. */ + inSubsystem = false; + + constructor(options: MatCheckOptions) { + this.maxElements = options.maxElements ?? MAT_CHECK_ELEMENT_BUDGET; + this.maxInflated = options.maxInflatedBytes ?? MAT_CHECK_INFLATE_BUDGET; + this.elementsLeft = this.maxElements; + this.inflateLeft = this.maxInflated; + } + + /** A violation of the file as a whole, or of one record seen from outside it. */ + file(code: MatViolationCode, at: number, message: string, variable?: string): void { + const v: MatViolation = { code, at, message }; + if (variable) v.variable = variable; + this.out.push(v); + } + + /** A violation inside a matrix, said with where it is and whose it is. */ + report(code: MatViolationCode, space: Space, o: number, text: string): void { + const whose = this.inSubsystem + ? ' (in the subsystem, the data of the objects in the file)' + : this.variable ? ` (in "${this.variable}")` : ''; + const v: MatViolation = { code, at: space.fileAt(o), message: `${space.where(o)}${whose}: ${text}.` }; + if (this.variable && !this.inSubsystem) v.variable = this.variable; + this.out.push(v); + } + + /** One more matrix walked, or the end of the check. */ + spend(space: Space, o: number): void { + if (--this.elementsLeft < 0) { + throw new OutOfBudget(space.fileAt(o), `more than the ${this.maxElements} matrices one check walks`); + } + } +} + +/** + * Check a Level-5 MAT-file against the rules MATLAB loads one by (see the top of this file), + * and list every place it breaks one, in file order. An empty list means MATLAB loads the + * file, every variable in it, as stored. Pure and synchronous, and it never throws: bytes that + * are not a MAT-file at all are a violation too. + */ +export function checkMatFile(bytes: Uint8Array, options: MatCheckOptions = {}): MatViolation[] { + const check = new Check(options); + try { + checkFile(check, bytes); + } catch (err) { + // A budget run out, or, if this module has a defect, any other throw: either way the + // check did not finish, and that is said rather than thrown, at the record it was in. + const at = err instanceof OutOfBudget ? err.at : check.cursor; + const why = err instanceof OutOfBudget ? err.message : `an error in the check itself (${reasonOf(err)})`; + check.file('budget', at, `The check stopped at byte ${at}, at ${why}, so nothing from there on was checked.`); + } + // Stable, so the violations of one place keep the order they were found in. + return check.out.sort((a, b) => a.at - b.at); +} + +/** + * The violations of `after` that `before` does not have: what a rewrite of a file added to it. + * + * Matched by code and variable, never by offset or message, which an edit anywhere before a + * record moves; and counted, so a third violation of one kind in one variable is added where + * the original had two. `renamed` maps a variable's name in `after` to its name in `before`. + * A `budget` note in `after` is always added: a check that did not finish proves nothing about + * what it did not reach, whatever the original's check reached. + */ +export function violationsAdded( + before: readonly MatViolation[], + after: readonly MatViolation[], + renamed: ReadonlyMap = new Map(), +): MatViolation[] { + const key = (code: MatViolationCode, variable: string | undefined) => `${code}\u0000${variable ?? ''}`; + const held = new Map(); + for (const v of before) { + const k = key(v.code, v.variable); + held.set(k, (held.get(k) ?? 0) + 1); + } + const added: MatViolation[] = []; + for (const v of after) { + const k = key(v.code, v.variable === undefined ? undefined : renamed.get(v.variable) ?? v.variable); + const left = held.get(k) ?? 0; + if (v.code === 'budget' || left === 0) { + added.push(v); + } else { + held.set(k, left - 1); + } + } + return added; +} + +function checkFile(check: Check, bytes: Uint8Array): void { + if (bytes.byteLength < 128) { + check.file('short-file', 0, `The file holds ${bytes.byteLength} bytes, fewer than the 128 of a MAT-file's header.`); + return; + } + if (!checkHeader(check, bytes)) { + return; + } + const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength); + const offset = subsystemOffset(view, bytes); + const records = walkRecords(check, view, bytes, offset); + checkPlacement(check, records, offset, bytes.byteLength); +} + +/** Whether the rest of the file is a Level-5 one to check, having said what the header breaks. */ +function checkHeader(check: Check, bytes: Uint8Array): boolean { + // MATLAB looks at the first four bytes before anything else, and a zero in either 16-bit + // half of them makes it read the file as Level 4: a header text that opens with NULs. + if ((bytes[0] | bytes[1]) === 0 || (bytes[2] | bytes[3]) === 0) { + check.file('level4-lookalike', 0, 'A 16-bit half of the header\'s first four bytes is zero, so MATLAB reads ' + + 'the file as a Level 4 MAT-file and fails the load. The header text must not open with NUL bytes.'); + } + const mark = String.fromCharCode(bytes[126], bytes[127]); + const version = `${hex2(bytes[124])} ${hex2(bytes[125])}`; + if (mark === 'MI' && bytes[124] === 0x01 && bytes[125] === 0x00) { + check.file('big-endian', 126, 'The file is big-endian (\'MI\'). MATLAB reads one, but this package does not, ' + + 'so nothing after the header was checked.'); + return false; + } + if (mark !== 'IM' && mark !== 'MI') { + check.file('not-level5', 126, `Header bytes 126-127 are ${hex2(bytes[126])} ${hex2(bytes[127])}, not the endian mark ` + + '\'IM\' of a Level-5 MAT-file, so MATLAB does not read it as one.'); + return false; + } + if (mark === 'IM' && !(bytes[124] === 0x00 && bytes[125] === 0x01)) { + check.file('not-level5', 124, bytes[124] === 0x00 && bytes[125] === 0x02 + ? 'Header bytes 124-125 are 00 02, the version 0x0200 of a -v7.3 (HDF5) file, which is not a Level-5 MAT-file.' + : `Header bytes 124-125 are ${version}, where a Level-5 MAT-file holds the version 0x0100 (bytes 00 01), ` + + 'so MATLAB fails the load.'); + return false; + } + if (mark === 'MI') { + check.file('not-level5', 124, `Header bytes 124-125 are ${version}, and a big-endian ('MI') file holds the version ` + + '0x0100 as bytes 01 00: the version and the endian mark disagree, so MATLAB fails the load.'); + return false; + } + return true; +} + +function hex2(b: number): string { + return b.toString(16).padStart(2, '0'); +} + +/** Header bytes 116-123: the subsystem's offset, where eight spaces mean 0 as zeros do. */ +function subsystemOffset(view: DataView, bytes: Uint8Array): number { + if (bytes.subarray(116, 124).every((b) => b === 0x20)) { + return 0; + } + return view.getUint32(120, true) * 2 ** 32 + view.getUint32(116, true); +} + +/** + * Every record from byte 128 to the end of the file, each checked, and what the placement + * rules need of each. The walk is MATLAB's: a record is its 8-byte tag and the bytes the tag + * declares, and the next one starts right after them, whatever the alignment. + */ +function walkRecords(check: Check, view: DataView, bytes: Uint8Array, offset: number): RecordInfo[] { + const records: RecordInfo[] = []; + const file = fileSpace(view); + const length = bytes.byteLength; + let at = 128; + while (at < length) { + check.cursor = at; + check.variable = undefined; + if (bytes[at] === 0) { + // No record tag opens with a zero byte (a record's type is 14 or 15), so this is padding, + // or the bytes after the last record, or a tag of type 0. Said once, as what it is. + const zeros = zeroRun(bytes, at); + const last = records[records.length - 1]; + if (at + zeros === length && last !== undefined && last.at === offset && last.subsystem) { + // Measured: MATLAB loads a file with 8 zero bytes after its subsystem, because its + // load stops reading at the subsystem. They are no record all the same, and what + // MATLAB's own `save -append`, which reads past the subsystem, makes of them is not + // known, so they are said as the bytes that do not frame they are. + check.file('framing', at, `The file ends with ${zeros} zero byte(s) after the subsystem's record, which are no ` + + 'record: MATLAB\'s load does not read past the subsystem, but MATLAB writes nothing after it.'); + break; + } + if (at + zeros === length) { + const after = last === undefined ? 'its header' : 'its last record'; + check.file('framing', at, zeros < 8 + ? `The file ends with ${zeros} zero byte(s) after ${after}, fewer than a record's tag: ` + + 'MATLAB fails the load. Nothing may follow the last record.' + : `The file ends with ${zeros} zero bytes after ${after}, which MATLAB reads as a record of type 0, ` + + 'and fails the load. Nothing may follow the last record.'); + break; + } + if (zeros < 8 && at + zeros + 8 <= length && isRecordType(view.getUint32(at + zeros, true))) { + check.file('framing', at, `${zeros} zero byte(s) at byte ${at} pad the record before them: MATLAB reads the ` + + 'next record right where the last one\'s declared bytes end, and a compressed record is never padded, so ' + + 'it fails the load.'); + at += zeros; + continue; + } + const word = at + 4 <= length ? view.getUint32(at, true) : 0; + check.file('framing', at, `The bytes at ${at} are no record's tag (they read as ${typeName(word)}): MATLAB ` + + 'fails the load, and nothing after them was checked.'); + break; + } + if (length - at < 8) { + check.file('framing', at, `The file ends ${length - at} byte(s) into a record's tag: MATLAB fails the load.`); + break; + } + const type = view.getUint32(at, true); + const n = view.getUint32(at + 4, true); + if (at + 8 + n > length) { + check.file('framing', at, `The record at byte ${at} declares ${n} bytes, and the file holds ${length - at - 8} ` + + 'after its tag: it is cut short, and MATLAB fails the load.'); + break; + } + if (type === MI_MATRIX) { + records.push(plainRecord(check, file, at, n)); + } else if (type === MI_COMPRESSED) { + records.push(compressedRecord(check, bytes.subarray(at + 8, at + 8 + n), at)); + } else { + check.file('top-level-type', at, `The record at byte ${at} is a data element of ${typeName(type)}: a variable is ` + + 'stored as an miMATRIX or an miCOMPRESSED, and MATLAB fails the load on anything else.'); + } + at += 8 + n; + } + return records; +} + +function zeroRun(bytes: Uint8Array, at: number): number { + let end = at; + while (end < bytes.byteLength && bytes[end] === 0) end++; + return end - at; +} + +function isRecordType(word: number): boolean { + return word === MI_MATRIX || word === MI_COMPRESSED; +} + +function typeName(type: number): string { + return TYPE_NAMES[type] ?? `type ${type}`; +} + +function plainRecord(check: Check, file: Space, at: number, n: number): RecordInfo { + if (n === 0) { + check.file('empty-matrix', at, `The record at byte ${at} is an miMATRIX of 0 bytes: MATLAB fails the load. ` + + 'Only a matrix inside another may be empty.'); + return { at, name: null, subsystem: false }; + } + const info = topMatrix(check, file, at, at + 8, at + 8 + n); + if (n % 8 !== 0) { + check.file('framing', at, `The record at byte ${at} declares ${n} bytes, not a whole number of 8-byte words: ` + + 'a plain record ends padded to 8 bytes, so this one is missing its final pad, and MATLAB fails the load.', + info.name || undefined); + } + return info; +} + +/** + * A compressed record: one zlib stream (RFC 1950) that inflates to one miMATRIX and nothing + * else, and ends at the record's last byte. Its matrix is then checked in the inflated bytes. + */ +function compressedRecord(check: Check, payload: Uint8Array, at: number): RecordInfo { + const unread: RecordInfo = { at, name: null, subsystem: false }; + // Said once the record's name is known, if it can be, and ahead of what its matrix breaks. + const faults: string[] = []; + const fault = (text: string): void => { + faults.push(`The compressed record at byte ${at} ${text}.`); + }; + const first = check.out.length; + const done = (info: RecordInfo): RecordInfo => { + const said = faults.map((message) => { + const v: MatViolation = { code: 'compressed-wrapper', at, message }; + if (info.name) v.variable = info.name; + return v; + }); + check.out.splice(first, 0, ...said); + return info; + }; + const head = zlibHeaderFault(payload); + if (head) { + fault(`${head}: MATLAB inflates a record only as a zlib stream, and fails the load`); + return done(unread); + } + const ceiling = Math.min(check.inflateLeft, MAT_RECORD_INFLATE_CEILING); + let inflated: Uint8Array; + try { + inflated = inflateZlib(payload, ceiling); + } catch (err) { + if (err instanceof InflateCeilingError) { + if (ceiling < MAT_RECORD_INFLATE_CEILING) { + throw new OutOfBudget(at, `more than the ${check.maxInflated} bytes one check inflates`); + } + fault(`inflates to more than the ${MAT_RECORD_INFLATE_CEILING} bytes one record of a -v7 file can hold`); + return done(unread); + } + fault(`does not inflate (${reasonOf(err)}): MATLAB fails the load`); + return done(unread); + } + check.inflateLeft -= inflated.byteLength; + // The stream ends with the Adler-32 of what it inflates to, so a record whose last four + // bytes are that checksum ends where its stream does. Anything else is bytes after the + // stream, which MATLAB's record never has, or a checksum that is wrong. + const trailer = new DataView(payload.buffer, payload.byteOffset + payload.byteLength - 4, 4).getUint32(0, false); + if (trailer !== adler32(inflated)) { + fault('does not end with its zlib stream\'s checksum: bytes follow the stream inside the record, or the ' + + 'checksum is wrong. MATLAB writes a record as exactly its stream'); + } + if (inflated.byteLength < 8) { + fault(`inflates to ${inflated.byteLength} byte(s), fewer than one element's tag: MATLAB fails the load`); + return done(unread); + } + const view = new DataView(inflated.buffer, inflated.byteOffset, inflated.byteLength); + const type = view.getUint32(0, true); + const n = view.getUint32(4, true); + if (type === MI_COMPRESSED) { + fault('inflates to another compressed record: MATLAB never nests one, and fails the load'); + return done(unread); + } + if (type !== MI_MATRIX) { + fault(`inflates to a data element of ${typeName(type)}, where a record holds a matrix: MATLAB fails the load`); + return done(unread); + } + if (n === 0) { + check.file('empty-matrix', at, `The compressed record at byte ${at} holds an miMATRIX of 0 bytes: MATLAB fails ` + + 'the load. Only a matrix inside another may be empty.'); + return done(unread); + } + const held = inflated.byteLength - 8; + if (n > held) { + fault(`holds a matrix that declares ${n} bytes, and it inflates to ${held} after the matrix's tag: ` + + 'the matrix is cut short, and MATLAB fails the load'); + } else if (n < held) { + fault(`inflates to ${held - n} byte(s) after its matrix: MATLAB's record holds one matrix and nothing after it`); + } + return done(topMatrix(check, payloadSpace(view, at), at, 8, 8 + Math.min(n, held))); +} + +/** + * Why `payload` is not a zlib stream by its first two bytes, or null when it opens like one: + * compression method 8 (deflate) with a window of at most 32 KiB, a header check that holds, + * and no preset dictionary, which MATLAB does not supply. + */ +function zlibHeaderFault(payload: Uint8Array): string | null { + if (payload.byteLength < 6) { + return `holds ${payload.byteLength} byte(s), fewer than the smallest zlib stream`; + } + const cmf = payload[0]; + const flg = payload[1]; + if (cmf === 0x1f && flg === 0x8b) { + return 'is a gzip stream, not a zlib one'; + } + if ((cmf & 0x0f) !== 8 || cmf >> 4 > 7 || ((cmf << 8) | flg) % 31 !== 0) { + return `does not open with a zlib header (it opens ${hex2(cmf)} ${hex2(flg)}; raw deflate has none)`; + } + if (flg & 0x20) { + return 'is a zlib stream that needs a preset dictionary'; + } + return null; +} + +/** RFC 1950's checksum of `bytes`. */ +function adler32(bytes: Uint8Array): number { + let a = 1; + let b = 0; + const n = bytes.byteLength; + for (let i = 0; i < n;) { + // 5552 bytes is the most the sums take before they must be reduced to stay exact in 32 bits, + // and so certainly within a double. + const stop = Math.min(n, i + 5552); + for (; i < stop; i++) { + a += bytes[i]; + b += a; + } + a %= 65521; + b %= 65521; + } + return (b * 65536 + a) >>> 0; +} + +/** + * The tag of the sub-element at `o`, which has to end by `end`, or null when it does not, or + * when its small form declares more than the 4 bytes it can hold. Both are said here, so a + * caller that gets null stops reading the matrix and adds nothing. + */ +function readTag(check: Check, space: Space, o: number, end: number, what: string): Tag | null { + if (o + 8 > end) { + check.report('nbytes', space, o, `the matrix ends ${end - o} byte(s) into the tag of its ${what}, so its ` + + 'sub-elements do not fill it: MATLAB fails the load'); + return null; + } + const word = space.view.getUint32(o, true); + const small = word >>> 16; + if (small !== 0) { + // The small form: the count in the upper half of the first word, the data in the second. + if (small > 4) { + check.report('element', space, o, `the ${what} has a small tag declaring ${small} bytes, more than the 4 ` + + 'it holds: MATLAB fails the load'); + return null; + } + return { type: word & 0xffff, n: small, data: o + 4, next: o + 8 }; + } + const n = space.view.getUint32(o + 4, true); + // A matrix inside another is its tag and its declared bytes; a primitive is padded to 8. + const next = o + 8 + (word === MI_MATRIX ? n : align8(n)); + if (next > end) { + const size = word === MI_MATRIX || n % 8 === 0 ? `${n} bytes` : `${n} bytes, ${align8(n)} with its pad,`; + check.report('nbytes', space, o, `the ${what} declares ${size} and the matrix holding it has ` + + `${Math.max(0, end - o - 8)} left after its tag: MATLAB fails the load`); + return null; + } + return { type: word, n, data: o + 8, next }; +} + +function align8(n: number): number { + return n + ((8 - (n % 8)) % 8); +} + +/** A top-level record's matrix: checked, and what the placement rules need of it. */ +function topMatrix(check: Check, space: Space, at: number, start: number, end: number): RecordInfo { + const info: RecordInfo = { at, name: null, subsystem: false }; + check.spend(space, start); + const head = readHeader(check, space, start, end); + if (!head) { + return info; + } + info.name = recordName(check, at, head.name); + const stream = info.name === '' ? subsystemStream(space, head, end) : null; + info.subsystem = stream !== null; + const p = classBody(check, space, head, end, 0); + if (p !== null) { + fillsExactly(check, space, p, end); + } + if (stream !== null) { + checkSubsystem(check, space, stream.start, stream.end); + } + return info; +} + +/** + * A variable's name, having said what is wrong with it: '' for none, and for bytes that are + * not UTF-8 the name as far as it reads, so the violation can still say whose it is. + */ +function recordName(check: Check, at: number, bytes: Uint8Array): string { + if (bytes.byteLength === 0) { + return ''; + } + let name: string; + try { + name = strictUtf8.decode(bytes); + } catch { + name = looseUtf8.decode(bytes); + check.variable = name; + check.file('name', at, `The variable name at byte ${at} is not valid UTF-8 (bytes ${Array.from(bytes, hex2).join(' ')}): ` + + 'MATLAB crashes reading it, in `load` and in `whos -file` alike.', name); + return name; + } + check.variable = name; + if (!IDENTIFIER.test(name)) { + check.file('name', at, `The variable name "${name}" at byte ${at} is not a MATLAB identifier (a letter, then ` + + 'letters, digits and underscores): `S = load(f)` fails on it, and `load(f)` leaves it out.', name); + } else if (KEYWORDS.has(name)) { + check.file('name', at, `The variable name "${name}" at byte ${at} is a MATLAB keyword: MATLAB loads it as ` + + `"${name}_", with a warning.`, name); + } + return name; +} + +/** + * Everything before a matrix's class's own sub-elements: the array flags, the dimensions + * (which an opaque has none of), the name. Null, having said why, when they are not there to + * read as MATLAB reads them. + */ +function readHeader(check: Check, space: Space, start: number, end: number): MatrixHead | null { + const view = space.view; + const flagsTag = readTag(check, space, start, end, 'array flags'); + if (!flagsTag) { + return null; + } + if (flagsTag.type !== MI_UINT32 || flagsTag.n !== 8) { + check.report('element', space, start, `the matrix's array flags are ${flagsTag.n} byte(s) of ${typeName(flagsTag.type)}, ` + + 'where MATLAB writes and reads two miUINT32 words: it fails the load'); + return null; + } + const flags = view.getUint32(flagsTag.data, true); + const cls = flags & 0xff; + if (cls < MX_CELL || cls > MX_OPAQUE) { + check.report('element', space, start, `the matrix's array class is ${cls}, which is no class MATLAB reads: ` + + 'it fails the load'); + return null; + } + let p = flagsTag.next; + const dims: number[] = []; + let numel = 1; + if (cls !== MX_OPAQUE) { + const dimsTag = readTag(check, space, p, end, 'dimensions'); + if (!dimsTag) { + return null; + } + if (dimsTag.type !== MI_INT32 || dimsTag.n % 4 !== 0 || dimsTag.n < 8) { + check.report('element', space, p, `the matrix's dimensions are ${dimsTag.n} byte(s) of ${typeName(dimsTag.type)}, ` + + 'where MATLAB writes and reads two or more miINT32 extents: it fails the load'); + return null; + } + for (let i = 0; i < dimsTag.n; i += 4) { + const extent = view.getInt32(dimsTag.data + i, true); + if (extent < 0) { + check.report('element', space, p, `the matrix's dimension ${i / 4 + 1} is ${extent}, which is no size: ` + + 'MATLAB fails the load'); + return null; + } + dims.push(extent); + numel *= extent; + } + p = dimsTag.next; + } + const nameTag = readTag(check, space, p, end, 'name'); + if (!nameTag) { + return null; + } + if (nameTag.type !== MI_INT8 && nameTag.type !== MI_UINT8) { + check.report('element', space, p, `the matrix's name is ${typeName(nameTag.type)}, where MATLAB writes an ` + + 'miINT8 one: it fails the load'); + return null; + } + const name = new Uint8Array(view.buffer, view.byteOffset + nameTag.data, nameTag.n); + return { cls, flags, dims, numel, name, p: nameTag.next }; +} + +/** A matrix inside another: a cell's member, a struct's field, an object's data. */ +function nestedMatrix(check: Check, space: Space, start: number, end: number, depth: number): void { + check.spend(space, start); + if (depth > MAX_NESTING) { + throw new OutOfBudget(space.fileAt(start), `a matrix nested more than ${MAX_NESTING} levels deep`); + } + const head = readHeader(check, space, start, end); + if (!head) { + return; + } + const p = classBody(check, space, head, end, depth); + if (p !== null) { + fillsExactly(check, space, p, end); + } +} + +/** A matrix whose class's sub-elements end at `p` holds nothing after them. */ +function fillsExactly(check: Check, space: Space, p: number, end: number): void { + if (p !== end) { + check.report('nbytes', space, p, `${end - p} byte(s) follow the matrix's last sub-element inside it: MATLAB reads ` + + 'a matrix as its sub-elements back to back, and they must fill it exactly'); + } +} + +/** + * The sub-elements a matrix of `head.cls` holds after its name, checked: where they end, or + * null when a fault already said means the rest cannot be read. + */ +function classBody(check: Check, space: Space, head: MatrixHead, end: number, depth: number): number | null { + const cls = head.cls; + switch (cls) { + case MX_CELL: + return members(check, space, head.p, end, head.numel, depth, 'cell member'); + case MX_STRUCT: + return structBody(check, space, head, head.p, end, depth); + case MX_OBJECT: { + const p = className(check, space, head.p, end); + return p === null ? null : structBody(check, space, head, p, end, depth); + } + case MX_CHAR: + return charBody(check, space, head, end); + case MX_SPARSE: + return sparseBody(check, space, head, end); + case MX_FUNCTION: + return members(check, space, head.p, end, head.numel, depth, 'function handle member'); + case MX_OPAQUE: { + const sub = className(check, space, head.p, end, 'subsystem name'); + const p = sub === null ? null : className(check, space, sub, end); + return p === null ? null : members(check, space, p, end, 1, depth, 'object data'); + } + default: + return head.flags & SPARSE_BIT ? sparseBody(check, space, head, end) : numericBody(check, space, head, end); + } +} + +/** + * `count` matrices back to back from `p`, each checked: a cell's members, a struct's fields + * (element by element, field by field), a function handle's parts, an object's data. + */ +function members(check: Check, space: Space, p: number, end: number, count: number, depth: number, what: string): number | null { + for (let i = 0; i < count; i++) { + if (p >= end) { + check.report('nbytes', space, p, `the matrix holds ${i} of the ${count} ${what}(s) it declares: MATLAB fails the load`); + return null; + } + const tag = readTag(check, space, p, end, `${what} ${i + 1}`); + if (!tag) { + return null; + } + if (tag.type !== MI_MATRIX) { + check.report('element', space, p, `${what} ${i + 1} is a data element of ${typeName(tag.type)}, where MATLAB ` + + 'reads only a matrix: it fails the load'); + return null; + } + // An empty matrix here is a member MATLAB reads as [], and has no sub-elements to check, + // but it is spent as one: a billion of them is still a billion reads. + if (tag.n > 0) { + nestedMatrix(check, space, tag.data, tag.next, depth + 1); + } else { + check.spend(space, p); + } + p = tag.next; + } + return p; +} + +/** An miINT8 name after a matrix's own: an object's class name, an opaque's subsystem name. */ +function className(check: Check, space: Space, p: number, end: number, what = 'class name'): number | null { + const tag = readTag(check, space, p, end, what); + if (!tag) { + return null; + } + if ((tag.type !== MI_INT8 && tag.type !== MI_UINT8) || tag.n === 0) { + check.report('element', space, p, `the object's ${what} is ${tag.n} byte(s) of ${typeName(tag.type)}, where MATLAB ` + + 'writes a name in miINT8: it fails the load'); + return null; + } + return tag.next; +} + +/** A struct's (or an object's) field-name length, its field names, then every field's value. */ +function structBody(check: Check, space: Space, head: MatrixHead, p: number, end: number, depth: number): number | null { + const widthTag = readTag(check, space, p, end, 'field-name length'); + if (!widthTag) { + return null; + } + if (widthTag.type !== MI_INT32 || widthTag.n !== 4) { + check.report('element', space, p, `the struct's field-name length is ${widthTag.n} byte(s) of ${typeName(widthTag.type)}, ` + + 'where MATLAB writes one miINT32: it fails the load'); + return null; + } + const width = space.view.getInt32(widthTag.data, true); + const namesTag = readTag(check, space, widthTag.next, end, 'field names'); + if (!namesTag) { + return null; + } + if (namesTag.type !== MI_INT8 && namesTag.type !== MI_UINT8) { + check.report('element', space, widthTag.next, `the struct's field names are ${typeName(namesTag.type)}, where MATLAB ` + + 'writes miINT8: it fails the load'); + return null; + } + if (width <= 0 && namesTag.n > 0) { + check.report('element', space, p, `the struct's field-name length is ${width}, with ${namesTag.n} byte(s) of names: ` + + 'MATLAB fails the load'); + return null; + } + // MATLAB counts the fields as the names' bytes over the length, whole names only. + const fields = width > 0 ? Math.floor(namesTag.n / width) : 0; + return members(check, space, namesTag.next, end, head.numel * fields, depth, 'field value'); +} + +/** + * A char array's data: miUTF8 holding as many UTF-16 units as the array's elements, miUTF16 + * of two bytes each, or miUINT16 below U+0100 (MATLAB keeps only the low byte of a unit above + * it, and fails on a surrogate). A complex char array MATLAB does not load at all. + */ +function charBody(check: Check, space: Space, head: MatrixHead, end: number): number | null { + const tag = readTag(check, space, head.p, end, 'char data'); + if (!tag) { + return null; + } + const numel = head.numel; + const view = space.view; + switch (tag.type) { + case MI_UTF8: { + let text: string | null = null; + try { + text = strictUtf8.decode(new Uint8Array(view.buffer, view.byteOffset + tag.data, tag.n)); + } catch { + check.report('char-type', space, head.p, 'the char array\'s miUTF8 data is not valid UTF-8'); + } + if (text !== null && text.length !== numel) { + check.report('utf8-count', space, head.p, `the char array's miUTF8 data is ${text.length} UTF-16 unit(s) of text, ` + + `and the array has ${numel} element(s): MATLAB fails the load`); + } + break; + } + case MI_UTF16: + if (tag.n !== 2 * numel) { + check.report('data-size', space, head.p, `the char array's miUTF16 data is ${tag.n} byte(s), and the array has ` + + `${numel} element(s) of 2 bytes each`); + } + break; + case MI_UINT16: + if (tag.n !== 2 * numel) { + check.report('data-size', space, head.p, `the char array's miUINT16 data is ${tag.n} byte(s), and the array has ` + + `${numel} element(s) of 2 bytes each`); + } + for (let o = tag.data; o + 2 <= tag.data + tag.n; o += 2) { + const unit = view.getUint16(o, true); + if (unit > 0xff) { + check.report('char-type', space, head.p, `the char array's miUINT16 data holds U+${unit.toString(16).toUpperCase().padStart(4, '0')}: ` + + 'MATLAB reads miUINT16 text one byte a character, keeping only the low byte of a unit above U+00FF ' + + 'and failing on a surrogate. Text beyond U+00FF is stored as miUTF8 or miUTF16'); + break; + } + } + break; + default: + check.report('char-type', space, head.p, `the char array's data is ${typeName(tag.type)}: MATLAB reads char data ` + + 'only as miUTF8, miUTF16 or miUINT16, and fails the load'); + } + let p = tag.next; + if (head.flags & COMPLEX_BIT) { + check.report('char-type', space, head.p, 'the char array is marked complex, and MATLAB loads a complex char array ' + + 'as nothing'); + const imag = readTag(check, space, p, end, 'imaginary char data'); + if (!imag) { + return null; + } + p = imag.next; + } + return p; +} + +/** + * A full numeric array's real part, and its imaginary part when it is complex. A double may be + * stored in any numeric type (MATLAB narrows integral doubles to the smallest that holds them); + * every other class only in its own. + */ +function numericBody(check: Check, space: Space, head: MatrixHead, end: number): number | null { + let p = head.p; + for (const part of head.flags & COMPLEX_BIT ? ['real part', 'imaginary part'] : ['data']) { + const tag = readTag(check, space, p, end, part); + if (!tag) { + return null; + } + checkNumbers(check, space, p, head, tag, part, head.numel); + p = tag.next; + } + return p; +} + +/** One numeric part's type and size, against its array's class and `count` elements. */ +function checkNumbers(check: Check, space: Space, o: number, head: MatrixHead, tag: Tag, part: string, count: number): void { + const logical = head.flags & LOGICAL_BIT && head.cls === MX_UINT8; + const what = logical ? 'logical' : head.cls === MX_SPARSE ? 'sparse' : CLASS_NAMES[head.cls]; + const width = WIDTH[tag.type]; + const own = OWN_TYPE[head.cls]; + if (own !== undefined && tag.type !== own) { + check.report('int-storage', space, o, `the ${what} array's ${part} is stored as ${typeName(tag.type)}, and MATLAB ` + + `stores a ${what} array only as ${typeName(own)}: only a double is ever stored in a narrower type`); + return; + } + if (width === undefined) { + check.report('element', space, o, `the ${what} array's ${part} is ${typeName(tag.type)}, which MATLAB does not ` + + 'read as numbers: it fails the load'); + return; + } + if (tag.n % width !== 0 || tag.n / width !== count) { + check.report('data-size', space, o, `the ${what} array's ${part} is ${tag.n} byte(s) of ${typeName(tag.type)}, and it ` + + `has ${count} element(s) of ${width} byte(s) each`); + } +} + +/** + * A sparse array: its row indices, its column starts (one per column and one more), its + * non-zeros, and their imaginary parts when it is complex. MATLAB has sparse arrays of double, + * single and logical class only. + */ +function sparseBody(check: Check, space: Space, head: MatrixHead, end: number): number | null { + const cls = head.cls; + const logical = (head.flags & LOGICAL_BIT) !== 0; + if (!(cls === MX_SPARSE || cls === MX_DOUBLE || cls === MX_SINGLE || (cls === MX_UINT8 && logical))) { + check.report('element', space, head.p, `the matrix is a sparse ${CLASS_NAMES[cls]} array, and MATLAB has sparse ` + + 'arrays of double, single and logical class only'); + } + if (head.dims.length !== 2) { + check.report('element', space, head.p, `the sparse array has ${head.dims.length} dimensions, and a sparse array has 2`); + } + const ir = readTag(check, space, head.p, end, 'row indices'); + if (!ir) { + return null; + } + const jc = readTag(check, space, ir.next, end, 'column starts'); + if (!jc) { + return null; + } + for (const [tag, o, part] of [[ir, head.p, 'row indices'], [jc, ir.next, 'column starts']] as const) { + if (tag.type !== MI_INT32) { + check.report('element', space, o, `the sparse array's ${part} are ${typeName(tag.type)}, where MATLAB writes ` + + 'miINT32'); + } + } + const nonZeros = ir.type === MI_INT32 ? ir.n / 4 : Math.floor(ir.n / (WIDTH[ir.type] ?? 1)); + if (jc.type === MI_INT32 && head.dims.length === 2 && jc.n !== 4 * (head.dims[1] + 1)) { + check.report('data-size', space, ir.next, `the sparse array's column starts are ${jc.n / 4} miINT32, and it has ` + + `${head.dims[1]} column(s), which take one more`); + } + let p = jc.next; + for (const part of head.flags & COMPLEX_BIT ? ['real non-zeros', 'imaginary non-zeros'] : ['non-zeros']) { + const tag = readTag(check, space, p, end, part); + if (!tag) { + return null; + } + checkNumbers(check, space, p, { ...head, cls: cls === MX_SPARSE && logical ? MX_UINT8 : cls }, tag, part, nonZeros); + p = tag.next; + } + return p; +} + +/** + * Where the subsystem data an unnamed record holds is, or null when it holds none: the data of + * a real uint8 array, opening as a MAT stream does (00 01 49 4D). Read without a word said, + * since `classBody` checks the same sub-element as the array's data. + */ +function subsystemStream(space: Space, head: MatrixHead, end: number): { start: number; end: number } | null { + const view = space.view; + if (head.cls !== MX_UINT8 || head.flags & (LOGICAL_BIT | COMPLEX_BIT | SPARSE_BIT) || head.p + 16 > end) { + return null; + } + const n = view.getUint32(head.p + 4, true); + const start = head.p + 8; + if (view.getUint32(head.p, true) !== MI_UINT8 || n < 8 || start + n > end) { + return null; + } + return STREAM_MAGIC.every((b, i) => view.getUint8(start + i) === b) ? { start, end: start + n } : null; +} + +/** + * The subsystem's stream, checked as MATLAB reads it when it loads an object: its 8-byte + * preamble, then matrices back to back to its last byte. The second half of the preamble's + * reserved word says the stream's tags are 32-bit, as in every file MATLAB was seen writing; + * a stream that says otherwise is not walked. + */ +function checkSubsystem(check: Check, space: Space, start: number, end: number): void { + if (space.view.getUint16(start + 4, true) !== 0) { + return; + } + check.inSubsystem = true; + try { + let o = start + 8; + while (o < end) { + const element = readTag(check, space, o, end, 'subsystem element'); + if (!element) { + return; + } + if (element.type !== MI_MATRIX) { + check.report('element', space, o, `the subsystem's stream holds a data element of ${typeName(element.type)}, ` + + 'where it holds only matrices'); + return; + } + if (element.n > 0) { + nestedMatrix(check, space, element.data, element.next, 1); + } else { + check.spend(space, o); + } + o = element.next; + } + } finally { + check.inSubsystem = false; + } +} + +/** + * The rules about where records are: the header's offset points at the subsystem, the + * subsystem is last, no other record is unnamed, no name is stored twice. + */ +function checkPlacement(check: Check, records: RecordInfo[], offset: number, length: number): void { + let subsystem = -1; + if (offset !== 0) { + const i = records.findIndex((r) => r.at === offset); + const record = records[i]; + const field = `Header bytes 116-123 give the subsystem's offset as ${offset}`; + const fails = 'MATLAB reads the objects in the file only from there, and fails the load'; + if (!record) { + check.file('subsystem-offset', 116, offset < 128 || offset >= length + ? `${field}, outside the file's records: ${fails}.` + : `${field}, where no record starts: ${fails}.`); + } else if (record.name === null) { + // The record there could not be read, which is said where it is. + } else if (record.name !== '') { + check.file('subsystem-offset', 116, `${field}, which is variable "${record.name}", not the subsystem: ${fails}.`); + } else if (!record.subsystem) { + check.file('subsystem-offset', 116, `${field}, an unnamed record that holds no subsystem data: ${fails}.`); + } else { + subsystem = i; + } + } else { + for (const r of records) { + if (r.subsystem) { + check.file('subsystem-offset', 116, `Header bytes 116-123 say the file has no subsystem, and the record at byte ` + + `${r.at} is one: MATLAB then reads none of the objects in the file, and fails the load.`); + } + } + } + if (subsystem >= 0) { + for (const r of records.slice(subsystem + 1)) { + const what = r.name ? `Variable "${r.name}"` : `The record at byte ${r.at}`; + check.file('subsystem-not-last', r.at, `${what} is stored after the subsystem (byte ${records[subsystem].at}): ` + + 'MATLAB stops reading variables at the subsystem, so `load` silently leaves it out.', r.name || undefined); + } + } + records.forEach((r, i) => { + if (r.name !== '' || i === subsystem) { + return; + } + const after = records.length - i - 1; + const what = r.subsystem + ? `The record at byte ${r.at} holds subsystem data, and the header's offset does not point at it` + : `The record at byte ${r.at} has no name`; + check.file('anonymous-record', r.at, `${what}: MATLAB stops reading variables at the first unnamed record, which ` + + 'is the subsystem\'s place' + + (after > 0 ? `, so \`load\` silently leaves out the ${after} record(s) after it.` : ', and leaves it out of `load`.')); + }); + const first = new Map(); + for (const r of records) { + if (!r.name) { + continue; + } + const seen = first.get(r.name); + if (seen === undefined) { + first.set(r.name, r.at); + } else { + check.file('duplicate-name', r.at, `Variable "${r.name}" is stored again at byte ${r.at} (first at byte ${seen}): ` + + 'MATLAB loads both, `load(f)` keeping the last and `load(f, name)` the first.', r.name); + } + } +} diff --git a/test/fixtures/mat-check/added-variable-after-subsystem.mat b/test/fixtures/mat-check/added-variable-after-subsystem.mat new file mode 100644 index 0000000000000000000000000000000000000000..ae69acfdd313c2201607d3f08071410260b6e893 GIT binary patch literal 1721 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/added-variable-no-subsystem.mat b/test/fixtures/mat-check/added-variable-no-subsystem.mat new file mode 100644 index 0000000000000000000000000000000000000000..a51af8ec6f560589fc62f7099c7bfa96da6a8bae GIT binary patch literal 266 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X01nwjV*I2WZRmZYXAe~Ol;HrOIUE3goGrWn literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/added-variable-stale-offset.mat b/test/fixtures/mat-check/added-variable-stale-offset.mat new file mode 100644 index 0000000000000000000000000000000000000000..046abd7e72b129d7e566620294adf16e24581141 GIT binary patch literal 1721 zcma)&dpOg39LIk%o7=*1DXY}v&Zf;}xg55+uiPqij>3%1D5Xfp+zv9L4w?xyoLovB zDpcwr2{E?`r|5o4ZK%0zV!52N9Uad(=a2K8&-1*W_vib4p7-l{KOawmuLr>qVP%F! zcoKY3q2Uo!B*G_xd?GY5>WHo6&xwGwL?WD`sN@q=3L^5TEy6d3itr9OfiOoSFqXFF z=C&4S$!?BC{NEXp0agb@^i+{-CKAQ6M?->wjsd|~1TT3I(W3alVjEc%r{8RCgE6c< zt=^phY>@+k>SVu>CXj21n}1KpU@TbB%*u8eFCPdu_}NHT-2x0)=E$6pW=z*I=sz<+ z@Or3x5MvgeQV933!06G?XnBC1N$i3FTU}+sr4i4y$OzCLf$s&id%#qs)mky?PRAA8 z*^Csp33M=z(~`@Qtq>=V09~80Y#ts^&wX^-WvkNqM5Ox{+2khXuUTrqcn73R3f;8^ z4g1=IAn8E~3O2&Z4j^I8+?9uCeXJhoyA;vKVXy@J9XX~$V3osuqtbN|P+1GSSWT4| zV4!EC1qCoqp|w)v-ZkXdKam_1@D~z~aX@%+`%Q_xy}M8*PlcYyMxtnDE3YpNqNBsCa_byDC<(H?8)f4AkVp?$1CE@I-E%!6yp zLeT12Qzd7W*EBVANAB!}%=l>~6fd75ymQ2FW)~g2kXKYtvjJdwqll=~u~Bfaik>j` z60g=#9N|+Bzw{2#ESp9zP#|VQOymI5gmo^;61JNfy2Jp;*EdMwV2PwI{UcK- zREoqEB+`;-b*6D&7yPQr;Cs7Bb%N>^64%QyHN;6z)v>Hx+48aeITTAn zhrl~$RxP;gCr+RVUb!e}Qg?QlyZ+^cWC*YXOEMTeD~n? zQAt{rlaJ4f8aX%8I&tn;tz-A<%ctX^4mH~cHdI@4R$>n&H0E5c`<&e!jY&*hf+%_A z(r*4{H;X;5ZM2fryOb!eYrJHZ=C8=h>_@7lsBDS=YFcs%r|-eu+6#k~51NO~T2(=o zQ#$9JZ>caXR3^&$msNM`tiOHFf8GvcS%$AOyFo|7$X3}hRaS=%RzGR$9j?yd7PjlX zi`t8I9(KdswmzGh1TCc0xM~GkWLw8=%xY^bP9N(mnU1%Mc}=d}kiu=b;A&o7i~eas zu#)^Bv$jb4p?-B-DnlgrGLkC)w9T@kFTkuatl?g%t76QSI~7{6_$ux;*U2C!pC1GS z`>^{$7mZe}C|FTP|LyK8>%`{vAVP!1GO-G}c4M!#<;qij5LjTxhz zrz*Cw+;{*xn3H>b3Zff$A2;@SVx$1k_!`u^Y^W2UdCK6HuRWL_yjVKfwt-{ce1kt{ zb_9~CwpgalaX2CyhW3X&#~b@j>70EtCAxcI@fDLiRYE2aYUV#N@A4HUUqD9V!$%6D zKJ_KBA<-*rq<4CTW@B+ZcRW_EvejnsNuMZ3sm9ym`3&#vPPl(r!>PODGsMM@b&}gRCr5QjRHy?Pj03!_$hhE#fkJzlvrOz;VM3=Gp7$jSFSUL zL$1zL;5^z%*}M1ei6Q0V5<_zzykX3IJpO!^Ht+Vj84AZuqE>Kik?;k&Qe@7K54iOD z%%%NV4Z<;l8JyCUQNiLPaOF_IwrHZaaeTnm-BFRhXAGW6Nbh(#;dY$VNx#d(WdHyG literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/char-ascii-utf16.mat b/test/fixtures/mat-check/char-ascii-utf16.mat new file mode 100644 index 0000000000000000000000000000000000000000..b6487178ce5d37354d9d1d3fc438505eef9610f0 GIT binary patch literal 200 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X01nwjV*I2WZRmZYXAV7dXV0ysXFQNx)>M$?!X~^ literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/char-cjk-utf16.mat b/test/fixtures/mat-check/char-cjk-utf16.mat new file mode 100644 index 0000000000000000000000000000000000000000..617363fbbad295e10c67a75eaf83f3a1f7e23d92 GIT binary patch literal 208 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X01nwjV*I2WZRmZYXAGQf67ytt!B4z*p literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/char-cjk-utf32.mat b/test/fixtures/mat-check/char-cjk-utf32.mat new file mode 100644 index 0000000000000000000000000000000000000000..8f08f71e73f1e113d06ee09d87abb9e164a1dd79 GIT binary patch literal 216 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X01nwjV*I2WZRmZYXA9aX&UaXo25(EMOITaPU&&rH1H8cZq!EzvVi43+k815x8008~fA`bun literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/char-emoji-utf16.mat b/test/fixtures/mat-check/char-emoji-utf16.mat new file mode 100644 index 0000000000000000000000000000000000000000..0b80f37dfe564d247711ff998553de57641ff866 GIT binary patch literal 208 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X01nwjV*I2WZRmZYXAPU&&rH1ElINg@&$kxq&M-y{22{N3=9AiCL?(O literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/char-every-encoding.mat b/test/fixtures/mat-check/char-every-encoding.mat new file mode 100644 index 0000000000000000000000000000000000000000..0e3df26ad148bd3eb3b326bc6c31a5e67d4ae881 GIT binary patch literal 1440 zcmb7@%TB^T6owD+evKL*U>*Ps6l@HMiO5D1i7Z&SBLxcu3r$GbyY>ZiVQ}R_<6HO= zuG~Rn=gPI`@65<0A#D#i>CDi6^Phjt6!YcF{Fyj9Oo?K?d{A$?c2bmF%ddOgc8=Ey zc{7_7g|2P+_Kom5IZ^J};;QBgBPG(=oMGfLDIOc9h#I6LaZ%jn@hRsr=PKtSCt`^c z^91LDdam%Z=2Uuq{g`&tx>c?5h$s#Rdx4WS<$jo3R3(t&aG+1>Nt?Sop5>gYwXnLz zoQ$!@-)wSPoK;R)ozxY^gJXjwP+)83leppY!qRx}M~fc#gGs`ZRBi-%&hR z76i@-`#3Zrmw${50{%tiZt%PRIu#i{&f{M5e^K;KaWe*gMFd~>IUUXsr>ioKZrz89 zUu)ft4Mso0r{TlP@ag^gtXhcM*8?~Wdw>Vj+-S%2d?I`?2-PX_Z;~igwI6S3O@nqfD p3w>_U$tQhPWAU)}q&^Vg<18=CM_unM4^C^MN!7000YOA+7)b literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/char-latin1-utf8.mat b/test/fixtures/mat-check/char-latin1-utf8.mat new file mode 100644 index 0000000000000000000000000000000000000000..c1d42caddba3c8fb20bf87352d357de9f436e05b GIT binary patch literal 208 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X01nwjV*I2WZRmZYXA)_P8PA literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/deleted-every-object-variable.mat b/test/fixtures/mat-check/deleted-every-object-variable.mat new file mode 100644 index 0000000000000000000000000000000000000000..a30241b6508459b6456ce60b97bb3f8682834b7b GIT binary patch literal 1276 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X01nwjV*I2WZRmZYXAnGlgdj zmlO_gJvCNJ6tGv_XJKimzOh62R6BzlJ43=I7D12>9k`AS$U2w|ji<16Eg zwD`ic++aA8<8X%Yh!2kd$Z3ZRg`EpIJ?6AFN@}rPntbBGgefdbem2}-I4NT`=a~b8 z@PwlsuJYVswK^WZSQ_?By3!@Y@bVbzB9NhN%pl*sjj+xab`+3{Kj-JvlwPEFC&)cnagf_9^d}@R`>ay zIW8iSnR)4D&u7oAeIF;u(6^dF)hB&Iy5hn`m$*;3UsX{pn!?xmmG{!=FNPod_~MEu zz2`g4bt-M~wwo8~>Oz9-LsR1=mcF|%?aS^H>syZ7dzeWS?A*NgLp7V-TK$XSYb;Lu ztH`R^-M?(px4u)whP6$9Sh@Wsq;Gg&{mE>atj52tGkpZU`)W|QL z!?5;1|BMeic^=w+PU4F;%J^iug7t6X@$W8M_$L|jzgl$uuRx%p*w&pf->n%<7CCIv zTVJWelW5w>k(ham7!zFG`W>UNxyycCx@vOB1OmvrGLG*1cy{ zj@xVh;@hhm(-n5#V?6U$T`^X)S#3**E%WoF-}B!c7C<Z~gPHdbzBfLcbRYpRmhi z$uNlFx#gf4@?Np${`)UGX8pc9De?Wh#CXTG-``By@tpJBZPv%tnKz~vy*XPqhqd_M z93B6*cG2B)H=lc1!M^m6#T*7UlnMztmmRcI?h8_rmz&m8(wP zY5)9cx6ZjZ^~%4$*^;x2vLwA8xl+ykx>X?M_DS`A|tF2P!w5~u!KlJ&;o`aU;|W! zqGbpO$bpFL5kRmCF03L6pkXD5DWfH|<=X%H+&y>Cy?39_^S$SF#d*5mY~iMcD7Y)m z6B!Z~PDH>x!UJMLBBIV(?7Z3GFeV7NT@*1Oh8PTwIA;O(j3vU|gJR%DC^*{0!pO+N z7_~DSVc`F_E(!x*O9<~Ovoq=MbR1(Q$lw1w5Qu@ZQYPS?60^n!0%WmT9cJceo%+l2 zLm9w+QNX`J5T^aJu7%~#RuHWVEpHbo?#!U3 z!t@~%c>|rfbdd^v$`mlDf?=?10QubB%MNOidy){&zl)@_(|*m81Lpg{WdiAuU1{jw zIdD5Ug8c(^F(Ts#XvgUGxUoa}zWsGBV%$WBw%wya#*QN^F>iJuhuw7c00pf0Ty49NZk&~hQ=lGJaOO-K$nJ=4^R zqDxcPq$Y-W=w&x)zi8T$^svNGNO|*%C&|g4$FL`e1m()bC)asx19fTrSZ9p#`PRnr zQ>SU$?(6Lo=3HC>z_7J*vK^snuuQ zQplvtropg|jDQB1W(!xDp7ySO*3F!(&KWK2(R?3u9AiJ}gl#grN=b$k2G=+$2O4La z#qZ7P?kY~7>n~YOu#BA!s8>oI?Y!Y=R9%nyae=d)@+h;uNcFK+bv%X2X^TJdC zylq;Dxuv7-t9VKKzNZz49k@}t*sU~R)ltV@Gdv5QvTvEUK zc8T}k#>N|3z*0#70avsBiS~dkzW53}lMpsl5cO#!nE{U8W+2?tGZfp38%O8kL@T?@ zH=d2~awKcqU0$xR-W`Vdl(k%XFu#J|_&7fl{H0etc^29p^v*zIbFjf}?5PZE^Ny}> zsqF<7@)s{j_xO08W=x6MEhM($qdaZ-3}m~OIvI3lr2^~HL&!dQ@>nb(ADa}C`{*ro z5#WJMCXk-PuEll=f7p=yRmVr zelEJ}<7xIw+OE9hiQta%PhU9PSBnRe-ae{b8En%*C%*PO!8kPD0Rk1Qs}c7x`MGnf SiwfNK(hpdPal&b=km{duaiR1B38{ bqaCjD++wvl9=})`_Ds6cCB*RZ80#Vcs@G`} literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/deleted-one-of-two-handles.mat b/test/fixtures/mat-check/deleted-one-of-two-handles.mat new file mode 100644 index 0000000000000000000000000000000000000000..a2640859aa55d6d35db4f13d66bc22138161086b GIT binary patch literal 565 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X01nwjV*I2WZRmZYXAhSD4_wQg&fGMNvPtTQdJUlfH+t?@B#jUUl)0oej!^UFl@KZ?O zS*)6hrGzwta4%Z~$Vg?lkp^HR8!jmv;CgC&$WYmtbwV1`W(f%f@jna?uqkCo5(C=a z`bqNPjEM_{Jh&Y)8KgKEQ$b2ufDVT^bjQI%2M(|;v22(znUN`CVU3$Y+(D*=jt!ir z(i6UXVg2~i;njpM#)%jC4+|8EZIDq8>0Q6M-r&p}<})0{EDK*rJ~ZKu(Cs+SeI#$D z<;sVyovf@YT|a&d_{;0@OYocHk2e|b7*<|SIP&(re8#Jp3zBpKwy_GhJA7nPuwy*J zzu*U}K)dR*Da(vlM4qZItulDP;Il(z0)w)cow8V=n#t!2R}GT{l~dlctJuj4@qV(_ zxpQN|qaBZC3v2N)%D>UPeEtE$rTtBe9*R>kU_%0XCK) z$&rmCAtfP6!;I;o4$r=G{|@#9m>yMiomu&kho{D28~Y@?xD|F`8uNK`*jS7mehLXZ zi&ayxl#pgH@?_f#GEx@ka)?U<5>gWqm@mmVoH@zBxF*0(S)e|l@q)qumZ!!BRlk~k z)Hui-Xu5E|#nqn2`AFn}BA`tm3k`}bCY%v$S(V;$Stntuf}Os=?$l>X+Qe1GM3#sh zJ?{Kk;QoaiSP&3Ur literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/deleted-shared-handle-copy.mat b/test/fixtures/mat-check/deleted-shared-handle-copy.mat new file mode 100644 index 0000000000000000000000000000000000000000..3cd5511c86d3566059518dc23f5ad561dfaabce8 GIT binary patch literal 512 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X01nwjV*I2WZRmZYXAB|pfX#sJ?oX5!t2?Y#EW(v<5 zE-4(~dTOkcC}6L;&%)ABePf64sdffAc7}vaEP@~%+Hf5PU>yueVr(1*xm7;rFDc6y%VVUTxY$^>cgg=@LNa3sg!4C4_W9s!UwhYW?C3pqXJv^Gj=v0a*c z;=qI{EK7bi++a8aiR1B38{qaCjD++wvl9=})`_Ds6cCB*RZ80#XCq26#qGobEp z1iB+7AxXoG<)RMHzH|Q$_5_$7Rdt#YZZx`UPr!{1FlBW8>A6x4pKH@J*ch~C zvrPh-84Wjc1|uX`n}ET}A*!wCq2qOi^<$(&&D_7uj*pxiWai9_o;7*q^tIv)ll*l( zb(>y1W=`T)`CPH^*+!?IIRTp`7d}$h$I?H0H9iL6qTl02n_P0`fU{K+}x zC-avnKiLf)-~Rem_xYYVE+UeddFf@(XV0yDA1BGsx0*rKCw)S?;=)CjxKFrWRZ%UP z!q@th_tNPvh9CU+;)*A|=R3`HDsAz$n-}WpLW1l=Q{yF;zPm8(%kC5FTaMd%m`N1u z+`RZhHJja9{fpvjEKdBZ$g0`hziiXDzEj19wM~Cmx&0=jZ+Kw+$!wae#=ovJe`-0D zHUH?f#Be?9Jg+0v$S6R;)^!Q_++|*^>5?x?=D;TCmHjeyzataXz}GVZgelIl8qXl~n!Ki z>3Vwmy3;xCo=f`MZ8Ia@b}wfNs09sjm=(cN=5pLDn)OEj;N%Hru~-t=E%Req3Vjb0oemFf6DveyV+K+Jyc0TR*-oy!9#lyZgO;Y?Aix zbpP2O&X@dA$(`SC{?xv0bLXG1uI-;+sC~5OUjF#)@1x91FUKksd-`iu$I1s5<^ONL z)Lqkd?9MCq!uaErt4`i&|NLsV&bc`C%D=zaUmCr={8cu-z~=c>zvqsh;(Ro|Uupq^`t!`LzCoXi3`Ne(A%+tTir%IpsIpM{#dXdk2 P=0CCLx)`5j&nOE3j(4t= literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/double-integer-storage-types-compressed.mat b/test/fixtures/mat-check/double-integer-storage-types-compressed.mat new file mode 100644 index 0000000000000000000000000000000000000000..c0175affee14272282bf9b8aef0494a26ffb504a GIT binary patch literal 456 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X01nwjV*I2WZRmZYXAIM!q%C3Y`Mx)hD<+&X$cLD{NDoFm|GqdFfdFw#S#P3s|(lr0h``*DQU-> zHUWidE2IP%7((lq^g)`m;hGAtYntVF^u~clJ_%+Fj$4=%L0WWhYe{2#bmm78_XHbZ zpE;e9YvdU0&NKc5=`n}v!Q!u{DE|6=@Jgc+yMgY%i;N5_wz3O>v}?k(qqtHjaY964 WjaLxggl8?MoEiF=8N6;Y-2?yyPmFp1 literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/double-integer-storage-types.mat b/test/fixtures/mat-check/double-integer-storage-types.mat new file mode 100644 index 0000000000000000000000000000000000000000..55927277e3c60f9af89d266f95dea87fab6cbf72 GIT binary patch literal 600 zcmb7B%L>9k3~YT-LA>fQA5f*PTBH}Z_M%|XL+|3FLZMZt_51Xb^bef$As$5Rz%WV3 zPIj}d?JeyYjr#_?{9?;8vS z`gukRtz)b)SW$ zq58%S;ZyAla_kHVn^*)vI&|PVHX!R@GBlpT*17aZ`m?DFnQ99(l!c9%8BF?_xmFO+5*<42yQL`-60ex6ET0coXoH29Zl`}1k;#&XYxfuL@a3+J4Yr~a8 z3};C4Q)4p#sc)Pi2{ix75@QC>G=9P;c zNl^teVP<7xW@ck%?g?L?+cW5DFvnuIOAO*Ph*c`-1_m4qm7Sg^c^Kr~m@+|HjNx{D z0Q;RG394mbj>OzKg7c?yEMaY&!QEjj5oh#-A<-^Go}rP8RS%@q1g^CJRV&aoujVT% z=||MlQ;iKcoPPQTmtJ~aYG}Z~khF^RJ4i1gve5J{OzH`!D{`yJ%Bu@orZ8pxiG=Fr zhjBv847s*!ogkema9a(KqWLg`GPALBRvsg>@DzRq1zyG#AhoJk)iyI23m7w<)M8F% zQ(GayAmaiFbzivR8w^Ks9L_Kv@!=5wrPD)(!p?=99&=h7CAHWtO+Im8!W5PzKO1f^ zoRl$}^UQ%kc*4;RS9xx+S{;vHEDd`mUFi~HczKL<5y%COxD0hVD$$rysN^w+Rp&TI zXfR{wdG;f09?v!;8nU-Z9!N84y7}Y<^GNW| z!&Bq1jd4PcsjlVEPHa0Z@-lxWnhM?dqbkvKP!>Gd+c)a;YdebJ$#)t++HoF_nl6(xC&oi$E E06))Pg#Z8m literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/duplicate-name-later-copy.mat b/test/fixtures/mat-check/duplicate-name-later-copy.mat new file mode 100644 index 0000000000000000000000000000000000000000..96decfd679a91b591598fbf7ec65771663b20063 GIT binary patch literal 1187 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X01nwjV*I2WZRmZYXAW^ z39XwX8)tC(7#pTUIlQ?4hKGkiPL_!eq*@)W8savFq&hZ^gw{`z4`<9=c;!q>qqx>T zc`gROADqb`<=SxN5W^Xg{M6VCKs_nR~+5=k^S`8qBfS?Gl4H4Puo_x`6=)LuIGu zNgf7yH>OOG7GtR>WbWI zvhwP}mMKh`e+@Kv$ z*YyBh*L5VF4U{5Q^6=C+Y-5~MWv25=a^jgprcDkxCAB&hZyOmH71l4YnXmDCM!=io zqy#o8J_a=xmRyjLHgF?PK;tirk&R7FfcL4fqai3b3mx@h<}m881s-oclHRn*vN588 zk9*R>jPK&0&FZp zk|P^O0!xybf}UB^$4H5qxqq7_7iM*PcNu-YBq{NuA%|b(@1B6aYXa<~ujsg~u;|cd zOuU!sG^sg}!EPtpE|8hta5FQI%uGp0(lBGXsKc}G+`of80j5V)U1wIlX+Qe1GM3#shJ?{Kk;QoaiSVcYFB literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/final-pad-cut-size-fixed.mat b/test/fixtures/mat-check/final-pad-cut-size-fixed.mat new file mode 100644 index 0000000000000000000000000000000000000000..7e20e0a3daaa32bed40e20f76f80d921f5129cd8 GIT binary patch literal 1133 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X01nwjV*I2WZRmZYXAYgw{=xjWalXj15zw9A4ai!^6WMC(FbKQmqbG4Y7eC zsg8{!q4ksG!x=LdUOCg!D6aKSo{Pcn2WK)!xi(xm#BhcrKQ%T3kov|Ml0fsHEHP&A zOjDRWk&!{>F{2wuiy>SK)P{=+OdJslYupslm@fP9oD@|s6J}O6W@a{K=AQ8Nxjlof z26HTSyTl+)gIJ}KZeYN{P}%8ul7~UwjVTkP#Taha2e986lAu}^=19z)BRGFL#}d}Y z8QdMl5^+XP7!vJ5dSoJ_!P2gG!P_+VW^J>1Ll72)zJ=NHN!|A7gaOtJzrG^F! z3`wh4zk~D|;nKS>sVAVW$gL(TuP$tv!j$bDhL^`!7lB;hh|5r?qY{lNg-RZCSaptbga$K)o@YP8=J9Mpq9J>m+eQXPh4o8p=4a4NWV5^BEXl{P`8@M#KA?UVAZ7z%4k!(z7+9fvMj*`$ c#2^|ZmJ*+vSpjA90O|igpaYaF5M*Qk02WhB0RR91 literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/final-pad-cut.mat b/test/fixtures/mat-check/final-pad-cut.mat new file mode 100644 index 0000000000000000000000000000000000000000..999c99c5a138fe773c16e37e95ebce13327f4af3 GIT binary patch literal 1133 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X01nwjV*I2WZRmZYXAYgw{=xjWalXj15zw9A4ai!^6WMC(FbKQmqbG4Y7eC zsg8{!q4ksG!x=LdUOCg!D6aKSo{Pcn2WK)!xi(xm#BhcrKQ%T3kov|Ml0fsHEHP&A zOjDRWk&!{>F{2wuiy>SK)P{=+OdJslYupslm@fP9oD@|s6J}O6W@a{K=AQ8Nxjlof z26HTSyTl+)gIJ}KZeYN{P}%8ul7~UwjVTkP#Taha2e986lAu}^=19z)BRGFL#}d}Y z8QdMl5^+XP7!vJ5dSoJ_!P2gG!P_+VW^J>1Ll72)zJ=NHN!|A7gaOtJzrG^F! z3`wh4zk~D|;nKS>sVAVW$gL(TuP$tv!j$bDhL^`!7lB;hh|5r?qY{lNg-RZCSaptbga$K)o@YP8=J9Mpq9J>m+eQXPh4o8p=4a4NWV5^BEXl{P`8@M#KA?UNAZ7z%4k!(z7+9fvMj*`$ c#2^|ZmJ*+vSpjA90O|igpaYaF5M*Qk02gyi1poj5 literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/header-only-offset-spaces.mat b/test/fixtures/mat-check/header-only-offset-spaces.mat new file mode 100644 index 0000000000000000000000000000000000000000..7de280e92b71c7587da7bb06d9e071a7f4ac85a2 GIT binary patch literal 128 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X01nwjV*I2WZRmZYXA0=LL-VcSc6tO zM^V&6Rh@A~v6f!CRwZbINR-U6$<}$c{jopyKF|9+??0c<_w#(87XbeMGb!|WCJ5sp zz5CSPy$RIWkf5OR0M0_4nKq%`B|c|*Fjxky-Dzos(rvgTHcuk)fk>Sn5t?$QV8AR-=(2z@*kg?UU;x}csAv#z6`o!UcQ-|8;f;+& z0YVOD5C*8Z2t^7Ik3D1>=#8=)0rk4WWCUs5C^^R%F*hnP9j*_ZD4=)cQ-mw|Y16=< zvIUiC2gv33U2;~F*q4HI`&BrtgZy)@EU?fIp$Vi%_oNY@JM4EmLW6J!3*m7jtdp_x z_=>lApSE)eVF3n9wrdd~+XhzKoYZX;6Fmgj48G&$o zm6A)hFWSFzuv4a%_+2k3DXLWj$XvnSeD4Jq;(_ROnBHSA_z zelni@+F48??8p#BPfw38M&W~b6uyY@?8`N_A*+MxBoB}L27iHdqcmkX5Dt)j0<_)n z`FM?+vr*Z5Sc(*JO>$zGhg$KJ3XCH!OAU(;g;%sZf0CN&a~yp#469VN^yC_^ zonD_gfOfM`I^Wh*v62L}tvxiZSYt`wNjQ_-o_DM96KN<8m6EXqk?_pN-}}XS)#928 zVkdWGD@9aOZ_6mtU!0jUhLla0J`e@ecI6eXw87rmaB)(8CK0RV)sXGCka)XpYf}C+A}g$lgB9T)p{3u!oq3F72Rxk zB_kDD99rw5gfk^sChpJe=`PKhA1GT%vW}k#Zct2TbX|8bscA6&VUfL)_9&;JMCGw| zO=1R-$NqIXL-bjXS^sE&QB_21Te*vPylP9O5-h2janNNc$kF>dw!KZnL$0%Yw^A&u zq<^e==(Z%^cGboa>r~dnbG3?}<|ZgB^wT{_DjZ7TGQ!B0ANrL~6#48ujPr17-EfpE zri#>E1Z#&AE8=5Z=L$xtcdKBq4o%O6WqjQiP*-e@p-S(Vt zgt0&Dg`J+yvc{D+%e)8IH(!&3m&<~&_O`E-<*CsFI={({4Ndj#%JYrXhjfrHunurL(5(Wj9*2kQuVYoNI` z*yuSnDb3uvg9s>hxS&kf@RjgNOyp^OTV{F75MB8}j=XXfx>HA-3c16nM7#H5Nyknd zkH;3GQ^NBfy&-Zw#JpI=ue;84LgDBo!yR-_G<<^~5uJB<4xQDMvvn%Bl{>G)K}+18 zWpDO@t0n^u#$mklk^@J#jfXtN+!aYYcXPaCh)kHg~Zd$q3XXY;TGzn6M|; zRIum2WEFa{>{kQb5$ofbPRlwTywr)%&Wev4Z0^gYLn&__)o}*fby3N$0#8y8k9UH> cMeAx|2S)h$^UUw%xgF*2(c??=1nP@&Et; literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/header-text-no-matlab-prefix.mat b/test/fixtures/mat-check/header-text-no-matlab-prefix.mat new file mode 100644 index 0000000000000000000000000000000000000000..a7b9260c3967669990879639b64b64be032c466d GIT binary patch literal 1633 zcmcJNXH?T?6o>y15>^;x2vLwA8xkZe;ZR7zjj;f$0Cc&FH$(IG!+ zv_^-SIZCVkvg}|ca8MZVZ4mm3Mq5!eM2b36NvSYh$V5K9Gmj!v!A+S429!*x3=ANf*L&GcMSNcp!tqz3ly>sZ*)qUF zADG6I9^*?x{>*{h%Ms}7uWc$cj(~QI?moHdX40!+S4>=hLK88~!elF-Dy!4lWfEZ! zAtMY|Mw;QRscx-z;^;7V)k86{Wakq0y){OOTI_ivzqqhQ0U)~~amcj! zS&+Y!Iy>$bqu!bu=GF+i^&Z|Kluj%Z#pQr?g#o=p2|L~w86e(CvA(qkm&HmS#E-gI zrv=!kOIy>*C5@kITtiaiRI!X}`qiu^4{joX^~O$AKIrHmMMp=6D@x&lI25k1!R)Jb z7LwUcwUvW~en+^#yjha8>;nUGegZU{2zdn6TeJyry2CSdjVOvFXjk@Sfs zFG~)I4F;Dtzj&IQ?0y1$DhRJwx%Bipr;T2h-j8-PRg7qDEMG~0Sk)XJSEx3l@5Y@? zY|Fjf@HuBN8kLl`4HkFFBi#SRV$Jlrvi5HF@OF}jn$EU2% z%H*tP^|S8bsp{O(q8|14Q727pryS5tW>?daAw_{T_KN;SIcD+uv%9-WGUoeBR}w5@ zXZ-3FQb#*)*c(>Y8~m`y+D&JZ)--rWf@`&AX@j>dZR9wZ$4;~3l;r#9 zE;-7pl!9e#eGhKnH|}BNbN6v}LoKyKVGg*;oUTG>8;n#Q8|g5YKSCvstQ*z^o+%7+ zoND%o{?I}T+<)aBIaWDenrm*n|BUHGZeHy&Sk31Vdj9j`bRoQLMqqeHOVwNclI8<< zOAyn4t8A%Tfo|DR$6VJx56+U=qRG;&&I^SYctKxcbljI!ufAR8JiM{>hU~Xo>W9bH zYqS?E&xf)V2p2T*fA)7~6NXz00gGC=oY3#9ia#IqET` zX19^(ijT77m2;5YTGCX&-PH=TQx87p_~{d|_yTlNaNgs$q}7j+FV_eg4l^AP7IB9J3yeq4V9n+!`!@i#`kjU_OcIXv2pxaw1D#O DaizQo literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/header-text-nul-padded.mat b/test/fixtures/mat-check/header-text-nul-padded.mat new file mode 100644 index 0000000000000000000000000000000000000000..7cb91b347b1e4d3e9a0ebe6c5f13bb9e9e2c00ad GIT binary patch literal 1633 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/matlab-append-replacing-variable.mat b/test/fixtures/mat-check/matlab-append-replacing-variable.mat new file mode 100644 index 0000000000000000000000000000000000000000..f62147481e912721b25c834e81f08eb845c3a932 GIT binary patch literal 1978 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 XiL=LeKduwrDSnSr93mgYfpq==ysgpy literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/matlab-append-v6-onto-v7.mat b/test/fixtures/mat-check/matlab-append-v6-onto-v7.mat new file mode 100644 index 0000000000000000000000000000000000000000..0757a3d33b74a7deed7efae3b15fed6d0b3c5fc8 GIT binary patch literal 1479 zcmdT@&r4KM6uvV(pB7K8R?_N1DlVp&A3EhMWL`sI`xZP$;x(>qh*(H*@kb7`SQCfx|uLJKwqI$9=EpmS)^Ldg5kM z7v0j0+Dbi0=()Pzs;z~qIba1hJD$*mFz{PJRj)O2y7Vm2vz3-kCv|E(mrmz0ld#iS zeO|d0Q*DXeFAl;QhOWQ;S@FE2DrfcKi+#O&=^*nZb-gh1sutg$$zM}Lj`~6FgFoCS z5m%L6yU(k7<*}^wE#Z9HJO2D~ZsP06-8UP*9Orp{yZ80fqphijWAFOwww1{rUA=s` zG&(#vWUJJ7`{MwvOG0gEU+2W3dOAKkZEH-e!;ZsajCq^ZY2HQn6fF8zM!J-qKi=r@}|xV#KM zn%~HmJn4gbAtpHazoD|P?zwk6T;X#rVjP|JZRjGj34IUUGV}v%zpo{i z*_9cV9;L1sGi@_&+9roKV><@OxhXt7sLan#k|O(Jp6rY`ch2uiYDw?n%ZVq5#8+ii zfyFx9jnomI)ZsnE1Sg-n6~5FFzVPJi!HfLMdmAHElNMvSNV|HD-$CtYOv literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/matlab-objects.mat b/test/fixtures/mat-check/matlab-objects.mat new file mode 100644 index 0000000000000000000000000000000000000000..974b50c9c6d5a158433139a0aa911e8d341b29ca GIT binary patch literal 1633 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X01nwjV*I2WZRmZYXAB|pfX#sJ?oX5!t2?Y#EW(v<5 zE-4(~dTOkcC}6L;&%)ABePf64sdffAc7}vaEP@~%I&d8ukaaK_8c$*CTzVw^*;Iy1 zwFMf=!p6)DCjCs^AU)b}JqBPs3`t^a90{$TBpYW)`WPFkq#GD;FjRJWp5$SWcVo%~ zY4L??xxsKG$Ked)5g#4_kkbws3Og5addz8Ul+{A{?va8kx>&NBxF z;R#1OT;;jNYIQt*u{7+Nbfrs(;pH*bMIb}H;f7{F-QfsyM@mAHh8fF69iDyX{vGTI zFg>d3Iu(23B{1g&+7OSRWDZ$2Ic#Ul%$jD&0kuOk< zJfX_~Gt$A(PQmZod2P=#XS{W_u6_2^Y3Qg_c=^2bReI~En+MVy4Vb6sGbY|kb()mi zl*CZs%=sK-v=7{9bl0AM8y#TE==#%hr5rxjrfIM-Xw7Du1Tr%kZsrU|NU$~mgOx*6 zThBws>kRA1NQs)cf14d2IXTG8nHfE6^33UL#Th2~>w4-oy?D%=#IN$XV&SumPCs)3 zHcKviq_B^rrE)r_XCJE;JA-x&uPexkHfB(gdK+P#FYG8F7k|#rsVUi6MZjs%Vm^}# zsuOjmh$uQfo2a+u?bgVjHR*5fx^jx9dYzi0sj2ysbIMQVFH?T98$7=K^{wvnJ#$<{ zBs25U%bw4kTl+pvlA&)kgQ`#ZgmlG)i!O1WaKEaeS~P{P^(*hC(_aif`0>RRPkPUH zn(I{B;%zrC)YXLq*@vdaODuhNVcM77C)T$dxA!oUDA>7q@rPE6nk;hIq_@6O zhbPgrk7Np5tTMhOKzH`1CSE<~#B@#TdVBA%JY&Tl=nocE{QCtK%u zmwB7NxLcOq_*@|)dhCQ>pX|peQ{QXoMgB|)56PL7y}{G<^!9b9bKE_b_8pqevs8UfH>NA>zQ=gxuexHaXtUau5L@QwNx$d6J1l;}cHjEvU-fcXJB5BP5*KSBUXn43wm0v1`O)+D>zAieejHV-d&;vX z`JuM*pOc&X&R^z#_GhI=?0ly(naUrL-2PQnUsOuwSuE4FU-DXb(uZuef9qPWC$Idt z#NOvfd|zN#P-*;B``WY#`|r1Yd|i0!Q~G!Jd;8cV?ceGCvp<|K`J<9Mzu)|+ecR^F zKVeXwSX;@!Q`=nU`LURVw!M*Q}0}4=l?6-+rmPrtR3BSMG)J$17Kzywm>q z)oz`0aq5+Sf3v?ddVBe+YW^ z39XwX8)tC(7#pTUIlQ?4hKGkiPL_!eq*@)W8savFq&hZ^gw{`z4`<9=c;!q>qqx>T zc`gROADqb`<=SxN5W^Xg{M6VCKs_nR~+5=k^S`8qBfS?Gl4H4Puo_x`6=)LuIGu zNgf7yH>OOG7GtR>WbWI zvhwP}mMKh`e+@Kv$ z*YyBh*L5VF4U{5Q^6=C+Y-5~MWv25=a^jgprcDkxCAB&hZyOmH71l4YnXmDCM!=io zqy#o8J_a=xmRyjLHgF?PK;tirk&R7FfcL4fqai3b3mx@h<}m881s-oclHRn*vN588 Qkz?9MTr{_vJ9-bP9ZS0fm;#Sy&Y0T%%VPi3N_$egt zELKg$Qi6>^_!C=fo5?748h#nqn2 z`AFn}BA`D(-Zdy@ns7$2WmS61Wu1hr3U>MeyHlSnX%kl!6Imj5^tkg^ZiScbH`pI; zUbvHa$v<}Hy!!bL!RJ{-lN(zZ1>7A9*#-0&9`Oe3VeU9ARO}Tj$<*~}a*(Y=0fSnM zkVk_c_k2Na`B+)AVm^hBKPO~Nh);NUfKBwcX#JdkLXHWA3@_skHdx=8DPeF}_NHCV z%hpCl)4dmh?D-kLA37pA;S0a%|1yII=kE*htaxd|l%t?jUoEg<{*6DpObqKv<*NbR Cj>0qm literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/matlab-strings.mat b/test/fixtures/mat-check/matlab-strings.mat new file mode 100644 index 0000000000000000000000000000000000000000..eb216599550f9d4aa47507951742d35e42202259 GIT binary patch literal 674 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X01nwjV*I2WZRmZYXA9*R>kU_%0XCK) z$&rmCAtfP6!;Iyk4$r=G{|@#9m>yMiomu&kho{D28~Y@?xD|F`8uNK`*jS7mehLXZ zi&ayxlwe~pyvDYXfRRij87a+R`N5#rV!|20mR0F3mvs`hD%j}@ z>`r~Qq)l8^Ok|1J(c{iv=O?(maKFL+aP#7w%uC{$1h?;xU$8R0scWOdO)&=<#v{B6 z)r~)xg!VBW>8zZ}0}T%gMqx3-FCUVQD7En#2pv3@CckMHyGMW>!Y4mc zoj0+In6vS$c-Z!aPvR`kQenwS5|b8wOA*-6K9}*T9JkH42b;uG HUCMU>0zl}a literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/matlab-two-handles.mat b/test/fixtures/mat-check/matlab-two-handles.mat new file mode 100644 index 0000000000000000000000000000000000000000..2d2435bc6a7eefa5f46b64b1599380ce73858d89 GIT binary patch literal 648 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X01nwjV*I2WZRmZYXAhSD4_wQg&fGMNvPtTQdJUlfH+t?@B#jUUl)0oej!^UFl@KZ?O zS*)6hr34#;uoPPu0VA16GE$mBxR)&gWTZ0Ol?Gr}He6CT!1dJlkfE|O>x49>%@Ps} z;(r((U{lJFBnI?Q>nF*FGbSz+^5AyJWRT)uOa&=r0fq&{?>i12I&gq(iDko#$&5@9 z3v1jI;tnz`bZp=}m7ehB3+u<94zDJBF;2Y5e^{VUY=ew)Nbma1^#*6=FrVQlW?A@3 z@}UWLgl@-q?jw0KEmuBt?PO(L>H6_wz+YaEUxMEpf4s?f$FTBx!jZS{}gO<88dBJxyyX_dhP2A>@&6Bv}m?3Bd{)l5ELxN4Xr zsGRbiUBymbi1(AV&Yc?z9_@HETUd*aQT~nQOgLt|srJStb!O(Q wUrUzO$uYfa?KD<+DWCQ4ZNh>0c`gbo)0;j`JT1)6^i4Q=UIPQe{Nu{50PUIFjQ{`u literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/name-63-chars.mat b/test/fixtures/mat-check/name-63-chars.mat new file mode 100644 index 0000000000000000000000000000000000000000..a9e7c662de333a2799c6dd26c6b9706c40f0ceed GIT binary patch literal 306 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X01nwjV*I2WZRmZYXAglC=H|-SfPAIAPvLzKz1Hw OfPoWgE|3BO83zFVS4GhP literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/name-70-chars.mat b/test/fixtures/mat-check/name-70-chars.mat new file mode 100644 index 0000000000000000000000000000000000000000..47370ee032f2d5e4b6d3c917284fa12e69c6b0ff GIT binary patch literal 314 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X01nwjV*I2WZRmZYXAs~AZ7z%4k!(z7+9fvMj#EtAaPEp LIEc-_Amac4CYUNf literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/name-keyword.mat b/test/fixtures/mat-check/name-keyword.mat new file mode 100644 index 0000000000000000000000000000000000000000..699e9f24d9098e4075cdc9c36bad5659d73655ef GIT binary patch literal 250 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X01nwjV*I2WZRmZYXAs`AZ7z%4k!(z7+9fvMj#Et%s_T( SUJ8(8VBiE|ka`G^aR305r7MB} literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/name-leading-digit.mat b/test/fixtures/mat-check/name-leading-digit.mat new file mode 100644 index 0000000000000000000000000000000000000000..d00befa7b5306fc9578e0b68f2f59d2cbf8a6ef4 GIT binary patch literal 250 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X01nwjV*I2WZRmZYXAs`AZ7z%4k!(z7+9fvMj#EtEI_tl SVp1}YV&DW~ka`G^aR307sVk!Z literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/name-non-ascii-utf8.mat b/test/fixtures/mat-check/name-non-ascii-utf8.mat new file mode 100644 index 0000000000000000000000000000000000000000..170ad9e058b825f96f8bb124aa6b035d6382fdf6 GIT binary patch literal 250 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X01nwjV*I2WZRmZYXAs`AZ7z%4k!(z7+9fvMj#EtAhG1c Rw8JZbG$&LZNCAP20|2k#EaLzG literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/name-with-space.mat b/test/fixtures/mat-check/name-with-space.mat new file mode 100644 index 0000000000000000000000000000000000000000..6eec9b37a9116d6966fa153a218a2e65aa1ed867 GIT binary patch literal 258 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X01nwjV*I2WZRmZYXAt3AZ7z%4k!(z7+9fvMj#EtoIrL) XVzEMTL1J<$kPQMLF_1n8kZ}M2DKjm> literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/non-utf8-name.mat b/test/fixtures/mat-check/non-utf8-name.mat new file mode 100644 index 0000000000000000000000000000000000000000..2913f441954df46bcd97565268582c0364c96220 GIT binary patch literal 250 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X01nwjV*I2WZRmZYXAs`AZ7z%4k!(z7+9fvMj#EtEI@X0 SV%kd}#lQ)~AoUO+;{X7quPk2x literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/objects-compressed-zero-padded.mat b/test/fixtures/mat-check/objects-compressed-zero-padded.mat new file mode 100644 index 0000000000000000000000000000000000000000..33bd2a9a6e4688cb75474e9a32289b80fc333c25 GIT binary patch literal 1672 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X01nwjV*I2WZRmZYXAB|pfX#sJ?oX5!t2?Y#EW(v<5 zE-4(~dTOkcC}6L;&%)ABePf64sdffAc7}vaEP@cNAbmP;eH)PVF&P?9Ve4FaB>mY` zhD@~u8p^`P%nT;|Ox+-zAbr|!eFk8C3`t^a90{$TBpYW)`WPFkq#GD;FjRJWp5$SW zcVo%~X#?x?h3mV)a3sg!4C4_W9s!U`4;czO7jk;cX>F9$V!Jf?#DNJ@SeE>3xWRBz z#%#_r2L|B@M>|~Qxy5RAJbtk>?3r|>ONim+G1f&;bG_l_W^h z&zN{G)oD_4QxZdkGv{--`95&-(cOIlZhn9%qw7!4m2&vpouQ8V{%v*RNt2bnoDqi0Q?Ieo1-!z6!QPu->$kC~JB zRX$fNe74c)XHLLo$%T&;_OY~7PUrOOW7T43(5~Ti1)2`Ar;Qnu?%qaN=L;{i-e|@X_e9s&g5y{NF^s?u(=hnWDlVs>y&7kU&J|SIk;i602C)}^9s1{A(YyHZ5 z>GT)F4}N@c#gpFio#r}~ws_mk3w3oNLH41k@e)hlU6}S|_lfl_$L&4LBnozJUi_h& z&2Fv!Me#KjC;nAr)$HzHw&`2nsba(0ra!FQeiPC+Jh1*`HceLJU)PyGwH(TtfAm^n zxSn;M*AZ&um(F2Wd!T>Dhn+kRZ9gaRMH^*&GF`#?xAFLQmo5C0jQL+JI{#N7P*H5_ z&Y17kj3$d5HtDUe)Zs}q?PFSDniaj~>ftlj*Yuy8aYW@&QLvfIb$9!%7ClXMY%@~U zx=AD%_gPd)bsau5x9!F8c^|5+OYbFa6mL9tV3wQFnvDj%uipM^*x$KvrtCr0HC0Wm zU*7(@(Zq4>u*tErv3g50w(p$p##Jh}ZHWX=^@?*!ZtoJD1Iphz+Ggzi>?(3dqKIea zvGZF`E$97d_sP~d-eunAFYcD5H$GR$h#ouP*C+dN%GCE7dXYaz?xLNq(rU{O9B*zw?**pZ!^>5j)?hOs4WjB)5N6)fbhLc^1ob?U%e3 zp7bG`?cciA>&YuWF0uDH65kgX7E~HP)xI`u!v6cMA72;V`jr0N{oXz{N&9!Y|LhOv zOa7?j&hIyWYTvfG^G{gU_RlZWKH76HfBg3MQRbzWW0i_M{WYs&W2u4y}V z=aqY5{PD_FC-1a>ezjZYT%3C4-{0&njox1VDjQ#5^L(n`bH`6{J{sRIwz#}k^ZinH zDP`Z{H$UEfzWq+W_Wu5LA5ZR9H>|l67dprM;yz~P>EGp3rO*7F@Zwp$$mc!tpV)I< MjL))Xlx1K50Qwid%m4rY literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/objects-first-reordered.mat b/test/fixtures/mat-check/objects-first-reordered.mat new file mode 100644 index 0000000000000000000000000000000000000000..160e81a6d62f2d16bfc8a087104f3fa0f43eeefe GIT binary patch literal 1633 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X01nwjV*I2WZRmZYXAB|pfMFVlgoX5!t2{RavkRA1NQs)cf14d2IXTG8nHfE6^33UL#Th2~>w4-oy?D%=#IN$X zV&SumPCs)3HcKviq_B^rrE)r_XCJE;JA-x&uPew3AGj463`u4R&lr*%**FqX5|T7d zFkIB(*>~>W!JYt9M%SO7E9H22Y8d!9Mtt*dqIv#(A=N2S8c=dG{OTR+`AkmhK> zJVl=|@m{Laq~xX~h6-oS=OClK;YOo7*Ng?>+@q?lGb>->bFKs%gW)x{jUXen;6@gJ zUE6R;;Q-fDW2Hm^d)0jwmWJvZJA_ZQGsv+sBy3_41nJO$>)3#-gUQf%3R~yWBk9kk zGGwYP&`=gOW@a$yXX*y&(T3|WfQE?}Fq~UINjA=q^f5M6NjEUyV5sc$Jjuf#@5Yn~ z(&7u(a)SX9`#!+f2RiMLp|Eoyr^lSuMoBHUOOsC=m@tK9$$YYD#ui5pY_xn9t;b z>O|csB8raBChDzuyEXD>P5RrruAHK&UZ095aV#C^|Kdjt-6Vf+4u>NE=O;+Py*O@=H9Lk!1^jc!Lo^_tr5o+X@&S6-4 zpnt}Pojeb1KPT};8)bYlUBUXd@%VR_E&P*=`ClzM|5qSTQEcnZnD5q%CW{<4>8-ES z;Yl>@V_IRF6}{%_;WO9Q^q-q?MCDOYu$jwscl)gtJxz6NGg8*NNhBHfSyV}N9X>R- z?ZxqVAF8cO?_OEvRZXp5-u}AL#BuGg$+5Gs zdP_65@0{<(RVue_i3CseigQYC?-HB?%HKNLX6*g!Dso7oh-c=p^IK0X=lyB-$<{gE zW!~m5?v|xDK3B+y9y{UJC;M^A)b|>Ckv~(yLvki%Z}4dYI{i{6~Ao5NcCZ;pXiQ-aa--`**tk><{Nl{;1^6?>B#H-?q8) zPgvLX&o9(I+H)^|{Py=z=B1Zom5M$6HLGLg1B>$iw_ob6X*+i3m3v|Q@yb;v@3en@ zwOi+0oO-FtK4#|W-{n)K&-|S5;#s}O=RNbE*mGTs&$4Hf1pv~czo!5I literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/objects-mixed-compression.mat b/test/fixtures/mat-check/objects-mixed-compression.mat new file mode 100644 index 0000000000000000000000000000000000000000..3222531e99eea2a76ba33854ec8d638e7755ee82 GIT binary patch literal 1858 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/objects-plain-variables.mat b/test/fixtures/mat-check/objects-plain-variables.mat new file mode 100644 index 0000000000000000000000000000000000000000..695a6191598d92cd17ea7e05353e9e435a0ca294 GIT binary patch literal 1990 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X01nwjV*I2WZRmZYXA`G){ zNJ;|I==Ou;KmgMmh&U6_Cm?gt^+4XkXn!)n0+9=1P}wkT~OG-V3h)4p{SK0H~b8FwnNiy`UW>ED> zpOCJ&aM3016Yf`4REwtYwSMKjboz_o2S2{J;z{rMPIH|~TfFV&g}SEf`^5T|j*XSOXo1GJnXX{{ z+j#uD%NG7g#{91qo&PHks3^8|XUunNMw3MjoAlOK>hL6*_A#w6&5B-g_3)YNYx>X4 zIHK~XDA>&9y1V^Wi=L)BwizjF-6WEX`z)%Yx(*+j+xFu4ybsmZrS}pyiZ`A+Fw4zo z%|?UXS8x9{?C;z-Q}&?hnyRMOFK>U{XyUkb*yPyRSiPkg+jq`)<0_TgwnT!bdc`>< zw|5E70p)KUZ8P?Mb`?1!QN%Oz*!iuemh=9!`(*1J?=o-m7kA6j8=os=M30^D>y!OB zW$Jqky~v*_;UPJbvNw3Tp5DIhbdI~{(!N8}d3H;-E-o!}e>(Z>oJnWD8m&)>nx5)$ zeOp}dlkJOAq`Fs4DwUlq@YB*nD$49q|Ack#S(W4V+Q0br>c(`1-S-&J{8d+s6>V1A z5@O5zJn8rRcZbDK*zQ~Z{HtCrYp2lfMZzcSa#=DAVt8&jXokF3?79E`%Z^#U?@mg5 zKQA%faqagvlXg7ke0Q7madqa6=|ykO*3Drp{x?U*zpY(#_uS3rURJO#J!JX&>e(;- z+-v=PZhd_A&`UCA(e~yYFF$(ze*N-P%8#Rpbx(QrBtO(v{&RAZ-}%e@&;G2`h@J0L zCR6z%lH0$k>WfOrJd0(z_Dfz1Px_F}_HSM5_2iWwm)QFpiSG*x3o4DDYG0c+VgLQs zkFN`FeM6Aj?{D^(MsF{Fm5nd3 zc|O(ex#OoeAC2!9TU_3&`F^Rpl(KK}n;&mK-+rfGdw>7Bk0*Dl8`j*33!P(raUV1D e^zZVi(r127c=4=W2t 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/plain-compressed-zero-padded.mat b/test/fixtures/mat-check/plain-compressed-zero-padded.mat new file mode 100644 index 0000000000000000000000000000000000000000..ab97c2a4da98e67a13d96383fb58a8e12d6c17de GIT binary patch literal 1192 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X01nwjV*I2WZRmZYXAF9$V!Jf?#DNJ@SeE>3xWRBz#%#_r2L|B@M>|~Qxy5RA zJbtk>?3r|>ONim+G1f&u^FZc0;xgCis6=B*p_0cOR-NME@Fc%sbf`dXtzz=70c*_6A}|y50eGXAjVwT}RT{K&fXX4^NH5HpWR+W;(AV zC!R@U+T@T^QmbR}wvmBRVf_-D`5M1x1iVR3N??=XV^DKp$pxAQG1mr2L(Dw^jo&av yHa0Z@-lxWnhM+($bkvKP!>Gd+c)a;YdebJ$#)t++HoF_nl6(xC&oi$EnF9c*d0J@z literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/plain-mixed-compression-unaligned.mat b/test/fixtures/mat-check/plain-mixed-compression-unaligned.mat new file mode 100644 index 0000000000000000000000000000000000000000..9b45a7ca15c78c9b7f1f1d1db2ade71e27520456 GIT binary patch literal 1384 zcmbVMT}TvB6h1SvJFGUEwjgX+4k(+{6tg?qB1_S%TcWj_LO%84{<^O0x~98elAwf; z7Nlk%Botv#y(B(F4?Re2k>Hd0;8Q(VmSGURgcZ~|J3G1BFP-6=d(PZD^L^*Lm+`rq zz3y7^-~n0mxtsU5#^Mo4Y>Ed`t;w#03!i!1PKP9Vx*~y8BrGO7Tw-%NA~uFnqFokk z4wv2TQe@2SPVrv@^k5o%#h9xI9%0IjIDj!%GdSv?`EW~jC=d^H73Ah|z!22!c$W}8 zlglB$e;R^LaixDjoGpBeEOnY~Ed^@u-lb2v}@q$k{x zi1p-h0mp9`5>9rO(h305U`1#eWKBb`#6LJ=8JH;WDz@-x_3g_wL4e)6*kWR@LFnxC zHpS1KbC7mApa|#40b-?~_4^R{Y!EzY_$A&E7W=f*hJr1?C zbOf+2MHC|1U=`wcB{8R&~pl5ZsV({QP27G_xlfQDjr?dgH0|!ke^B1_<6Y zej+U@LU;UETId;RA!kraB#~^7krt{0aCiw`1hX2du+Dd0J8O@jl2bhG9Smn4-wt9C zbDKDk{s$*L&*WEPMHd zE6-*}#tl>J{Yx-c?wnjv!94Qh!m)~NWqnfpXG8zPvBlvXu=><^lf+CTbOUrUT?{p@ z?|(P$f)V#Ue{<;YQ~a$d`i>4-kEbYG|Id4*hs-#E(9C#{GvgAPF`S9=&%MIj9YHv! z-e<;oozgqY=zM^kQRAsTspkCvFyg(bL)WXnOf;>9f_{EyF<6fp5+tP!p<7`r(OTE7 kAX?1|4!S!NoA!%ZqjmHTprD%8QqX@1Kb4CQM{D-a&%*vfkn*7WIL#M!Re8do%NP*2BT*-QbOW@hs58!RYC6oS2sWkc9bhwoH3? zcR1*FTKaHl!rV-CHt*@tnbGf~T(<-Lywhv9dj|pL?XIqC;>>$He2jS?eh>bj7%@nr zSbG?q^ZRtXiozsZ?iSxM!1ns&c?tg)kHU9yk$XCh=Q&1Slz6@p;*a3<@o9X4{p8w% z|Aw_dzSw63S@Q)L9UpV2mFx1c_K-o0#5w-FZ*k>1o~%)~aaIo{XWfoG!gq2rK8l4jtj9xc=0&N% zW76z2W?o!}^6IO6n{4#~W6+$gc10c~CS5>FYn$g-g|l@i`4k-7!hHq>_cIU2=i=Gk zvHiBf1!&;>%6dTC$ppB&;{WBrW*E9*t;Hs;N`I#taZSX}%|%Y!U3s$>-jfxQWZvbz z;9aC`#^2PfZr*ip%!l#5z@6UYr0KSEFfr$<;-S#VJ`W(wlnmdff-y$NwUYns6_T|7}necKy1T^#1_fj$jD@ literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/plain-zlib-level0.mat b/test/fixtures/mat-check/plain-zlib-level0.mat new file mode 100644 index 0000000000000000000000000000000000000000..f72cade01eb14f36aae9d616e319c3f8d801160f GIT binary patch literal 1995 zcmb_d&rcIk5T4y_K?pzZsC!Zmh160BX+ms;AVv`qxfz4oWr1RsHgt(ZPaf46{sRx3 zj2<+4(0K7+qDMV)@H{1Z^^E#=j??|&z^GwJCnB0XLFfMZZwT~ zX3TC^M2m4{wjc8w&@IE5k+%nZnC77!&=b*!L6VVeVARU>rNx@-l%0*PXdMHjCx82O zVvx{Rp@7cIhY)%kW;19D>x8GfrNz>EfYB674AYYAw)vQlH=%%>mzN>r49xZ+{n8e` zCwvd|0Fr{g>L8tp?7Z)sql-x>T#U=-&_x=icEO}6aY9Vk2I4FsJ&wOSMNXYG`&tmd zWl9`MacjxuSXO$mMt6*oa{X7A+akIyh60I0Do#x)uS8rT#-Tl9xrPckPaHLHoOxT6y|Nr1(7f^BB-{$LL8rpgq5` zR$}zD9humbZ$QMzIg`*|J3PhWj@M>zNpf|d+Ptl!tD zmYQ(x8-V}7+Y0tSC3ncmKc=G3MGbK?m3SxezM<5Iblg-yvIj*~cI9kX zm9H>$RmdJCUKLdZQ(W)=h1`gJU2Xd3xexAE+M-BN&0XpWvH*T&D&aHL`%t7>mF+N9 y+$e{sCI|TWQL3CPC`)Qp|BwQ_4jYJ+@DD*DP5hR^{~Vwq`EfCtzth zoEoQ2967_lVA9Xj4bo-?x9tNCZ98X*2AJ_r_{Yy;<#3Y8aRL_`8^fYq?EWC#8gShP z5Zy@%M-OnN8Z%|8DWtJXnkgpm%iNlonL$pLi4UY+6RsZONQR_31vbVo1-6fp4`<9= zc;!q>qqx>Tc`gROADqb`4Z3g*5DOTR{L~Z}S=Ko4JThi7G@g-`biy+|A%W?WM56$M z%wtA3kS1feCa5hJ6__|88YPaTuq3G&oINrjhB3+5(7?#pz`%F|LuCCwW(Hji=2-0Z ziNPG$I78CM*ia?iz<`6HveWY<4}-iLQzl50Io!Sv;80*lf@@lsBQbZ5;QZ+vBEl?5 zdJ5+fDo##dZu#k8#=*eQ$i=FMs=WYRJJ3$A<|``cN7U0(jSV=MZYun{95VMyWh@U5 zL((eN?;!1n7{t^rp~AMv@z0ZxlVVL$QUH@3rjRoEDEZP_|Ox-nu9lG@le zIyOvfoT+HKy`howP$~n10x#nVyy|B*&Jgqnlaw$vXk=+%V32Wv#6={~4oGUg!EhwU z;SA#u9|s;LaQq!I6m~A;^qAAyD5=GEY4V8!6Q-~%`Pp!Tp(F8GLx#Ws6LzI@EGCjE zX1nafI!wCkCP;Yba&R!b)%RSh!N~CP80#XCgM4sXz+~vrBj_Qf-gG4LK#@Y>gjrm` zxU^F+V@R4|sUXEN;Vk1z#zcVxrcDkxMPC~4Ff;TfG4q4Wj0KyS+v~{HV8Fw&y|Zii zqu@W2E50dxnQeEHb7{nt0~dTxzDx5I_c3s8njv`W-3yh=+q@T^U$(!$XIk=# z3;Fj2)Ruj}I`7y16Q$E0KmPsNSjT_r_DDM v&YU=KCLm@4w>Uc&<57iI6%H~A3?Ch{92WZvR7*yW@OlWo_RF@v-o*i literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/plain-zlib-level9.mat b/test/fixtures/mat-check/plain-zlib-level9.mat new file mode 100644 index 0000000000000000000000000000000000000000..95c8fab82fec3befa57b2b5806025bae2fe35276 GIT binary patch literal 1115 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X01nwjV*I2WZRmZYXA91W^ z39XwX8)tC(7#pTUIlQ?4hKGkiPL_!eq*@)W8savFq&hZ^gw{`z4`<9=c;!q>qqx>T zc`gROADqb`<=SxN5W^Xg{M6VCKs_nR~+5=k^S`8qBfS?Gl4H4Puo_x`6=)LuIGu zNgf7yH>OOG7GtR>WbWI zvhwP}mMKh`e+@Kv$ z*YyBh*L5VF4U{5Q^6=C+Y-5~MWv25=a^jgprcDkxCAB&hZyOmH71l4YnXmDCM!=io zqy#o8J_a=xmRyjLHgF?PK;tirk&R7FfcL4fqai3b3mx@h<}m881s-oclHRn*vN588 QkW~oXA<3PF=v2BX$%dNSCYH-NRvqV@|IX)mzR&Y{zR&Y|ec#Xf`MMLl+z9q?3llWl zo#2HE3JIkm;d?^Kr-H)5k6EwYIS{bsNVr2dm3)dyfrlNphI>U);huq~;HGFe#@yP} z)Y=Tax|?F*|99R<1K&o9=&rK5ZC^c6oRL6({}Vs}7S4+wfHx_Onr$Vk;tU!stuWgv zB(0Gnk2|0x)}&C&yYSZVT{)p^j8K5 z*Z`69XUxJ9a$s&|7=0QVEeFt3iCs`&i?eiy1aV(O27%U4JXfmK4XP@M){IeiI4SSS zVI;t|Lk2QCo0x2wVsZQ+(4~##@bG{-v+bPI7R3#*NY^hi@eQm$($s+Qc5tCYx_eC; z{5=O@H3!8%0D+b1M?xEWR~}y2W6@^dluI9nLSyi?vMf8lQoDnQ0;N!hj2T|6rpog* z)VI=t0GMZxN{Mp+nsV&F%1#vUw-S%BgM0M$856nO-Kg!)gzm`rb9DGPpD{sW%)V#} zBA`L+9a7{Wsy!<(F#w2ikmpO(2iMd&-z!L5tw65T2k*mNM`Gt?=UmQ{R;Q7tBR{JI zB~8d9x;=Nz`TM^ERoODR!;HKZh0$t44<#w>?85ilK?n%YI3hnPu^;}&F7>V8uXYV% z6IbLeE_lXUE9T1bS;BjJyf!EIa9(C^cDW|N@Jg-oUP25QyO?A!c2Q8`$e#(lpiT{2Nl)6cpMk!wGVfI zO42Hse0)h%-&v8=fpf)bow!$BG#w4GE8o$tS!UU}5_Ke|KI2-|=k)FfOl;y3SkZ$? zyZz2)7JEqtv69AJij~tdS~5xUQQ)QaA=MI8HiZJ^O&K}U_n^bJ!T{yNropoorQqd+ zj(NvBDl9XViNd~R)xEkKYVP^W+en!g;;T$5=twBpB3-)F;>h8$r!Cy)Wf{FWt@`i7 z_hTKOyWnapFC@l6awz4_S^;M1mS;AmwKQKz9_z@Tj<$&$B3EiA^fu)=o0e6gf1MDl z#6L)_%++~lPNY}FmFwP_5AMR#y(FBX2a`;q`1r5bbU3>8s71;1@QwG3np7MJ8c^)_;V)5 zz^Q7Bh3cJl$7F)hKG2tVBd;ml3vZ`Hck>qCu*g&SWD=o#{uApiUw-lxcqBSxFgyHH zPaFpvvBE)mCZ}lBU#adLkCH8Ewpx7JBg#-L_jG$X!yDcO^C_%5dv|<>xcG6ro3hZR z8#fAV2pl%nTk5Lv=zF5VTe^YpEwDeWO<(X<^gMG$q<<>k@)`Yi22|xW9H+@m$S5am!U=o3^$2d!L@|J7U+s$89PUD$(0#p@%2#WqmM6W^^7L{Fn=-z|H?!~RSeI3JVT{(8dYB&mabv+H$=aH1aB z>$i=*yeKyzi7RG~@qSq^Y$*7EQ|Koh!Aa@-1*q4|ng9R* literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/renamed-parameter.mat b/test/fixtures/mat-check/renamed-parameter.mat new file mode 100644 index 0000000000000000000000000000000000000000..5cb462b61f7e66a4209b90063eb31e9100b89a15 GIT binary patch literal 1628 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/small-tags.mat b/test/fixtures/mat-check/small-tags.mat new file mode 100644 index 0000000000000000000000000000000000000000..a7738f4277e5b01275381a3329c100c0900c31e2 GIT binary patch literal 184 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X01nwjV*I2WZRmZYXA~VvgVMXuyY}&$DGziNiDWZlTRF& zFok8w&xRWeCuPj$Jab?Wo^Z6oRi0a{R>$KPOT(T?SGt54ULIpz1TxecZfFM79gaYE zq$DJ1n6X^c;n{cY-@%>$)1#`cGb>;6@YFbLW1nOfx56$=V?J*V8;h~SPa%P4v1%%o z5^M~H*Vs0Kj0}bw`2y9*6S@pABOMIw6#UMe*Y-Sf##>kG+Gk&#hK@>wm(N>YrMG^% zc_7WvfO(2OW8%G3r%B08NemUvoX{l)NuA75PYr1yNMxlW}m-gfgsU0q0!eQ0XD#L{;crhVCcVtvbTdk-^-f}NWe zf2d}&TdRLje2vA4e-&9ZyZe`I`qp=<*s!+g4=cCdg!By$tUsAelhydwb>>ekhqC4$ zy_OiRXPxJDgc|v!a~Reh=%4XnC(lFM&q;jIMj4+>SFrwVJpSEf3;!fz{#T36{}l*S z6x+Hp=DRhc$s&hMdh087coI$fm{yo(MX$Mf_{{Y+{pV&JQF&ApZ02&^-F~Y@Pg5P+ zjFh!*5=q8=7FAMRhY!tddvSc;hidE6dx;yx8_yk>Iqe1VhxBnXUcW#_1dr);v zRa5Jix4&*Qaa=oWa_nrZ-qMWiJLkJ`mC9{fBEeI=;+&G(y9DQe^0$t*8GApwiX4(C z;+c8u{MJ*;d4Jk{vUQGknYa0iyJhK(&lNJF$4>b5$$p$N^}U8(<_C+aD-K!>*%1##e zX=x%AWp=55!n*gY%5i(`UwnIYW4glbdyHrPsw>8dHmhw3v1NXq^n3oh!{R4w_pN{a zRWFydQ|R|1;S+YbEExtdJhvP)L*6U)+<*UN$E@FXCndh0ml*H3_WPSjJDzjCyUqHz zI`hW#qBm#j=CBt3o1^33)-Jkx?&fnZE7+GFviyDZ?3aG-wf;W0K0bTsB^k45d-IN$ zA3cA+et9b8$5F+)r#yR-A8ITAIl0O2{AK=Ue^zS5&UY%4sr(Vi?O#>(MWtk(#WG#{ zC9j1ieaL3}x32Yi^2(1(?0t^J_XUOpmBvrCuT7h<|9P^Z)<= literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/sparse-without-sparse-flag.mat b/test/fixtures/mat-check/sparse-without-sparse-flag.mat new file mode 100644 index 0000000000000000000000000000000000000000..32b8deee48b9da5f6673c902f48249d4c21d5b7e GIT binary patch literal 240 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X01nwjV*I2WZRmZYXAX?4`PEb qBLg!-aX~Iv9wZI|j6e)h&jaEB0f-M$3j&-#EC6PKh!6HqrUL*>G#%#v literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/stale-subsystem-offset.mat b/test/fixtures/mat-check/stale-subsystem-offset.mat new file mode 100644 index 0000000000000000000000000000000000000000..979f48996f4c977f69d87769d1581023037d54ad GIT binary patch literal 1581 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X01nwjV*I2WZRmZYXAB|pfX#sJ?oX5!t2?Y#EW(v<5 zE-4(~dTOkcC}6L;&%)ABePf64sdffAc7}vaEP@~%+Hf5PU>yueVr(1*xm7;rFDc6y%VVUTxY$^>cgg=@LNa3sg!4C4_W9s!UwhYW?C3pqXJv^Gj=v0a*c z;=qI{EK7bi++a8aiR1B38{qaCjD++wvl9=})`_Ds6cCB*RZ80#XCq26#qGobEp z1iB+7AxXoG<)RMHzH|Q$_5_$7Rdt#YZZx`UPr!{1FlBW8>A6x4pKH@J*ch~C zvrPh-84Wjc1|uX`n}ET}A*!wCq2qOi^<$(&&D_7uj*pxiWai9_o;7*q^tIv)ll*l( zb(>y1W=`T)`CPH^*+!?IIRTp`7d}$h$I?H0H9iL6qTl02n_P0`fU{K+}x zC-avnKiLf)-~Rem_xYYVE+UeddFf@(XV0yDA1BGsx0*rKCw)S?;=)CjxKFrWRZ%UP z!q@th_tNPvh9CU+;)*A|=R3`HDsAz$n-}WpLW1l=Q{yF;zPm8(%kC5FTaMd%m`N1u z+`RZhHJja9{fpvjEKdBZ$g0`hziiXDzEj19wM~Cmx&0=jZ+Kw+$!wae#=ovJe`-0D zHUH?f#Be?9Jg+0v$S6R;)^!Q_++|*^>5?x?=D;TCmHjeyzataXz}GVZgelIl8qXl~n!Ki z>3Vwmy3;xCo=f`MZ8Ia@b}wfNs09sjm=(cN=5pLDn)OEj;N%Hru~-t=E%Req3Vjb0oemFf6DveyV+K+Jyc0TR*-oy!9#lyZgO;Y?Aix zbpP2O&X@dA$(`SC{?xv0bLXG1uI-;+sC~5OUjF#)@1x91FUKksd-`iu$I1s5<^ONL z)Lqkd?9MCq!uaErt4`i&|NLsV&bc`C%D=zaUmCr={8cu-z~=c>zvqsh;(Ro|Uupq^`t!`LzCoXi3`Ne(A%+tTir%IpsIpM{#dXdk2 P=0CCLx)`5j&nOE3xEij> literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/struct-field-name-length-too-small.mat b/test/fixtures/mat-check/struct-field-name-length-too-small.mat new file mode 100644 index 0000000000000000000000000000000000000000..d2ea48e102a226a34c45d215fbe95ad4286ee574 GIT binary patch literal 320 zcma)#K?{OF5QSANIz>NWet?B-=3#G}ry!|=_t07)umsznpVrUoy+DxY(1VYieKYeW zH^t6uWW9(bH^scZG&Yh$Q@XnCt{Pru(j=0sv!%0VX>VGJhn4-wiHc>JXr=TjMy*o$ zS6(lFn@>@{z!*$G0H_h*-yaa7zPqEsgMRp#WuJcORTX{a#h}mQOa02DAK(HrzW10( P4fp7AmYU(JvrqR1A&wx1 literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/struct-wide-field-names.mat b/test/fixtures/mat-check/struct-wide-field-names.mat new file mode 100644 index 0000000000000000000000000000000000000000..833d5fe87667ba918530a4de22016888f97bf03e GIT binary patch literal 1520 zcmc&y%WA?v6pdD;tKuiz4^SD$G)Pvat^|W!WM5)CLcs^<6uR`2T)ONh`3asA91sbb z63_!DcV2hyJ!cX}$vAqG*N&1nO4_sUxoOG!JhijcdJ$r67zKVyhHH~r^ChcgD9MkJ z$)^>qr0a)ThdqU{4x}hNhsr2^!FUfgz-O=u5_ORC${A}IZ|p}80sA%Y>9oh()bplO zMBb-BcON5>cOTcQsK6SRd8|d8=W&f^i6-h>^J|&+2fBI%`tRd-*1yxo!+$V6at z+0Q+698kB24tm0O(1?5oL8LDO(CNT17fxU9CKex|TcP=X=nj1JN!fVC4bmPcX t-16mWGBzLK+peH*^cMe1SL4s8Z(Gdi8$V@z<27Ya*7q{CnS1YdI|5H2JD&gm literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/subsystem-first.mat b/test/fixtures/mat-check/subsystem-first.mat new file mode 100644 index 0000000000000000000000000000000000000000..8a1884efde6a43afe98f60416d04d87dbe77bde7 GIT binary patch literal 1633 zcma)*cTm#@6vuxM5>^;x2vLwA8xl+ykx>X?M_DS`A|tF2P!w5~unI^(&;o`apaCjF z(J}-CD zxg&!@LWu~tTc}@DP*}uSvz?s{4r7FX+e8rkqKJX;uybZ`_h=&AH6RLZfP$lq%nS_7 z3{g9?0S5kmD+%~g0(fVsoiPmr05Np-x8`B8IO+X_5f|%}02_5_>(VkwqbC|yku*6~ z9P_Gv6}!=c7f)ipu@jXi9v-0S=;-i7X*>{@#uG+OzglG@S#5M%IatU!(goIyqJ%{s z7?AZ7py5QyA*tRh9T#UfJX6<*ph;3zCB_H2=p`3PpGfMWGjM~&btRqJ8d`m;wQXIsx`rw#Cl?h`z=5%~(_O1HQSp$*igp^INxJwS{ z-Y@1Wm}|<~+nGa~2_kAboBF9IKB~H>vBhi6T)?Q*s$RdAjDY$XX9-pspZ2VJ)-^Oyl|53>t^PjZ zIL3Cu0o!PDB_$D35Lj)m=x>;161z9EtFtI=wy$_8&OCa`uTCL(q~p51K~){ zA9C#EIu#?Jg}tMV1Ggo3mMa!E1l!^Uu7hdxBqv5mzL(*WrMyhbTh!L~;01o;9!foP z4{tZvTr(KzfUn5v%!jtZC}q*%4l}vKbn5V`L2clve4^t-lTYM_=F-5um+w-em2;(e zrbc^DVaBs_Y8Jt2J`b_8pXVp@;jL2wLt9#^-treU@4H)oSpFL&3tb8fi}qU9s{UDU zhRjB(EW`4wP%z31`qE0reNpww+ePk!>l<&Vev8F^1YGsnC+Y*1=)x=TbX>?}e#EEY zL^?Qfn~rczOP6mgY8aV|5w7So-FP<4%@(hAb$YqXe0Lb;RoZ;nz>51SB_^XM&Q`D6IY71El+R67KQT|jPQyTV}WWbv@N#52)g)_kl>ft4^G^%F&3h-_pk~$EWqao_7c*^pWrOzfR}Ow<1P- zw8&cn|@^Ix;_Tv)gjA1Cd#u~gedO=oW6cwl?kr*$^x)xyDqw~uO;`&+fp z@vnVO&<~BZgFyLfD#U$5yqsC)_i~)Jk`Gw1F~VuAfHMCZb$2?3J{{oedmiw|z?n(o z@D8yV!vlWOSdDfQQ?ypyCE0;=V81ZnTQBq#pFr#q_x?@@q77+~jEZg&GY<&S{83v? z)(`|3WeZ;BGkUuW>JJ9+-vbfxrL4e`3t&!$Xmt__B?6E$@cmFg#a=Lkk2vollR$T< z)sR596I7ZXtrIP46E5mVrzFF4A>+A>jvSg$IWK7v=vTtfnO1;oPR}Jf74ba@2*+QA zlG><0XUYI`z2H*5^vJF>_)8AlPL4ode{GD=7y{ZpviFT_}~DFN)6s>k0#U@e+2w13iwvQUCw| literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/subsystem-in-middle.mat b/test/fixtures/mat-check/subsystem-in-middle.mat new file mode 100644 index 0000000000000000000000000000000000000000..b527179dca71169bcf5cb1fa15dc25a4b1c2c9e6 GIT binary patch literal 1633 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2c0*X01nwjV*I2WZRmZYXAnGlgdj zmlO_gJvCNJ6tGv_XJKimzOh62R6BzlJ43=I7D12>9k`AS$U2w|ji<16Eg zw6rmU9QHQCI$zjPKra5ApHow^vxV3h)8DUrI$UQJ-7CKoFqfvY6exG^a<&T z3m0ADKH+{XqE1vY8?=;t`w8h(QUZ|@J39=7Ojh9&Z?!vS$ zyHBidId1P^CQ-0+^WqQHY<6q)FN&|RIPtF{t7doqvQ6LmP8A#0HvM7c_M4Et;equh zvuUy#|GLinspU}C{G-x@hMPx z(2M+;5+0H>DSLyb>*?+5PUpCLF6}!sooBaX>*CTv_otK3&Y5)ftI_(DsOhO5*SEzL zKiR%0MXGz%q*B?*0zWNHq@v6&^-oy$o>e(+ul91KGD<4>t|G)iGcTL-|JFnaeB@Fe4od?G*gZo!9m}bH-a&>)K~uoraD| zg_qA;U!}Kxx_KbY(SUi1K4ap&RHsSFO-T$D&YaIdM*F~xMtAKAxX}TojIKXDSIXgY zZJGufgVt=eNgy+$;bzWYgam67FjzT6we>u7yw0$GjFhOE`?uNgk&}bWoSD(HCeNI{ zR-9pyzpkfl(~HNd0)`|rg=Y2 z-I0=zq+!N#QHN*WxqkIV-v{UdqcV64`%o%T8t!tlsbs9P<6<$7XeU;w& z>E?knM+4?5`izP9Qk^CxHzhGtICDM+8SMi%8r`)g;6?|SGP?fsTq%dowP_k`3|h0< zCV|Y1hMPHq5fZFTz+mMN)zDkAs#m=Bz!|MvNqKz4pJl;lF=L;{i-e|@X_e9s&g5y{NF^s?u(=hnWDlVs>y&7kU&J|SIk;i602C)}^9s1{A( zYyHZ5>GT)F4}N@c#gpFio#r}~ws_mk3w3oNLH41k@e)hlU6}S|_lfl_$L&4LBnozJ zUi_h&&2Fv!Me#KjC;nAr)$HzHw&`2nsba(0ra!FQeiPC+Jh1*`HceLJU)PyGwH(Tt zfAm^nxSn;M*AZ&um(F2Wd!T>Dhn+kRZ9gaRMH^*&GF`#?xAFLQmo5C0jQL+JI{#N7 zP*H5_&Y17kj3$d5HtDUe)Zs}q?PFSDniaj~>ftlj*Yuy8aYW@&QLvfIb$9!%7ClXM zY%@~Ux=AD%_gPd)bsau5x9!F8c^|5+OYbFa6mL9tV3wQFnvDj%uipM^*x$KvrtCr0 zHC0WmU*7(@(Zq4>u*tErv3g50w(p$p##Jh}ZHWX=^@?*!ZtoJD1Iphz+Ggzi>?(3d zqKIeavGZF`E$97d_sP~d-eunAFYcD5H$GR$h#ouP*C+dN%GCE7dXYaz?xLNq(rU{O9B*zw?**pZ!^>5j)?hOs4WjB)5N6)fbhLc^1ob z?U%e3p7bG`?cciA>&YuWF0uDH65kgX7E~HP)xI`u!v6cMA72;V`jr0N{oXz{N&9!Y z|LhOvOa7?j&hIyWYTvfG^G{gU_RlZWKH76HfBg3MQRbzWW0i_M{WYs&W2 zu4y}V=aqY5{PD_FC-1a>ezjZYT%3C4-{0&njox1VDjQ#5^L(n`bH`6{J{sRIwz#}k z^ZinHDP`Z{H$UEfzWq+W_Wu5LA5ZR9H>|l67dprM;yz~P>EGp3rO*7F@Zwp$$mc!t OpV)IW^ z39XwX8)tC(7#pTUIlQ?4hKGkiPL_!eq*@)W8savFq&hZ^gw{`z4`<9=c;!q>qqx>T zc`gROADqb`<=SxN5W^Xg{M6VCKs_nR~+5=k^S`8qBfS?Gl4H4Puo_x`6=)LuIGu zNgf7yH>OOG7GtR>WbWI zvhwP}mMKh`e+@Kv$ z*YyBh*L5VF4U{5Q^6=C+Y-5~MWv25=a^jgprcDkxCAB&hZyOmH71l4YnXmDCM!=io zqy#o8J_a=xmRyjLHgF?PK;tirk&R7FfcL4fqai3b3mx@h<}m881s-oclHRn*vN588 SkW^ z39XwX8)tC(7#pTUIlQ?4hKGkiPL_!eq*@)W8savFq&hZ^gw{`z4`<9=c;!q>qqx>T zc`gROADqb`<=SxN5W^Xg{M6VCKs_nR~+5=k^S`8qBfS?Gl4H4Puo_x`6=)LuIGu zNgf7yH>OOG7GtR>WbWI zvhwP}mMKh`e+@Kv$ z*YyBh*L5VF4U{5Q^6=C+Y-5~MWv25=a^jgprcDkxCAB&hZyOmH71l4YnXmDCM!=io zqy#o8J_a=xmRyjLHgF?PK;tirk&R7FfcL4fqai3b3mx@h<}m881s-oclHRn*vN588 UkB|pfX#sJ?oX5!t2?Y#EW(v<5 zE-4(~dTOkcC}6L;&%)ABePf64sdffAc7}vaEP@~%I&d8ukaaK_8c$*CTzVw^*;Iy1 zwFMf=!p6)DCjCs^AU)b}JqBPs3`t^a90{$TBpYW)`WPFkq#GD;FjRJWp5$SWcVo%~ zY4L??xxsKG$Ked)5g#4_kkbws3Og5addz8Ul+{A{?va8kx>&NBxF z;R#1OT;;jNYIQt*u{7+Nbfrs(;pH*bMIb}H;f7{F-QfsyM@mAHh8fF69iDyX{vGTI zFg>d3Iu(23B{1g&+7OSRWDZ$2Ic#Ul%$jD&0kuOk< zJfX_~Gt$A(PQmZod2P=#XS{W_u6_2^Y3Qg_c=^2bReI~En+MVy4Vb6sGbY|kb()mi zl*CZs%=sK-v=7{9bl0AM8y#TE==#%hr5rxjrfIM-Xw7Du1Tr%kZsrU|NU$~mgOx*6 zThBws>kRA1NQs)cf14d2IXTG8nHfE6^33UL#Th2~>w4-oy?D%=#IN$XV&SumPCs)3 zHcKviq_B^rrE)r_XCJE;JA-x&uPexkHfB(gdK+P#FYG8F7k|#rsVUi6MZjs%Vm^}# zsuOjmh$uQfo2a+u?bgVjHR*5fx^jx9dYzi0sj2ysbIMQVFH?T98$7=K^{wvnJ#$<{ zBs25U%bw4kTl+pvlA&)kgQ`#ZgmlG)i!O1WaKEaeS~P{P^(*hC(_aif`0>RRPkPUH zn(I{B;%zrC)YXLq*@vdaODuhNVcM77C)T$dxA!oUDA>7q@rPE6nk;hIq_@6O zhbPgrk7Np5tTMhOKzH`1CSE<~#B@#TdVBA%JY&Tl=nocE{QCtK%u zmwB7NxLcOq_*@|)dhCQ>pX|peQ{QXoMgB|)56PL7y}{G<^!9b9bKE_b_8pqevs8UfH>NA>zQ=gxuexHaXtUau5L@QwNx$d6J1l;}cHjEvU-fcXJB5BP5*KSBUXn43wm0v1`O)+D>zAieejHV-d&;vX z`JuM*pOc&X&R^z#_GhI=?0ly(naUrL-2PQnUsOuwSuE4FU-DXb(uZuef9qPWC$Idt z#NOvfd|zN#P-*;B``WY#`|r1Yd|i0!Q~G!Jd;8cV?ceGCvp<|K`J<9Mzu)|+ecR^F zKVeXwSX;@!Q`=nU`LURVw!M*Q}0}4=l?6-+rmPrtR3BSMG)J$17Kzywm>q z)oz`0aq5+Sf3v?ddVBe+YD-a&%*vfkn*7WIL#M!Re8do%NP*2BT*-QbOW@hs58!RYC6oS2sWkc9bhwoH3? zcR1*FTKaHl!rV-CHt*@tnbGf~T(<-Lywhv9dj|pL?XIqC;>>$He2jS?eh>bj7%@nr zSbG?q^ZRtXiozsZ?iSxM!1ns&c?tg)kHU9yk$XCh=Q&1Slz6@p;*a3<@o9X4{p8w% z|Aw_dzSw63S@Q)L9UpV2mFx1c_K-o0#5w-FZ*k>1o~%)~aaIo{XWfoG!gq2rK8l4jtj9xc=0&N% zW76z2W?o!}^6IO6n{4#~W6+$gc10c~CS5>FYn$g-g|l@i`4k-7!hHq>_cIU2=i=Gk zvHiBf1!&;>%6dTC$ppB&;{WBrW*E9*t;Hs;N`I#taZSX}%|%Y!U3s$>-jfxQWZvbz z;9aC`#^2PfZr*ip%!l#5z@6UYr0KSEFfr$<;-S#VJ`W(wlnmdff-y$NwUYns6_T|7}necKy1T^xd03-veL? literal 0 HcmV?d00001 diff --git a/test/fixtures/mat-check/variable-after-subsystem.mat b/test/fixtures/mat-check/variable-after-subsystem.mat new file mode 100644 index 0000000000000000000000000000000000000000..4c38c70e8a2a44de97805445aa52d0cbda6c8ddc GIT binary patch literal 1633 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 N*mGTs&$4Hf1pxHqt@Ho@ literal 0 HcmV?d00001 diff --git a/test/matFileCheck.test.ts b/test/matFileCheck.test.ts new file mode 100644 index 00000000..0df958b1 --- /dev/null +++ b/test/matFileCheck.test.ts @@ -0,0 +1,660 @@ +// Copyright 2026 The MathWorks, Inc. +// The contract of the strict MAT-file checker (src/datamodel/parser/MatFileCheck.ts). +// +// `checkMatFile` claims to say whether MATLAB loads a file, and the claim is only as good as +// the ground truth it is held to. So the first block holds it to MATLAB's own verdicts: the +// files in test/fixtures/mat-check are copies of files MATLAB R2027a wrote, most of them +// edited one byte range at a time, and verdicts.json records what `S = load(f)` did with +// each (loads; fails; loads with a variable silently missing; loads with a value or a name +// changed) and the violation codes the checker gives it. Every file MATLAB did not load as +// stored must have a violation, and every file it did load must have none, except the short +// list of deliberate differences below, each with its reason. There is no MATLAB failure in +// the corpus the checker does not see. +// +// The second block runs it over every Level-5 `.mat` already in this repo. MATLAB wrote all +// of them, so a violation there is a false positive, or a finding about the fixture. +// +// The rest is one rule at a time on bytes built here (test/tools/matBytes.ts), including the +// ones no probe broke, and the two promises the save path leans on: the check never throws, +// and its work is bounded however the bytes lie. + +import { describe, it, expect, afterEach } from 'vitest'; +import { readdirSync, readFileSync, statSync } from 'node:fs'; +import { join } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { deflateSync, gzipSync, zlibSync } from 'fflate'; +import { checkMatFile, violationsAdded, type MatViolation, type MatViolationCode } from '../src/datamodel/parser/MatFileCheck.js'; +import { setNativeInflate } from '../src/datamodel/parser/Inflate.js'; +import { + CLASS, + MI, + arrayFlags, + cellVar, + charVar, + dims, + element, + matFile, + matrix, + numericVar, + sparseVar, + structVar, + u32le, + varName, +} from './tools/matBytes.js'; + +const TEST = fileURLToPath(new URL('.', import.meta.url)); +const CORPUS = join(TEST, 'fixtures', 'mat-check'); + +interface Verdict { + file: string; + probe: string; + matlab: 'loads' | 'fails' | 'drops' | 'alters'; + what: string; + matlabSays?: string; + codes: MatViolationCode[]; + deliberate?: string; +} + +const verdicts = JSON.parse(readFileSync(join(CORPUS, 'verdicts.json'), 'utf8')) as Verdict[]; + +const read = (path: string): Uint8Array => new Uint8Array(readFileSync(path)); +const codesOf = (violations: MatViolation[]): MatViolationCode[] => [...new Set(violations.map((v) => v.code))].sort(); +const codes = (bytes: Uint8Array): MatViolationCode[] => codesOf(checkMatFile(bytes)); + +afterEach(() => { + setNativeInflate(undefined); +}); + +/** + * The files MATLAB loads that the checker flags anyway, and why. They are the whole list: a + * file that loads and is flagged without being named here fails the corpus test. + */ +const DELIBERATE: Record = { + // MATLAB loads a name stored twice without a word, and which copy a caller gets depends on + // how it asks: `load(f)` keeps the last, `load(f, name)` the first. A save that wrote one + // would be writing that ambiguity, so it is a violation. + 'duplicate-name-later-copy.mat': 'duplicate-name', + 'duplicate-name-earlier-copy.mat': 'duplicate-name', + 'duplicate-object-names.mat': 'duplicate-name', + // Eight zero bytes after the subsystem load, because MATLAB's load stops reading at the + // subsystem. They are no record all the same, MATLAB writes nothing after the subsystem, and + // its `save -append` reads past it (it revived a variable stored there), so they are a + // `framing` violation like zero bytes anywhere else. + 'trailing-zeros-after-subsystem.mat': 'framing', +}; + +describe('the MATLAB-verdict corpus', () => { + it('is what verdicts.json says it is', () => { + const files = readdirSync(CORPUS).filter((f) => f.endsWith('.mat')).sort(); + expect(files).toEqual(verdicts.map((v) => v.file).sort()); + expect(verdicts.filter((v) => v.matlab !== 'loads').length).toBeGreaterThanOrEqual(36); + expect(Object.keys(DELIBERATE).sort()).toEqual(verdicts.filter((v) => v.deliberate).map((v) => v.file).sort()); + }); + + for (const engine of ['the detected inflate engine', 'fflate'] as const) { + describe(`with ${engine}`, () => { + for (const v of verdicts) { + it(`${v.file}: MATLAB ${v.matlab}`, () => { + if (engine === 'fflate') setNativeInflate(null); + const found = checkMatFile(read(join(CORPUS, v.file))); + expect(codesOf(found)).toEqual(v.codes); + if (v.matlab !== 'loads') { + expect(found.length).toBeGreaterThan(0); + } else if (DELIBERATE[v.file]) { + expect(codesOf(found)).toEqual([DELIBERATE[v.file]]); + } else { + expect(found).toEqual([]); + } + }); + } + }); + } + + it('names the variable each per-variable violation is in', () => { + const after = checkMatFile(read(join(CORPUS, 'variable-after-subsystem.mat'))); + expect(after).toEqual([expect.objectContaining({ code: 'subsystem-not-last', variable: 'd_scalar' })]); + const chars = checkMatFile(read(join(CORPUS, 'char-every-encoding.mat'))); + expect(chars.map((v) => v.variable)).toEqual(['ch_utf32', 'ch_na_utf32', 'ch_cjk_u16', 'ch_cjk_utf32', 'ch_emoji_u16', 'ch_emoji_utf32']); + const crash = checkMatFile(read(join(CORPUS, 'non-utf8-name.mat'))); + expect(crash).toEqual([expect.objectContaining({ code: 'name', message: expect.stringContaining('crashes') })]); + }); +}); + +/** Every `.mat` under test/ but the corpus above, which has verdicts of its own. */ +function repoMatFiles(dir: string, out: string[] = []): string[] { + for (const name of readdirSync(dir)) { + const path = join(dir, name); + if (statSync(path).isDirectory()) { + if (path !== CORPUS) repoMatFiles(path, out); + } else if (name.endsWith('.mat')) { + out.push(path); + } + } + return out.sort(); +} + +describe('the MATLAB-written .mat fixtures in this repo', () => { + const files = repoMatFiles(TEST); + // A Level-5 file holds version 0x0100 (bytes 00 01); the one -v7.3 fixture holds 00 02. + const level5 = files.filter((f) => { + const b = read(f); + return b[124] === 0x00 && b[125] === 0x01; + }); + + it('are found', () => { + expect(level5.length).toBeGreaterThanOrEqual(35); + expect(files.length - level5.length).toBe(1); + }); + + for (const file of level5) { + it(`${file.slice(TEST.length)} has no violation`, () => { + expect(checkMatFile(read(file))).toEqual([]); + }); + } + + it('says a -v7.3 file is no Level-5 one', () => { + const v73 = files.find((f) => !level5.includes(f))!; + expect(checkMatFile(read(v73))).toEqual([expect.objectContaining({ code: 'not-level5', message: expect.stringContaining('-v7.3') })]); + }); +}); + +// ---- Bytes built here ------------------------------------------------------------------- + +function concat(parts: Uint8Array[]): Uint8Array { + const out = new Uint8Array(parts.reduce((n, p) => n + p.length, 0)); + let at = 0; + for (const p of parts) { + out.set(p, at); + at += p.length; + } + return out; +} + +/** A record holding `el` compressed, as `save -v7` writes one: `wrap` is the stream's framing. */ +function compressed(el: Uint8Array, wrap: (b: Uint8Array) => Uint8Array = zlibSync): Uint8Array { + const z = wrap(el); + return concat([u32le(MI.COMPRESSED), u32le(z.length), z]); +} + +/** A record of raw bytes under a tag of `type`, with `n` declared (its length by default). */ +function rawRecord(type: number, body: Uint8Array, n = body.length): Uint8Array { + return concat([u32le(type), u32le(n), body]); +} + +/** A subsystem record: an unnamed uint8 [1 N] array whose bytes are a MAT stream of `elements`. */ +function subsystem(elements: Uint8Array[] = [numericVar({ name: '', cls: CLASS.DOUBLE, dimensions: [1, 1], real: [1] })]): Uint8Array { + const stream = concat([new Uint8Array([0x00, 0x01, 0x49, 0x4d, 0, 0, 0, 0]), ...elements]); + return matrix([arrayFlags(CLASS.UINT8), dims([1, stream.length]), varName(''), element(MI.UINT8, stream)]); +} + +/** + * A MAT-file of `records`, its header's subsystem offset pointing at `records[subsystemAt]`, or + * holding `offset` when that is a number, or 0. + */ +function file(records: Uint8Array[], subsystemAt?: number, offset?: number): Uint8Array { + const bytes = new Uint8Array(matFile(records)); + const at = subsystemAt === undefined ? offset ?? 0 : 128 + records.slice(0, subsystemAt).reduce((n, r) => n + r.length, 0); + new DataView(bytes.buffer).setUint32(116, at, true); + return bytes; +} + +const x = (name = 'x', real = [1, 2, 3]): Uint8Array => numericVar({ name, cls: CLASS.DOUBLE, dimensions: [1, real.length], real }); + +/** The one violation `bytes` has, which has to be one. */ +function only(bytes: Uint8Array): MatViolation { + const found = checkMatFile(bytes); + expect(found).toHaveLength(1); + return found[0]; +} + +describe('bytes this test builds', () => { + it('are read where they are, in a view into a larger buffer', () => { + const bytes = file([x(), compressed(charVar('t', 'abc', 18))]); + const larger = new Uint8Array(bytes.length + 64); + larger.set(bytes, 32); + expect(checkMatFile(larger.subarray(32, 32 + bytes.length))).toEqual(checkMatFile(bytes)); + expect(codes(bytes)).toEqual(['char-type']); + }); + + it('are clean when they follow every rule', () => { + const s = structVar('s', ['a', 'bb'], [{ a: x(''), bb: charVar('', 'héllo', MI.UTF16) }]); + const c = cellVar('c', [x(''), charVar('', 'a\u{1F600}b', MI.UTF8, [1, 4]), matrix([])]); + const sp = sparseVar({ name: 'sp', dimensions: [2, 2], ir: [0, 1], jc: [0, 1, 2], real: [1, 2] }); + const i8 = numericVar({ name: 'i8', cls: CLASS.INT8, dimensions: [1, 2], real: [-5, 7] }); + const narrowed = numericVar({ name: 'd', cls: CLASS.DOUBLE, dimensions: [1, 3], dataType: MI.UINT8, real: [1, 2, 3] }); + expect(checkMatFile(file([x(), s, compressed(c), sp, i8, narrowed, compressed(subsystem())], 6))).toEqual([]); + expect(checkMatFile(file([]))).toEqual([]); + }); +}); + +describe('the header', () => { + it('short-file: fewer than 128 bytes', () => { + expect(only(new Uint8Array(100))).toMatchObject({ code: 'short-file', at: 0 }); + }); + + it('not-level5: a version or an endian mark that is not a Level-5 file\'s', () => { + const v = (b124: number, b125: number, b126 = 0x49, b127 = 0x4d) => { + const bytes = file([x()]); + bytes.set([b124, b125, b126, b127], 124); + return only(bytes); + }; + expect(v(0x00, 0x00)).toMatchObject({ code: 'not-level5', at: 124 }); + expect(v(0x00, 0x02).message).toContain('-v7.3'); + expect(v(0x00, 0x01, 0x58, 0x58)).toMatchObject({ code: 'not-level5', at: 126 }); + // 'MI' wants the version as 01 00: 00 01 with 'MI' is a version and a mark that disagree. + expect(v(0x00, 0x01, 0x4d, 0x49).message).toContain('disagree'); + }); + + it('big-endian: noted, and nothing after the header checked', () => { + const bytes = file([rawRecord(MI.DOUBLE, new Uint8Array(8))]); + bytes.set([0x01, 0x00, 0x4d, 0x49], 124); + expect(only(bytes)).toMatchObject({ code: 'big-endian', at: 126 }); + }); + + it('level4-lookalike: a zero 16-bit half in the first four bytes', () => { + for (const lead of [[0, 0, 0x41, 0x41], [0x41, 0x41, 0, 0]]) { + const bytes = file([x()]); + bytes.set(lead, 0); + expect(only(bytes)).toMatchObject({ code: 'level4-lookalike', at: 0 }); + } + const one = file([x()]); + one.set([0, 0x41, 0x41, 0], 0); + expect(checkMatFile(one)).toEqual([]); + }); +}); + +describe('framing', () => { + it('a record cut short', () => { + const bytes = file([x(), x('y')]); + expect(only(bytes.subarray(0, bytes.length - 8))).toMatchObject({ code: 'framing', at: 128 + x().length }); + }); + + it('bytes after the last record: 1-7 of anything, or zeros MATLAB reads as a type-0 tag', () => { + for (const tail of [new Uint8Array([1, 2, 3]), new Uint8Array(5), new Uint8Array(8), new Uint8Array(100)]) { + const at = 128 + x().length; + expect(only(concat([file([x()]), tail]))).toMatchObject({ code: 'framing', at }); + } + }); + + it('zero padding after a compressed record, which is never padded', () => { + const z = compressed(x()); + const pad = new Uint8Array((8 - (z.length % 8)) % 8 || 8); + const found = checkMatFile(file([z, pad, compressed(x('y'))])); + expect(found).toEqual([expect.objectContaining({ code: 'framing', at: 128 + z.length })]); + }); + + it('a plain record missing its final pad', () => { + // A 1x1 uint8 whose data takes the small tag ends on a word boundary anyway, so take one + // whose data is 3 bytes, padded to 8, and cut the pad. + const el = numericVar({ name: 'u', cls: CLASS.UINT8, dimensions: [1, 3], real: [1, 2, 3] }); + const cut = el.subarray(0, el.length - 5); + new DataView(cut.buffer, cut.byteOffset).setUint32(4, cut.length - 8, true); + expect(codes(file([cut]))).toEqual(['framing', 'nbytes']); + }); + + it('bytes after the subsystem\'s record, which MATLAB\'s load never reads', () => { + const found = checkMatFile(concat([file([x(), subsystem()], 1), new Uint8Array(8)])); + expect(found).toEqual([expect.objectContaining({ code: 'framing', message: expect.stringContaining('after the subsystem') })]); + }); +}); + +describe('records', () => { + it('top-level-type: a record that is neither miMATRIX nor miCOMPRESSED', () => { + const found = checkMatFile(file([rawRecord(MI.DOUBLE, new Uint8Array(8)), x()])); + expect(found).toEqual([expect.objectContaining({ code: 'top-level-type', at: 128 })]); + }); + + it('empty-matrix: an miMATRIX of 0 bytes, plain or compressed', () => { + expect(only(file([rawRecord(MI.MATRIX, new Uint8Array(0)), x()]))).toMatchObject({ code: 'empty-matrix', at: 128 }); + expect(only(file([compressed(rawRecord(MI.MATRIX, new Uint8Array(0)))]))).toMatchObject({ code: 'empty-matrix', at: 128 }); + // A matrix inside another may be empty: MATLAB reads it as []. + expect(checkMatFile(file([cellVar('c', [matrix([])])]))).toEqual([]); + }); + + it('compressed-wrapper: raw deflate, gzip, or no zlib header', () => { + for (const wrap of [deflateSync, gzipSync, (b: Uint8Array) => concat([new Uint8Array([0x78, 0x00]), deflateSync(b)])]) { + expect(only(file([compressed(x(), wrap)]))).toMatchObject({ code: 'compressed-wrapper', at: 128 }); + } + }); + + it('compressed-wrapper: a stream cut short, or bytes after it in the record', () => { + const z = zlibSync(x()); + expect(only(file([rawRecord(MI.COMPRESSED, z.subarray(0, z.length - 6))])).message).toContain('does not inflate'); + const after = only(file([rawRecord(MI.COMPRESSED, concat([z, new Uint8Array(4)]))])); + expect(after.message).toContain('checksum'); + // The stream inflated, so the variable it holds is known, and said. + expect(after.variable).toBe('x'); + }); + + it('compressed-wrapper: a payload that is not one matrix and nothing else', () => { + const el = x(); + expect(only(file([compressed(concat([el, new Uint8Array(8)]))])).message).toContain('after its matrix'); + expect(only(file([compressed(rawRecord(MI.DOUBLE, new Uint8Array(8)))])).message).toContain('miDOUBLE'); + expect(only(file([compressed(compressed(el))])).message).toContain('another compressed record'); + // Cut short, the matrix is said to be, and so is the sub-element it ends inside. + const cut = checkMatFile(file([compressed(el.subarray(0, el.length - 8))])); + expect(codesOf(cut)).toEqual(['compressed-wrapper', 'nbytes']); + expect(cut[0].message).toContain('cut short'); + expect(only(file([compressed(new Uint8Array(4))])).message).toContain('fewer than one element'); + }); +}); + +describe('where records are', () => { + it('subsystem-offset: pointing where no record starts, past the file, or at a variable', () => { + const records = [x(), x('y'), subsystem()]; + for (const offset of [129, 64, 1 << 20]) { + const found = checkMatFile(file(records, undefined, offset)); + expect(codesOf(found)).toEqual(['anonymous-record', 'subsystem-offset']); + expect(found[0]).toMatchObject({ code: 'subsystem-offset', at: 116 }); + } + const atVariable = checkMatFile(file(records, 1)); + expect(atVariable[0].message).toContain('variable "y"'); + }); + + it('subsystem-offset: pointing at an unnamed record that holds no subsystem data', () => { + // MATLAB reads the record there as the objects' data, and stops listing variables at it. + expect(codes(file([x(), x('')], 1))).toEqual(['anonymous-record', 'subsystem-offset']); + }); + + it('subsystem-offset: 0, with a subsystem in the file (and 8 spaces are 0)', () => { + const bytes = file([x(), subsystem()]); + expect(codes(bytes)).toEqual(['anonymous-record', 'subsystem-offset']); + bytes.fill(0x20, 116, 124); + expect(codes(bytes)).toEqual(['anonymous-record', 'subsystem-offset']); + }); + + it('subsystem-not-last: each variable after the subsystem, named', () => { + const found = checkMatFile(file([x(), subsystem(), x('late'), compressed(x('later'))], 1)); + expect(found.map((v) => [v.code, v.variable])).toEqual([['subsystem-not-last', 'late'], ['subsystem-not-last', 'later']]); + expect(found[0].message).toContain('silently'); + }); + + it('anonymous-record: an unnamed record where no subsystem is, and what it hides', () => { + const found = checkMatFile(file([x(), x(''), x('y'), x('z')])); + expect(found).toEqual([expect.objectContaining({ code: 'anonymous-record', at: 128 + x().length })]); + expect(found[0].message).toContain('the 2 record(s) after it'); + }); + + it('duplicate-name: a name stored twice, at the later copy', () => { + const found = checkMatFile(file([x(), x('y'), compressed(x())])); + expect(found).toEqual([expect.objectContaining({ code: 'duplicate-name', variable: 'x', at: 128 + 2 * x().length })]); + }); +}); + +describe('names', () => { + it('name: not an identifier, a keyword, or not UTF-8', () => { + for (const bad of ['1abc', 'has space', '_x', 'café', 'x-y']) { + expect(only(file([x(bad)]))).toMatchObject({ code: 'name', variable: bad }); + } + expect(only(file([x('end')])).message).toContain('"end_"'); + const latin1 = matrix([arrayFlags(CLASS.DOUBLE), dims([1, 1]), element(MI.INT8, new Uint8Array([0x63, 0x61, 0x66, 0xe9])), element(MI.DOUBLE, new Uint8Array(8))]); + expect(only(file([latin1])).message).toContain('crashes'); + }); + + it('takes any identifier, however long', () => { + expect(checkMatFile(file([x('a'), x('A_1'), x('n'.repeat(70)), x('endx')]))).toEqual([]); + }); +}); + +describe('char data', () => { + it('char-type: miUTF32, miUINT8, miINT8, or no text type at all', () => { + for (const type of [18, MI.UINT8, MI.INT8, MI.DOUBLE]) { + expect(only(file([charVar('t', 'abc', type)]))).toMatchObject({ code: 'char-type', variable: 't' }); + } + }); + + it('char-type: miUINT16 above U+00FF, which MATLAB keeps the low byte of, or fails on', () => { + expect(checkMatFile(file([charVar('t', 'héllo', MI.UINT16)]))).toEqual([]); + expect(only(file([charVar('t', '日本語', MI.UINT16)])).message).toContain('U+65E5'); + expect(only(file([charVar('t', 'a\u{1F600}b', MI.UINT16, [1, 4])])).message).toContain('U+D83D'); + }); + + it('char-type: miUTF8 that is not UTF-8, and a complex char array', () => { + const notUtf8 = matrix([arrayFlags(CLASS.CHAR), dims([1, 2]), varName('t'), element(MI.UTF8, new Uint8Array([0xc3, 0x28]))]); + expect(only(file([notUtf8])).message).toContain('not valid UTF-8'); + const twoParts = matrix([arrayFlags(CLASS.CHAR, { complex: true }), dims([1, 1]), varName('t'), element(MI.UTF16, new Uint8Array(2)), element(MI.UTF16, new Uint8Array(2))]); + expect(only(file([twoParts])).message).toContain('complex'); + }); + + it('utf8-count: miUTF8 whose UTF-16 length is not the element count', () => { + expect(only(file([charVar('t', 'héllo', MI.UTF8, [1, 6])]))).toMatchObject({ code: 'utf8-count' }); + // An emoji is two UTF-16 units: dims [1 3] for 'a', U+1F600, 'b' is one short. + expect(only(file([charVar('t', 'a\u{1F600}b', MI.UTF8, [1, 3])]))).toMatchObject({ code: 'utf8-count' }); + expect(checkMatFile(file([charVar('t', 'a\u{1F600}b', MI.UTF8, [1, 4])]))).toEqual([]); + }); + + it('data-size: miUTF16 or miUINT16 of another length than the element count', () => { + expect(only(file([charVar('t', 'abc', MI.UTF16, [1, 4])]))).toMatchObject({ code: 'data-size' }); + expect(only(file([charVar('t', 'abc', MI.UINT16, [1, 2])]))).toMatchObject({ code: 'data-size' }); + }); + + it('applies at any depth, and says whose it is', () => { + const deep = structVar('s', ['c'], [{ c: cellVar('', [x(''), charVar('', 'abc', 18)]) }]); + expect(only(file([compressed(deep)]))).toMatchObject({ code: 'char-type', variable: 's', at: 128 }); + }); +}); + +describe('numeric data', () => { + it('int-storage: every class but double in its own type only', () => { + const cases: [number, number, { logical?: boolean }][] = [ + [CLASS.INT8, MI.UINT8, {}], + [CLASS.UINT8, MI.INT8, {}], + [CLASS.INT32, MI.INT16, {}], + [CLASS.UINT64, MI.DOUBLE, {}], + [CLASS.SINGLE, MI.DOUBLE, {}], + [CLASS.UINT8, MI.DOUBLE, { logical: true }], + ]; + for (const [cls, dataType, opts] of cases) { + const v = numericVar({ name: 'v', cls, dimensions: [1, 2], dataType, real: [1, 2], ...opts }); + expect(only(file([v]))).toMatchObject({ code: 'int-storage', variable: 'v' }); + } + const imag = numericVar({ name: 'v', cls: CLASS.INT16, dimensions: [1, 1], real: [1], imag: [2] }); + expect(checkMatFile(file([imag]))).toEqual([]); + }); + + it('takes a double in any numeric type', () => { + for (const dataType of [MI.INT8, MI.UINT8, MI.INT16, MI.UINT16, MI.INT32, MI.UINT32, MI.SINGLE, MI.INT64, MI.UINT64]) { + const v = numericVar({ name: 'v', cls: CLASS.DOUBLE, dimensions: [1, 2], dataType, real: [1, 2], imag: [3, 4] }); + expect(checkMatFile(file([v]))).toEqual([]); + } + }); + + it('data-size: more or fewer elements than the dimensions say', () => { + expect(only(file([numericVar({ name: 'v', cls: CLASS.DOUBLE, dimensions: [1, 3], real: [1, 2] })]))).toMatchObject({ code: 'data-size' }); + expect(only(file([numericVar({ name: 'v', cls: CLASS.INT8, dimensions: [1, 1], real: [1, 2] })]))).toMatchObject({ code: 'data-size' }); + const ragged = numericVar({ name: 'v', cls: CLASS.INT16, dimensions: [1, 1], rawReal: new Uint8Array(3), real: [] }); + expect(only(file([ragged]))).toMatchObject({ code: 'data-size' }); + }); + + it('element: a double whose data is no numeric type', () => { + const v = numericVar({ name: 'v', cls: CLASS.DOUBLE, dimensions: [1, 1], dataType: MI.UTF8, rawReal: new Uint8Array(8), real: [] }); + expect(only(file([v]))).toMatchObject({ code: 'element' }); + }); + + it('sparse: column starts one per column and one more, non-zeros as many as row indices', () => { + expect(only(file([sparseVar({ name: 'sp', dimensions: [2, 2], ir: [0, 1], jc: [0, 2], real: [1, 2] })]))).toMatchObject({ code: 'data-size' }); + expect(only(file([sparseVar({ name: 'sp', dimensions: [2, 2], ir: [0, 1], jc: [0, 1, 2], real: [1] })]))).toMatchObject({ code: 'data-size' }); + const logical = sparseVar({ name: 'sp', dimensions: [2, 2], ir: [0], jc: [0, 1, 1], real: [1], logical: true }); + expect(only(file([logical]))).toMatchObject({ code: 'int-storage' }); + const single = sparseVar({ name: 'sp', dimensions: [2, 2], ir: [0], jc: [0, 1, 1], real: [1], cls: CLASS.SINGLE, sparseFlag: true, dataType: MI.SINGLE }); + expect(checkMatFile(file([single]))).toEqual([]); + const int8 = sparseVar({ name: 'sp', dimensions: [2, 2], ir: [0], jc: [0, 1, 1], real: [1], cls: CLASS.INT8, sparseFlag: true, dataType: MI.INT8 }); + expect(only(file([int8])).message).toContain('double, single and logical'); + }); +}); + +describe('the shape of a matrix', () => { + const body = (subs: Uint8Array[]) => file([matrix(subs)]); + const flags = arrayFlags(CLASS.DOUBLE); + const d11 = dims([1, 1]); + const one = element(MI.DOUBLE, new Uint8Array(8)); + + it('nbytes: bytes after the last sub-element, or a sub-element past the matrix\'s end', () => { + expect(only(body([flags, d11, varName('v'), one, new Uint8Array(8)]))).toMatchObject({ code: 'nbytes', variable: 'v' }); + const over = matrix([flags, d11, varName('v'), one]); + new DataView(over.buffer).setUint32(over.length - 12, 16, true); + expect(only(file([over]))).toMatchObject({ code: 'nbytes' }); + }); + + it('nbytes: a container holding fewer members than it declares', () => { + expect(only(file([cellVar('c', [x(''), x('')], [1, 3])])).message).toContain('2 of the 3'); + const short = structVar('s', ['a', 'b'], [{ a: x(''), b: x('') }], [1, 2]); + expect(only(file([short])).message).toContain('2 of the 4'); + }); + + it('element: array flags, dimensions or a name of the wrong type', () => { + expect(only(body([element(MI.INT32, new Uint8Array(8)), d11, varName('v'), one]))).toMatchObject({ code: 'element' }); + expect(only(body([flags, element(MI.UINT32, new Uint8Array(8)), varName('v'), one]))).toMatchObject({ code: 'element' }); + expect(only(body([flags, dims([3]), varName('v'), one]))).toMatchObject({ code: 'element' }); + expect(only(body([flags, dims([1, -1]), varName('v'), one]))).toMatchObject({ code: 'element' }); + expect(only(body([flags, d11, element(MI.UTF8, new TextEncoder().encode('v')), one]))).toMatchObject({ code: 'element' }); + }); + + it('element: an array class MATLAB has none of', () => { + for (const cls of [0, 18, 255]) { + const f = new Uint8Array(16); + f.set(arrayFlags(CLASS.DOUBLE)); + f[8] = cls; + expect(only(body([f, d11, varName('v'), one])).message).toContain(`class is ${cls}`); + } + }); + + it('element: a small tag declaring more than its 4 bytes', () => { + const small = new Uint8Array(8); + new DataView(small.buffer).setUint32(0, (5 << 16) | MI.DOUBLE, true); + expect(only(body([flags, d11, varName('v'), small]))).toMatchObject({ code: 'element' }); + // MATLAB's own small tags read as they should. + const tiny = new Uint8Array(8); + new DataView(tiny.buffer).setUint32(0, (1 << 16) | MI.UINT8, true); + tiny[4] = 7; + const name = new Uint8Array(8); + new DataView(name.buffer).setUint32(0, (2 << 16) | MI.INT8, true); + name.set([0x61, 0x62], 4); + expect(checkMatFile(body([flags, d11, name, tiny]))).toEqual([]); + }); + + it('element: a cell member, struct field or object part that is not a matrix', () => { + expect(only(file([cellVar('c', [one])]))).toMatchObject({ code: 'element' }); + // Padded to 8, so the struct around it is a whole number of words, as a plain record is. + const z = compressed(x('')); + const member = concat([z, new Uint8Array((8 - (z.length % 8)) % 8)]); + expect(only(file([structVar('s', ['a'], [{ a: member }])]))).toMatchObject({ code: 'element' }); + }); + + it('element: a struct with field names and a field-name length of 0', () => { + const s = matrix([arrayFlags(CLASS.STRUCT), d11, varName('s'), element(MI.INT32, new Uint8Array(4)), element(MI.INT8, new TextEncoder().encode('a'))]); + expect(only(file([s]))).toMatchObject({ code: 'element' }); + }); + + it('reads an opaque as MATLAB writes one: no dimensions, then two names and one matrix', () => { + const name = (s: string) => element(MI.INT8, new TextEncoder().encode(s)); + const handle = numericVar({ name: '', cls: CLASS.UINT32, dimensions: [6, 1], real: [0xdd000000, 2, 1, 1, 1, 1] }); + const opaque = (parts: Uint8Array[]) => matrix([arrayFlags(CLASS.OPAQUE), varName('o'), ...parts]); + expect(checkMatFile(file([opaque([name('MCOS'), name('string'), handle]), subsystem()], 1))).toEqual([]); + expect(only(file([opaque([name('MCOS'), element(MI.INT8, new Uint8Array(0)), handle]), subsystem()], 1))).toMatchObject({ code: 'element' }); + expect(only(file([opaque([name('MCOS'), name('string')]), subsystem()], 1)).message).toContain('0 of the 1'); + }); + + it('checks the subsystem\'s stream too, for no variable', () => { + const found = checkMatFile(file([x(), compressed(subsystem([charVar('', 'abc', 18)]))], 1)); + expect(found).toEqual([expect.objectContaining({ code: 'char-type', at: 128 + x().length })]); + expect(found[0].variable).toBeUndefined(); + expect(found[0].message).toContain('in the subsystem'); + }); +}); + +describe('bounded, and never a throw', () => { + it('budget: past the matrices it may walk, a note where it stopped and nothing after', () => { + const c = cellVar('c', Array.from({ length: 10 }, () => x(''))); + const bad = charVar('t', 'abc', 18); + expect(checkMatFile(file([c, bad]))).toEqual([expect.objectContaining({ code: 'char-type' })]); + const found = checkMatFile(file([c, bad]), { maxElements: 5 }); + expect(found).toEqual([expect.objectContaining({ code: 'budget' })]); + // At the member it stopped at, inside the cell's record, and before the char array. + expect(found[0].at).toBeGreaterThan(128); + expect(found[0].at).toBeLessThan(128 + c.length); + expect(found[0].message).toContain('5 matrices'); + }); + + it('budget: past the bytes it may inflate', () => { + const big = compressed(numericVar({ name: 'z', cls: CLASS.DOUBLE, dimensions: [1, 4096], real: new Array(4096).fill(0) })); + expect(checkMatFile(file([x(), big]))).toEqual([]); + const found = checkMatFile(file([x(), big]), { maxInflatedBytes: 1000 }); + expect(found).toEqual([expect.objectContaining({ code: 'budget', at: 128 + x().length })]); + }); + + it('budget: past the nesting it reads', () => { + let deep = x(''); + for (let i = 0; i < 200; i++) deep = cellVar('', [deep]); + const top = cellVar('c', [deep]); + expect(codes(file([top]))).toEqual(['budget']); + }); + + it('spends a member that is an empty matrix, so a billion of them stops', () => { + const empties = cellVar('c', Array.from({ length: 1000 }, () => matrix([]))); + expect(checkMatFile(file([empties]))).toEqual([]); + expect(codesOf(checkMatFile(file([empties]), { maxElements: 100 }))).toEqual(['budget']); + }); + + it('never throws on a file cut at any length', () => { + for (const name of ['matlab-objects.mat', 'plain-uncompressed.mat', 'matlab-append-v6-onto-v7.mat']) { + const whole = read(join(CORPUS, name)); + for (let n = 0; n <= whole.length; n++) { + const found = checkMatFile(whole.subarray(0, n)); + expect(found.some((v) => v.message.includes('an error in the check itself'))).toBe(false); + // A file of objects cut anywhere is broken: before its subsystem the header's offset + // points past its end, and in it the subsystem's record is cut short. A file without + // one is whole again when it is cut between two records. + if (name === 'matlab-objects.mat' && n < whole.length) expect(found.length).toBeGreaterThan(0); + } + } + }); + + it('never throws on a file with any byte changed', () => { + // A fixed seed, so a failure reproduces. + let seed = 0x2f6b1d; + const random = () => { + seed = (seed * 1103515245 + 12345) & 0x7fffffff; + return seed / 0x80000000; + }; + for (const name of ['plain-uncompressed.mat', 'objects-uncompressed.mat', 'matlab-plain.mat']) { + const whole = read(join(CORPUS, name)); + for (let trial = 0; trial < 400; trial++) { + const bytes = whole.slice(); + for (let k = 0; k < 1 + Math.floor(random() * 4); k++) { + bytes[128 + Math.floor(random() * (bytes.length - 128))] = Math.floor(random() * 256); + } + const found = checkMatFile(bytes); + expect(found.some((v) => v.message.includes('an error in the check itself'))).toBe(false); + } + } + }); +}); + +describe('violationsAdded: what a rewrite added', () => { + const bad = (name: string) => charVar(name, 'abc', 18); + + it('matches by code and variable, wherever the record moved', () => { + const before = checkMatFile(file([x(), bad('t')])); + const after = checkMatFile(file([x('a_longer_name'), x('y'), compressed(bad('t'))])); + expect(after[0].at).not.toBe(before[0].at); + expect(violationsAdded(before, after)).toEqual([]); + expect(violationsAdded(before, checkMatFile(file([x()])))).toEqual([]); + }); + + it('counts, and follows a rename', () => { + const before = checkMatFile(file([x(), bad('t')])); + const twice = checkMatFile(file([x(), bad('t'), x('y'), bad('u')])); + expect(violationsAdded(before, twice)).toEqual([expect.objectContaining({ code: 'char-type', variable: 'u' })]); + const renamed = checkMatFile(file([x(), bad('t2')])); + expect(violationsAdded(before, renamed)).toHaveLength(1); + expect(violationsAdded(before, renamed, new Map([['t2', 't']]))).toEqual([]); + }); + + it('always adds a budget note', () => { + const c = cellVar('c', Array.from({ length: 10 }, () => x(''))); + const before = checkMatFile(file([c]), { maxElements: 5 }); + const after = checkMatFile(file([c]), { maxElements: 5 }); + expect(violationsAdded(before, after)).toEqual([expect.objectContaining({ code: 'budget' })]); + }); +}); diff --git a/test/matNodeCeiling.test.ts b/test/matNodeCeiling.test.ts index 6e73b3e2..2c2de184 100644 --- a/test/matNodeCeiling.test.ts +++ b/test/matNodeCeiling.test.ts @@ -298,11 +298,15 @@ describe('a .mat file past its node ceiling', () => { // objects and shared object graphs this file builds no example of. const root = fileURLToPath(new URL('.', import.meta.url)); const files: string[] = []; + // test/fixtures/mat-check holds files edited to break MATLAB's load rules (a name stored + // twice, a variable after the subsystem), each with MATLAB's verdict on it + // (test/matFileCheck.test.ts), and is not what this grades. const walk = (dir: string): void => { for (const e of readdirSync(dir, { withFileTypes: true })) { const abs = join(dir, e.name); - if (e.isDirectory()) walk(abs); - else if (e.name.endsWith('.mat') && e.name !== 'strings_v73.mat') files.push(abs); + if (e.isDirectory()) { + if (e.name !== 'mat-check') walk(abs); + } else if (e.name.endsWith('.mat') && e.name !== 'strings_v73.mat') files.push(abs); } }; walk(join(root, 'fixtures')); diff --git a/test/parseWarnings.test.ts b/test/parseWarnings.test.ts index e6440cfa..9bc05604 100644 --- a/test/parseWarnings.test.ts +++ b/test/parseWarnings.test.ts @@ -67,6 +67,9 @@ import { const TEST_ROOT = fileURLToPath(new URL('./', import.meta.url)); const ARTIFACTS = join(TEST_ROOT, 'parity', 'artifacts'); const FIXTURES = join(TEST_ROOT, 'fixtures'); +// Copies of MATLAB-written files edited to break MATLAB's load rules on purpose, each with +// MATLAB's verdict (test/matFileCheck.test.ts): no corpus of complete files, so not swept here. +const MAT_CHECK = join(FIXTURES, 'mat-check'); function bytesAt(abs: string): ArrayBuffer { const u8 = new Uint8Array(readFileSync(abs)); @@ -133,7 +136,7 @@ describe('the whole fixture corpus parses with no warnings at all', () => { // the whole channel worthless. It is asserted over the enumerated corpus rather // than a hand-listed sample so that a new fixture is covered by default. const files = [...filesUnder(ARTIFACTS), ...filesUnder(FIXTURES)] - .filter((f) => /\.(slx|mdl|mat)$/i.test(f)) + .filter((f) => /\.(slx|mdl|mat)$/i.test(f) && !f.startsWith(MAT_CHECK)) .sort(); // An empty or mis-filtered list would pass the assertion below vacuously. These From 9a3324acc29e32312f4246db6d192fb9ceb174df Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Tue, 20 Oct 2026 17:20:03 -0400 Subject: [PATCH 03/13] [wip] Save an edited MAT-file, writing what was not edited as its own bytes session.serializeSource answered null for a .mat. It now answers the file's bytes: every record nobody touched written as the bytes it was read from, compressed as it was, which no re-encode reproduces, and MATLAB's own save -append does the same. A record the reader dropped and the subsystem holding the file's objects are kept the same way. A variable only renamed is its element with the name replaced, an object variable's included, since the subsystem names no variable. An edited plain value is written fresh, as the dictionary writers write its stream. A new variable goes before the subsystem, whose offset the header is given anew. A file with no compressed record (-v6) gets none, and a save with no edit is the file, byte for byte. A rename and a value edit both leave an entry Modified, so the entry now also records whether anything but its own rename touched it (DataNode._valueEdited): that is what lets a renamed variable keep its bytes. Anything the writer cannot write as what it is refuses the save, naming the variable: an edited object, string, function handle or value not decoded, a container holding one, an edited variable stored after the subsystem (MATLAB does not read it there), a file whose records do not tile it, one opened without its records, and one whose bytes a host has since transferred away. Before the bytes are handed back they are read again: every kept record must be its own bytes, every renamed one its element but for the name, and every fresh one the value it was written from. --- dist/core/DataModel.d.ts.map | 2 +- dist/core/DataModel.js | 22 +- dist/core/DataModel.js.map | 2 +- dist/core/sessionTypes.d.ts | 4 +- dist/datamodel/node/DataNode.d.ts | 3 +- dist/datamodel/node/DataNode.d.ts.map | 2 +- dist/datamodel/node/DataNode.js | 11 +- dist/datamodel/node/DataNode.js.map | 2 +- .../node/data/MatlabVariableNode.d.ts | 2 +- .../node/data/MatlabVariableNode.d.ts.map | 2 +- .../datamodel/node/data/MatlabVariableNode.js | 4 +- .../node/data/MatlabVariableNode.js.map | 2 +- dist/datamodel/parser/MatFileWriter.d.ts | 9 + dist/datamodel/parser/MatFileWriter.d.ts.map | 1 + dist/datamodel/parser/MatFileWriter.js | 659 ++++++++++++++++ dist/datamodel/parser/MatFileWriter.js.map | 1 + dist/datamodel/parser/MatWriter.d.ts | 17 + dist/datamodel/parser/MatWriter.d.ts.map | 2 +- dist/datamodel/parser/MatWriter.js | 38 +- dist/datamodel/parser/MatWriter.js.map | 2 +- src/core/DataModel.ts | 22 +- src/core/sessionTypes.ts | 4 +- src/datamodel/node/DataNode.ts | 18 +- src/datamodel/node/data/MatlabVariableNode.ts | 4 +- src/datamodel/parser/MatFileWriter.ts | 733 ++++++++++++++++++ src/datamodel/parser/MatWriter.ts | 39 +- test/matFileSave.test.ts | 693 +++++++++++++++++ test/moduleBoundaries.test.ts | 16 +- test/sessionSerializeSource.test.ts | 23 +- 29 files changed, 2285 insertions(+), 54 deletions(-) create mode 100644 dist/datamodel/parser/MatFileWriter.d.ts create mode 100644 dist/datamodel/parser/MatFileWriter.d.ts.map create mode 100644 dist/datamodel/parser/MatFileWriter.js create mode 100644 dist/datamodel/parser/MatFileWriter.js.map create mode 100644 src/datamodel/parser/MatFileWriter.ts create mode 100644 test/matFileSave.test.ts diff --git a/dist/core/DataModel.d.ts.map b/dist/core/DataModel.d.ts.map index 0f8730b8..1503e1d8 100644 --- a/dist/core/DataModel.d.ts.map +++ b/dist/core/DataModel.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"DataModel.d.ts","sourceRoot":"","sources":["../../src/core/DataModel.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"DataModel.d.ts","sourceRoot":"","sources":["../../src/core/DataModel.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/core/DataModel.js b/dist/core/DataModel.js index 21683fea..92333c09 100644 --- a/dist/core/DataModel.js +++ b/dist/core/DataModel.js @@ -9,6 +9,7 @@ import { parseModel } from '../datamodel/parser/ModelParser.js'; import { parseMat } from '../datamodel/parser/MatParser.js'; import { parseProject } from '../datamodel/parser/ProjectParser.js'; import { serializeBinarySldd } from '../datamodel/parser/BinarySlddSerializer.js'; +import { serializeMatFile } from '../datamodel/parser/MatFileWriter.js'; import { catalogFunctionRenames, catalogRenames, scJsonTextWithRenames } from '../datamodel/parser/ScCatalog.js'; // The name reductions and the expression reading, from the leaf modules that hold the // single copy of each. This file used to spell all three itself; the usage index needs @@ -2049,16 +2050,18 @@ export function createSession(opts = {}) { * * Null for two distinct absences, deliberately given the same answer: a srcId the * session does not hold (the same answer getDataSource gives the same question), and - * a source whose format HAS no write path. `.slx`, `.mdl`, `.mat` and `.prj` are - * read-only in this package — only `.sldd` has a writer, and only that writer has a - * live MATLAB gate behind it. Null rather than a throw because a consumer enumerating - * every open source to find the saveable ones should not need a try/catch per source, - * and because there is nothing exceptional about a project file not being writable. + * a source whose format HAS no write path. `.slx`, `.mdl` and `.prj` are read-only in + * this package — `.sldd` and `.mat` have writers. Null rather than a throw because a + * consumer enumerating every open source to find the saveable ones should not need a + * try/catch per source, and because there is nothing exceptional about a project file + * not being writable. * * Throws for a value in it that no writer may write: one past the unbacked-bytes budget, as * a MatBudgetError naming the entry, the path in it and the budget (MatWriter.budgetFailure). * Nothing is returned then — no part of a file — and nothing in the session changes, so the - * save after the value is fixed or removed is the save there would have been. + * save after the value is fixed or removed is the save there would have been. A `.mat` save + * throws a MatWriteError the same way, naming the variable or the file, for anything it + * cannot write as what it is (MatFileWriter.serializeMatFile). * * The flavour follows the FILE, not a default: a `.sldd` that arrived as a * compressed-binary package is answered with zip bytes and one that arrived as JSON @@ -2071,6 +2074,13 @@ export function createSession(opts = {}) { if (!source) { return null; } + // A MAT-file is written as its own records, what was edited written fresh, and is + // binary whatever its records are, compressed (`-v7`) or not (`-v6`). An instanceof + // for the reason the dictionary's is below: serializeMatFile reaches for the records + // and the node bound to each, which only a MatNode built from a parse holds. + if (source instanceof MatNode) { + return { kind: 'binary', sourceFormat: source.sourceFormat, bytes: serializeMatFile(source) }; + } // An instanceof rather than a duck test on serializeJson: serializeBinarySldd // reaches for _zipMetadata and _dataSourceAttrs, so a lookalike that merely // answers the same method names would be handed to a writer built for the class. diff --git a/dist/core/DataModel.js.map b/dist/core/DataModel.js.map index ff943285..0d75900a 100644 --- a/dist/core/DataModel.js.map +++ b/dist/core/DataModel.js.map @@ -1 +1 @@ -{"version":3,"file":"DataModel.js","sourceRoot":"","sources":["../../src/core/DataModel.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"DataModel.js","sourceRoot":"","sources":["../../src/core/DataModel.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/core/sessionTypes.d.ts b/dist/core/sessionTypes.d.ts index 1e380337..2cd99a07 100644 --- a/dist/core/sessionTypes.d.ts +++ b/dist/core/sessionTypes.d.ts @@ -16,8 +16,8 @@ export interface CreateSessionOptions { * * `sourceFormat` is the source node's OWN format string — the same vocabulary * SourceDTO.sourceFormat publishes ('json' for a textual `.sldd`, 'xml' for a - * compressed-binary one) — so a consumer can correlate the two without a mapping - * table of its own. + * compressed-binary one, 'mat' for a MAT-file, which is always `binary`) — so a + * consumer can correlate the two without a mapping table of its own. */ export type SerializedSource = { kind: 'binary'; diff --git a/dist/datamodel/node/DataNode.d.ts b/dist/datamodel/node/DataNode.d.ts index a3a75f9b..1fc5e669 100644 --- a/dist/datamodel/node/DataNode.d.ts +++ b/dist/datamodel/node/DataNode.d.ts @@ -125,6 +125,7 @@ export default class DataNode extends BaseNode { Description?: string; _rawInput?: unknown; _encoded?: EncodedValue; + _valueEdited?: boolean; rawXml?: string; classification?: string; constructor(name: string, parent: BaseNode | null, serial?: Record); @@ -165,7 +166,7 @@ export default class DataNode extends BaseNode { execAddChild(): ChildAddEdit | null; execRemoveChild(_child?: BaseNode): ChildUndoRedo | null; _renameField(from: string, to: string): void; - _markModified(): void; + _markModified(edit?: 'value' | 'name'): void; _stampLastModified(): void; /** * What puts this node back as it stands now: every own field but those in `leaves`, and its diff --git a/dist/datamodel/node/DataNode.d.ts.map b/dist/datamodel/node/DataNode.d.ts.map index 1efd44e4..87949779 100644 --- a/dist/datamodel/node/DataNode.d.ts.map +++ b/dist/datamodel/node/DataNode.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"DataNode.d.ts","sourceRoot":"","sources":["../../../src/datamodel/node/DataNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"DataNode.d.ts","sourceRoot":"","sources":["../../../src/datamodel/node/DataNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/node/DataNode.js b/dist/datamodel/node/DataNode.js index 34846077..6d2ad69f 100644 --- a/dist/datamodel/node/DataNode.js +++ b/dist/datamodel/node/DataNode.js @@ -468,7 +468,7 @@ export default class DataNode extends BaseNode { // Class="double" element, which made MATLAB refuse to open the whole file. const encoded = this._encoded; const raw = this._rawInput; - this._markModified(); + this._markModified('name'); this._encoded = encoded; this._rawInput = raw; return true; @@ -657,7 +657,11 @@ export default class DataNode extends BaseNode { // edit below it on save. A value read from a stream is read-only (_refuseEncodedEdit and // BaseNode's editability), so nothing should reach here from inside one; this is the // second line, for whatever does. The rename that keeps it is DataNode.setProperty's. - _markModified() { + // + // `edit` is 'name' for that rename, and only for it. An entry's own rename leaves its value + // as it was, and every other edit marks the entry `_valueEdited`; so does the rename of + // anything under it, a struct's field, which changes the entry's value. + _markModified(edit = 'value') { const entry = this.owningEntry; for (let node = this; node && node !== entry; node = node.parent) { if (node._rawInput !== undefined) { @@ -669,6 +673,9 @@ export default class DataNode extends BaseNode { } if (entry) { entry.status = 'Modified'; + if (edit !== 'name' || entry !== this) { + entry._valueEdited = true; + } if (entry._rawInput !== undefined) { entry._rawInput = undefined; } diff --git a/dist/datamodel/node/DataNode.js.map b/dist/datamodel/node/DataNode.js.map index 0e533aa0..1c7b96e9 100644 --- a/dist/datamodel/node/DataNode.js.map +++ b/dist/datamodel/node/DataNode.js.map @@ -1 +1 @@ -{"version":3,"file":"DataNode.js","sourceRoot":"","sources":["../../../src/datamodel/node/DataNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"DataNode.js","sourceRoot":"","sources":["../../../src/datamodel/node/DataNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/node/data/MatlabVariableNode.d.ts b/dist/datamodel/node/data/MatlabVariableNode.d.ts index 595eabc8..787c6fdd 100644 --- a/dist/datamodel/node/data/MatlabVariableNode.d.ts +++ b/dist/datamodel/node/data/MatlabVariableNode.d.ts @@ -240,7 +240,7 @@ export default class MatlabVariableNode extends DataNode { _shapeAfter(parsed: ParsedValue): ValueShape; _isConstrainedChild(): boolean; _setConstrainedValue(stringValue: string): true | SetPropertyResult; - _markModified(): void; + _markModified(edit?: 'value' | 'name'): void; _syncElementFromChild(child: BaseNode): void; _applyParsed(parsed: { type: string; diff --git a/dist/datamodel/node/data/MatlabVariableNode.d.ts.map b/dist/datamodel/node/data/MatlabVariableNode.d.ts.map index 9a032db4..de451abc 100644 --- a/dist/datamodel/node/data/MatlabVariableNode.d.ts.map +++ b/dist/datamodel/node/data/MatlabVariableNode.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"MatlabVariableNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/data/MatlabVariableNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"MatlabVariableNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/data/MatlabVariableNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/node/data/MatlabVariableNode.js b/dist/datamodel/node/data/MatlabVariableNode.js index d343c897..02686321 100644 --- a/dist/datamodel/node/data/MatlabVariableNode.js +++ b/dist/datamodel/node/data/MatlabVariableNode.js @@ -1358,7 +1358,7 @@ export default class MatlabVariableNode extends DataNode { // every MatlabVariableNode above it, because the save path reads `_var` from the // TOP-LEVEL variable: a struct field's edit has to make the STRUCT's snapshot // stale, not just the field's own. See the _var getter for why. - _markModified() { + _markModified(edit = 'value') { let node = this; while (node instanceof MatlabVariableNode) { node._varStale = true; @@ -1370,7 +1370,7 @@ export default class MatlabVariableNode extends DataNode { } node = node.parent; } - super._markModified(); + super._markModified(edit); } // Push an edited element's new value into this container's _elements slot. // _elements and the child nodes are two copies of the same data: the children diff --git a/dist/datamodel/node/data/MatlabVariableNode.js.map b/dist/datamodel/node/data/MatlabVariableNode.js.map index 125b4511..7505cb6c 100644 --- a/dist/datamodel/node/data/MatlabVariableNode.js.map +++ b/dist/datamodel/node/data/MatlabVariableNode.js.map @@ -1 +1 @@ -{"version":3,"file":"MatlabVariableNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/data/MatlabVariableNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"MatlabVariableNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/data/MatlabVariableNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/parser/MatFileWriter.d.ts b/dist/datamodel/parser/MatFileWriter.d.ts new file mode 100644 index 00000000..71ea55b5 --- /dev/null +++ b/dist/datamodel/parser/MatFileWriter.d.ts @@ -0,0 +1,9 @@ +import type MatNode from '../node/container/MatNode.js'; +/** + * The bytes of the MAT-file `matNode` is, as it stands now: what was edited written fresh, + * everything else as the bytes it was read from. Throws MatWriteError, naming the variable or + * the file and why, for anything it cannot write as what it is (see the file header), and + * never hands back bytes that did not read back as planned. + */ +export declare function serializeMatFile(matNode: MatNode): Uint8Array; +//# sourceMappingURL=MatFileWriter.d.ts.map \ No newline at end of file diff --git a/dist/datamodel/parser/MatFileWriter.d.ts.map b/dist/datamodel/parser/MatFileWriter.d.ts.map new file mode 100644 index 00000000..6a1a19f3 --- /dev/null +++ b/dist/datamodel/parser/MatFileWriter.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"MatFileWriter.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/MatFileWriter.ts"],"names":[],"mappings":"AAsDA,OAAO,KAAK,OAAO,MAAM,8BAA8B,CAAC;AAMxD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,CAuC7D"} \ No newline at end of file diff --git a/dist/datamodel/parser/MatFileWriter.js b/dist/datamodel/parser/MatFileWriter.js new file mode 100644 index 00000000..7ea46b6a --- /dev/null +++ b/dist/datamodel/parser/MatFileWriter.js @@ -0,0 +1,659 @@ +// Copyright 2026 The MathWorks, Inc. +// +// A save of a Level-5 MAT-file (`-v6`, `-v7`): the file it was read from, with what was edited +// written fresh and everything else written as the bytes it was read from. +// +// WHY A SPLICE. A MAT-file is a header and a run of top-level records, each one variable, and +// the last one, unnamed, the subsystem that holds every object of the file. Nothing in a record +// points at another record, and nothing in the subsystem names a variable. So a record nobody +// edited can be written back as its own bytes, compressed as it was, which no re-encode +// reproduces: inflated and deflated again by fflate at level 6, 18 of the 78 compressed records +// of test/parity/artifacts/mat/cases.mat come back as they were. And the reader holds what it +// did not read (a record it could not inflate, a class it does not model) only as bytes. This +// is MATLAB's own update model too: measured against MATLAB R2027a, `save -append` copies every +// record it does not replace byte for byte, a compressed one included, keeps the header's text, +// and writes the subsystem last. +// +// What each record of the file becomes, in the file's order (plan): +// +// the node it became was deleted nothing +// unedited its own bytes +// only renamed its element with the name replaced (MatWriter. +// elementNamed), compressed again if it was +// its value edited, a plain value written fresh (MatlabVariableNode._matStream), +// named, compressed when the file holds any +// compressed record +// no node: the subsystem, a record the its own bytes +// reader dropped +// +// and a variable added since the read is written fresh, after the last variable and before the +// subsystem. The header keeps its 116 bytes of text and its version and byte-order mark, and +// bytes 116-123 say where the subsystem now starts, which MATLAB trusts without a scan +// (measured against MATLAB R2027a: a stale offset fails the whole load). +// +// "Unedited" is decided by the node's status, which every edit sets (DataNode._markModified), +// and never by whether a value still has the bytes it was read from: those stay on a variable +// after an edit. "Only renamed" is the status, a name that is not the record's, and no edit of +// the value (DataNode._valueEdited). +// +// EVERY DOUBT REFUSES THE SAVE. A save that cannot write a variable as what it is throws a +// MatWriteError naming it, and nothing is written: an object, a function handle or a value the +// reader did not decode, whose edit this writer cannot write; a variable stored after the +// subsystem, where MATLAB does not read it; a file whose records do not tile it, or that was +// opened without them. And before the bytes are handed back they are read again, and a record +// that does not read back as planned refuses the save as well (selfCheck). +import { zlibSync } from 'fflate'; +import { inflateZlib } from './Inflate.js'; +import { parseMat, functionHandleOf } from './MatParser.js'; +import { MatBudgetError, MatWriteError, classPhrase, elementNamed, encodeMatVariable } from './MatWriter.js'; +import { integerConversion } from './XmlUtils.js'; +import { validateMatlabName } from '../matlabName.js'; +const MI_MATRIX = 14; +const MI_COMPRESSED = 15; +/** + * The bytes of the MAT-file `matNode` is, as it stands now: what was edited written fresh, + * everything else as the bytes it was read from. Throws MatWriteError, naming the variable or + * the file and why, for anything it cannot write as what it is (see the file header), and + * never hands back bytes that did not read back as planned. + */ +export function serializeMatFile(matNode) { + const file = matNode.name; + const { records, headerBytes } = matNode; + if (!records || !headerBytes) { + throw new MatWriteError('Cannot save "' + file + '": it was opened without the records a save writes back, so a save would lose every one ' + + 'this package did not read. Nothing was written.'); + } + // The records are views of the bytes the file was read from, which a host that transfers + // them to a worker afterwards empties: what was not edited would be written as nothing. + const gone = headerBytes.byteLength !== 128 ? { offset: 0, length: 128, bytes: headerBytes } : records.find((r) => r.bytes.byteLength !== r.length); + if (gone) { + throw new MatWriteError('Cannot save "' + file + '": the bytes it was read from are no longer held (the ' + (gone.offset === 0 ? 'header' : 'record at byte ' + gone.offset) + + ' holds ' + gone.bytes.byteLength + ' of its ' + gone.length + '), so what was not edited could not be written as it was. ' + + 'Nothing was written.'); + } + if (!matNode.framed) { + const at = matNode.unframed?.at ?? 128; + const unframedBytes = headerBytes.buffer.byteLength - headerBytes.byteOffset - at; + throw new MatWriteError('Cannot save "' + file + '": this package could not frame ' + unframedBytes + ' byte(s) of it, from byte ' + at + + (matNode.unframed ? ' (' + matNode.unframed.reason + ')' : '') + + ', so a save could not keep them as they are. Nothing was written.'); + } + const subsystem = subsystemOf(matNode, records); + const plan = planOf(matNode, records, subsystem); + // Nothing deleted, renamed, edited or added: the file, as it was read. + if (plan.length === records.length && plan.every((p, i) => p.kind === 'verbatim' && p.record === records[i])) { + return concat([headerBytes, ...records.map((r) => r.bytes)]); + } + refuseStructure(matNode, records, subsystem); + const assembled = assemble(headerBytes, plan, subsystem); + selfCheck(file, assembled.bytes, plan, assembled, headerBytes); + return assembled.bytes; +} +// The record `matNode`'s header says its subsystem starts at, or null when it says there is none, +// or names a byte where no unnamed record starts (refuseStructure). By offset, and not by which +// record has no name: a matrix too short for its own flags reads as unnamed too. And unnamed, +// because a variable the header points at is a variable, whose edit is written or refused as +// any other's, and not passed over as the subsystem it is not. +function subsystemOf(matNode, records) { + if (matNode.subsystemOffset === 0) { + return null; + } + return records.find((r) => r.offset === matNode.subsystemOffset && r.anonymous) ?? null; +} +// The file's records, each as a save writes it, in the file's order, and every variable added +// since the read just before the subsystem, or at the end of a file with none, in the order they +// were added. A record that became no node (the subsystem, one the reader dropped) is its own +// bytes. One past the subsystem, which MATLAB does not read, is too, and its edit refuses the +// save: written where it is, MATLAB still would not read it, and moved, what MATLAB loads of the +// file would change. Deleting one changes nothing MATLAB loads, and is written. +function planOf(matNode, records, subsystem) { + const compress = records.some((r) => r.compressed); + const added = matNode.children.filter((c) => matNode.recordOf(c) === null); + const plan = []; + const addAdded = () => { + for (const node of added) { + plan.push(freshOf(node, null, compress)); + } + }; + let pastSubsystem = false; + for (const record of records) { + if (record === subsystem) { + addAdded(); + plan.push({ kind: 'verbatim', record }); + pastSubsystem = true; + continue; + } + const node = matNode.nodeOf(record); + if (!node) { + plan.push({ kind: 'verbatim', record }); + continue; + } + if (node.parent !== matNode) { + continue; + } + const edit = editOf(node, record); + if (edit === 'none') { + plan.push({ kind: 'verbatim', record }); + } + else if (pastSubsystem) { + throw refusal(node.name, 'it is stored after the file\'s objects, where MATLAB does not read it, so it would not be read written there, ' + + 'and moved, it would change what MATLAB loads of the file'); + } + else if (edit === 'name') { + plan.push(renamedOf(node, record)); + } + else { + plan.push(freshOf(node, record, compress)); + } + } + if (!subsystem) { + addAdded(); + } + refuseDuplicates(plan); + return plan; +} +// What has happened to the variable `record` became, `node`: decided by its status, which every +// edit sets (DataNode._markModified), and by whether anything but its own rename set it +// (DataNode._valueEdited). A rename undone leaves the status set and the name the file's: it is +// unedited. Its name is asked whatever the status, so that a rename made around the API, which +// sets none, is still written as one. +function editOf(node, record) { + const { status, _valueEdited } = node; + if (status === 'New' || (status === 'Modified' && _valueEdited)) { + return 'value'; + } + return node.name !== record.name ? 'name' : 'none'; +} +// A save of a file with an unnamed record that is not its subsystem, or whose header puts its +// subsystem where no unnamed record starts, cannot place what it writes where MATLAB reads it: +// measured against MATLAB R2027a, MATLAB lists no variable past the first unnamed record, and a +// header offset that is not the subsystem's fails the whole load. Asked only of a save that +// changes the file: one that does not hands back the bytes it was read from. +function refuseStructure(matNode, records, subsystem) { + const file = matNode.name; + const offset = matNode.subsystemOffset; + if (offset !== 0 && !subsystem) { + throw new MatWriteError('Cannot save "' + file + '": its header places the file\'s objects at byte ' + offset + ', where ' + + (records.some((r) => r.offset === offset) ? 'a variable is' : 'no record starts') + ', so a save cannot say where they are. ' + + 'Nothing was written.'); + } + const stray = records.find((r) => r.anonymous && r !== subsystem); + if (stray) { + throw new MatWriteError('Cannot save "' + file + '": the record at byte ' + stray.offset + ' holds a value with no name that is not the ' + + 'file\'s objects, and MATLAB reads no variable past one, so a save cannot place an edit where MATLAB reads it. ' + + 'Nothing was written.'); + } +} +// Two records of one name: MATLAB loads one of them (measured against MATLAB R2027a: `load f` +// keeps the last, `load f x` the first). A file that holds two keeps them, as it was read; a +// rename or an addition that would make two is refused, naming the variable. +function refuseDuplicates(plan) { + const count = new Map(); + const nameOf = (p) => (p.kind === 'verbatim' ? p.record.name : p.name); + for (const p of plan) { + count.set(nameOf(p), (count.get(nameOf(p)) ?? 0) + 1); + } + for (const p of plan) { + if (p.kind !== 'verbatim' && count.get(p.name) > 1) { + throw refusal(p.name, 'the file would hold two variables named "' + p.name + '", and MATLAB loads only one of them'); + } + } +} +// The refusal of a save for variable `name`, worded as every refused write is (MatWriter's +// budgetFailure, DataNode's): the variable, why, and that nothing was written. +function refusal(name, why) { + return new MatWriteError('Cannot write "' + name + '": ' + why + '. Nothing was written.'); +} +// A name this writer puts in an element: a valid MATLAB name, by the rule a rename is held to +// (matlabName), which is stricter than MATLAB's and holds for older releases. A variable added +// by a caller that named it itself (MatNode.execAddEntry) has had no other check. +function refuseName(name) { + const error = validateMatlabName(name); + if (error) { + throw refusal(name, 'it is not a name MATLAB can load (' + error + ')'); + } +} +// ---- What a renamed or an edited record is written as ----------------------------------------- +// The record of a variable only renamed: its element as read, with the name subelement replaced +// (MatWriter.elementNamed) and every other byte copied, compressed again when it was. An object +// variable, a function handle and a value the reader did not decode are renamed so as well: +// nothing of them but their name is written. +function renamedOf(node, record) { + const name = node.name; + refuseName(name); + const element = elementOfRecord(record); + const named = element ? elementNamed(element, name) : null; + if (!named) { + throw refusal(name, 'the record it was read from, at byte ' + record.offset + ', is not a whole element whose name can be replaced, so it cannot be renamed'); + } + return { kind: 'renamed', record, name, bytes: recordBytes(named, record.compressed) }; +} +// The record of a value written fresh: `node`'s, an edited variable read from `record` or one +// added since, named, and compressed when the file holds any compressed record, so that a `-v6` +// file, which holds none and is readable by every MATLAB, stays one. +// +// Only a plain MATLAB value is written fresh. A variable that was an object, a string, a function +// handle or a value the reader did not decode is refused when anything but its name changed, as +// is a typed object's node, whatever it holds now: this writer has no encoder for an object, and +// the record's own bytes, which are the only thing it could write, are no longer the value. +function freshOf(node, record, compress) { + const name = node.name; + refuseName(name); + const was = record?.variable ? notPlain(record.variable) : null; + const value = valueNodeOf(node); + if (was || !value) { + const what = was ?? classPhrase(String(node.className || 'object')); + throw refusal(name, 'it is ' + what + ', which a MAT-file save writes only as it was read, or renamed, so its edit cannot be saved'); + } + const named = elementNamed(freshElement(value), name); + if (!named) { + throw refusal(name, 'the element written for it has no name to replace'); + } + return { kind: 'fresh', record, node: value, name, bytes: recordBytes(named, compress) }; +} +// `node` as the node of a plain MATLAB value, or null for a node of another class: a typed +// object's (a ParameterNode, a BusNode). Asked of what the node does rather than of its class, +// which this layer does not import (test/moduleBoundaries): a MatlabVariableNode, and only it, +// writes its value as a MAT stream. +function valueNodeOf(node) { + const v = node; + return typeof v._matStream === 'function' && typeof v._matWritable === 'function' ? v : null; +} +// What a variable read as `v` is, in words, when it is not a plain MATLAB value; null when it is. +function notPlain(v) { + if (v.isOpaque) { + return classPhrase(v.className || 'object'); + } + if (functionHandleOf(v) || v.className === 'function_handle') { + return 'a function handle'; + } + if (v.className === 'unknown' || v.undecoded) { + return 'a value that was not decoded'; + } + return null; +} +// The miMATRIX element `node`'s value is, with the empty name a stream's value has: the stream it +// is written as in a dictionary (_matStream), which writes a sparse array no element row edited +// and a struct array with no element rows as the bytes they were read from, and anything else as +// MatWriter writes it. Refused, naming what in it this writer cannot write, when it holds what +// MatWriter has no variable for or would write as what it is not (_matWritable): an object, a +// string, a function handle, a value not decoded. And refused, finally, as a dictionary's save +// refuses it, for a value with no form at all (_heldNone, _refuseNoSize) or past MatWriter's +// budget, restated naming the variable (_budgetFailure). +function freshElement(node) { + const unwritable = unwritableIn(node); + if (unwritable) { + throw refusal(node.name, unwritable.path + ' is ' + unwritable.what + ', which this package cannot write into a MAT-file'); + } + if (node._heldNone()) { + throw node._heldNoneRefusal(); + } + node._refuseNoSize(); + const stream = node._matStream(); + if (stream) { + return stream.subarray(8); + } + // _matStream answers null for a refusal of MatWriter's other than its budget's: asked again, + // for its reason. + try { + encodeMatVariable(node._var); + } + catch (e) { + if (e instanceof MatBudgetError) { + throw node._budgetFailure(e); + } + if (e instanceof MatWriteError) { + throw refusal(node.name, e.message); + } + throw e; + } + throw refusal(node.name, 'no MAT element could be written for it'); +} +// The first node at or under `node` that MatWriter cannot write as what it is (the rule of +// MatlabVariableNode._matWritable), with its MATLAB path and what it is, or null for none. +function unwritableIn(at) { + const node = valueNodeOf(at); + if (!node) { + return { path: at.matlabPath, what: classPhrase(String(at.className || 'object')) }; + } + if (node._matWritable()) { + return null; + } + if (node._isOpaque) { + return { path: node.matlabPath, what: classPhrase(node._opaqueClassName || 'object') }; + } + if (node._undecoded) { + return { path: node.matlabPath, what: 'a value that was not decoded' }; + } + if (node._scalarType === 'string' || node._scalarType === 'function_handle') { + return { path: node.matlabPath, what: node._scalarType === 'string' ? 'a string' : 'a function handle' }; + } + for (const child of node.children) { + const below = unwritableIn(child); + if (below) { + return below; + } + } + return { path: node.matlabPath, what: 'a value MatWriter has no variable for' }; +} +// The miMATRIX element a record holds: its own bytes for a plain one, its payload inflated for a +// compressed one. Null when there is no whole element, or bytes after it: a record that is not +// one MATLAB writes is not one to rename. +function elementOfRecord(record) { + const bytes = record.bytes; + if (bytes.byteLength < 8) { + return null; + } + const nbytes = u32At(bytes, 4); + if (!record.compressed) { + return u32At(bytes, 0) === MI_MATRIX && 8 + nbytes <= bytes.byteLength ? bytes.subarray(0, 8 + nbytes) : null; + } + let inflated; + try { + inflated = inflateZlib(bytes.subarray(8, 8 + nbytes)); + } + catch { + return null; + } + if (inflated.byteLength < 8 || u32At(inflated, 0) !== MI_MATRIX) { + return null; + } + return 8 + u32At(inflated, 4) === inflated.byteLength ? inflated : null; +} +// A top-level record of `element`: the element itself, which MatWriter pads to 8 bytes as a plain +// record must be, or its zlib stream (RFC 1950, which MATLAB requires; level 6, MATLAB's default) +// in an miCOMPRESSED tag, with no padding after it, as MATLAB writes one. +function recordBytes(element, compress) { + if (!compress) { + return element; + } + const stream = zlibSync(element, { level: 6 }); + return concat([u32le(MI_COMPRESSED), u32le(stream.byteLength), stream]); +} +// The header and the planned records, back to back. The header is the file's own: its text +// (bytes 0-115, which MATLAB keeps on `-append` and never reads), and its version and byte-order +// mark (124-127). Bytes 116-123 are the subsystem's new offset, a little-endian uint64, or, in a +// file with no subsystem, the file's own: zeros or spaces, both of which MATLAB reads as none. +function assemble(headerBytes, plan, subsystem) { + const header = headerBytes.slice(); + const parts = [header]; + const offsets = []; + let subsystemAt = null; + let at = header.byteLength; + for (const p of plan) { + const bytes = p.kind === 'verbatim' ? p.record.bytes : p.bytes; + offsets.push(at); + if (p.kind === 'verbatim' && p.record === subsystem) { + subsystemAt = at; + } + parts.push(bytes); + at += bytes.byteLength; + } + if (subsystemAt !== null) { + new DataView(header.buffer, header.byteOffset, header.byteLength).setBigUint64(116, BigInt(subsystemAt), true); + } + return { bytes: concat(parts), offsets, subsystemAt }; +} +// ---- The self-check --------------------------------------------------------------------------- +// +// The bytes about to be handed back, read again by this package's reader, against the plan: the +// header kept, and saying where the subsystem now is; the records the ones planned, at the offsets +// planned, and every one of them framed; each record written as its own bytes those bytes; each +// renamed one named as planned and, but for its name, its element byte for byte; each written +// fresh named as planned and reading back as the value it was written from, its class, size and +// every element. Any difference refuses the save. +// +// This proves what was written is what was planned, and not that MATLAB loads it: this reader +// reads files MATLAB refuses. +function selfCheck(file, bytes, plan, assembled, headerBytes) { + const fail = (why) => { + throw new MatWriteError('Cannot save "' + file + '": the file written for it did not read back as written: ' + why + '. Nothing was written.'); + }; + let parsed; + try { + // `bytes` is the whole of its buffer (concat), which the reader may take as it is. + parsed = parseMat(bytes.buffer); + } + catch (e) { + return fail('it does not open (' + (e instanceof Error ? e.message : String(e)) + ')'); + } + if (!parsed.framed) { + return fail('its records do not tile it (' + (parsed.unframed?.reason ?? '') + ')'); + } + const head = parsed.headerBytes; + if (!sameBytes(head.subarray(0, 116), headerBytes.subarray(0, 116)) || !sameBytes(head.subarray(124), headerBytes.subarray(124))) { + return fail('its header is not the one it was read with'); + } + const subsystemSaid = assembled.subsystemAt ?? 0; + if (parsed.subsystemOffset !== subsystemSaid) { + return fail('its header places its objects at byte ' + parsed.subsystemOffset + ', and they are at byte ' + subsystemSaid); + } + if (parsed.records.length !== plan.length) { + return fail('it holds ' + parsed.records.length + ' record(s) where ' + plan.length + ' were written'); + } + plan.forEach((p, i) => { + const got = parsed.records[i]; + const at = assembled.offsets[i]; + if (got.offset !== at) { + fail('a record starts at byte ' + got.offset + ' where one was written at byte ' + at); + } + if (p.kind === 'verbatim') { + if (!sameBytes(got.bytes, p.record.bytes)) { + fail('the record at byte ' + at + ' is not the bytes it was read from'); + } + return; + } + if (got.status !== 'read' || got.anonymous || got.name !== p.name || got.variable?.name !== p.name) { + fail('the record at byte ' + at + ', written as "' + p.name + '", reads as ' + (got.status === 'read' ? '"' + got.name + '"' : 'no variable')); + } + if (p.kind === 'renamed') { + const before = elementOfRecord(p.record); + const after = elementOfRecord(got); + const unnamed = (e) => (e ? elementNamed(e, '') : null); + const was = unnamed(before); + const is = unnamed(after); + if (!was || !is || !sameBytes(was, is)) { + fail('"' + p.name + '" is not, but for its name, the element it was read as'); + } + return; + } + const difference = differs(p.node._var, got.variable, p.name); + if (difference) { + fail(difference); + } + }); +} +// Where the value read back, `read`, is not the value `model` it was written from, in words, or +// null where it is that value: the same class, complexity, storage and size, the same members of a +// cell, the same fields of a struct in the same order, and each element the same number as its +// class holds it. MatWriter's own rules are taken as the model's meaning, not its result: an +// integer element as MATLAB converts it to the class, a single's as a float32, a member a cell or +// a struct does not hold as the empty double written for it. +function differs(model, read, at) { + const m = model ?? EMPTY_DOUBLE; + const r = read ?? EMPTY_DOUBLE; + const cls = classOf(m); + const said = (what, was, is) => at + ': its ' + what + ' reads back as ' + is + ' where ' + was + ' was written'; + if (classOf(r) !== cls) { + return said('class', cls, classOf(r)); + } + const md = dimsOf(m); + if (md.join('x') !== r.dimensions.join('x')) { + return said('size', md.join('x'), r.dimensions.join('x')); + } + if (!!m.isComplex !== !!r.isComplex || !!m.isSparse !== !!r.isSparse) { + return said('storage', storageOf(m), storageOf(r)); + } + const n = md.reduce((a, b) => a * b, 1); + if (m.isSparse) { + return sparseDiffers(m, r, cls, at); + } + if (cls === 'cell') { + const mc = flatValues(m.value); + const rc = flatValues(r.value); + for (let i = 0; i < n; i++) { + const d = differs(mc[i], rc[i], at + '{' + (i + 1) + '}'); + if (d) { + return d; + } + } + return null; + } + if (cls === 'struct') { + const mf = m.fields ?? {}; + const rf = r.fields ?? {}; + const names = Object.keys(mf); + if (names.join(',') !== Object.keys(rf).join(',')) { + return said('fields', names.join(', ') || 'none', Object.keys(rf).join(', ') || 'none'); + } + for (let e = 0; e < n; e++) { + for (const name of names) { + const d = differs(memberOf(mf[name], e, n), memberOf(rf[name], e, n), at + (n === 1 ? '' : '(' + (e + 1) + ')') + '.' + name); + if (d) { + return d; + } + } + } + return null; + } + if (cls === 'char') { + const was = String(m.value ?? ''); + const is = String(r.value ?? ''); + return was === is ? null : said('text', JSON.stringify(was), JSON.stringify(is)); + } + const mv = flatValues(m.value); + const rv = flatValues(r.value); + if (mv.length !== n || rv.length !== n) { + return said('element count', String(mv.length), String(rv.length)); + } + const same = sameNumberFor(cls); + for (let i = 0; i < n; i++) { + for (const part of m.isComplex ? ['re', 'im'] : ['re']) { + const was = partOf(mv[i], part); + const is = partOf(rv[i], part); + if (!same(was, is)) { + return said('element ' + (i + 1) + (m.isComplex ? ' (' + (part === 're' ? 'real' : 'imaginary') + ' part)' : ''), String(was), String(is)); + } + } + } + return null; +} +// A sparse array's non-zeros, compared as a set of (row, column) to value: the order a writer +// puts them in is its own, and an explicit zero is not a non-zero MATLAB keeps. +function sparseDiffers(m, r, cls, at) { + const ms = m.sparse; + const rs = r.sparse; + if (!ms || !rs) { + return at + ': it holds no non-zeros to compare'; + } + const same = sameNumberFor(cls); + const entries = (s) => { + const out = new Map(); + for (let k = 0; k < s.row.length; k++) { + const re = s.re[k]; + const im = s.im ? s.im[k] : 0; + if (re !== 0 || im !== 0) { + out.set(s.row[k] + ',' + s.col[k], [re, im]); + } + } + return out; + }; + const was = entries(ms); + const is = entries(rs); + if (was.size !== is.size) { + return at + ': it reads back with ' + is.size + ' non-zero(s) where ' + was.size + ' were written'; + } + for (const [where, [re, im]] of was) { + const got = is.get(where); + if (!got || !same(re, got[0]) || !same(im, got[1])) { + const [row, col] = where.split(',').map(Number); + return at + ': its non-zero at (' + (row + 1) + ',' + (col + 1) + ') does not read back as written'; + } + } + return null; +} +const EMPTY_DOUBLE = { name: '', className: 'double', dimensions: [0, 0], isComplex: false, isLogical: false, value: null, fields: null }; +const INTEGER_CLASS = /^u?int(?:8|16|32|64)$/; +// MATLAB's class of `v`: a logical array is class uint8 with the logical flag, in a file and in +// the variable the node layer hands MatWriter. +function classOf(v) { + return v.isLogical || v.className === 'logical' ? 'logical' : v.className; +} +function storageOf(v) { + return (v.isSparse ? 'sparse' : 'full') + (v.isComplex ? ' complex' : ' real'); +} +// Whether two elements of class `cls` are the one number the class holds: an integer class's as +// MATLAB converts a value to it (integerConversion: rounded, saturated, NaN as 0), a logical's as a +// uint8, a single's as a float32, and a double's as itself, NaN equal to NaN and -0 not to 0. +function sameNumberFor(cls) { + if (INTEGER_CLASS.test(cls) || cls === 'logical') { + const to = integerConversion(cls === 'logical' ? 'uint8' : cls); + return (a, b) => String(to(a)) === String(to(b)); + } + if (cls === 'single') { + return (a, b) => Object.is(Math.fround(Number(a)), Math.fround(Number(b))); + } + return (a, b) => Object.is(Number(a), Number(b)); +} +// One part of a numeric element: a complex one is `{re, im}`, and a real one its real part, with +// an imaginary part of 0. +function partOf(x, part) { + if (x !== null && typeof x === 'object' && 're' in x) { + return x[part]; + } + return part === 're' ? x : 0; +} +// Element `e` of `n` of a struct field: a struct array holds one variable per element, a 1x1 +// struct the variable itself (MatVariable.fields). +function memberOf(held, e, n) { + return Array.isArray(held) ? held[e] : n === 1 ? held : undefined; +} +// A MAT element has at least two dimensions; a variable may say fewer (MatWriter.dimsOf). +function dimsOf(v) { + const d = (v.dimensions || []).slice(); + while (d.length < 2) { + d.push(1); + } + return d; +} +// The values of a variable as one list: MatParser leaves a 1x1 a bare value and an empty one null. +function flatValues(value) { + if (value === null || value === undefined) { + return []; + } + return Array.isArray(value) ? value : [value]; +} +// ---- Bytes ------------------------------------------------------------------------------------ +function concat(parts) { + let total = 0; + for (const p of parts) { + total += p.byteLength; + } + const out = new Uint8Array(total); + let at = 0; + for (const p of parts) { + out.set(p, at); + at += p.byteLength; + } + return out; +} +function u32le(n) { + const out = new Uint8Array(4); + new DataView(out.buffer).setUint32(0, n >>> 0, true); + return out; +} +function u32At(bytes, at) { + return new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength).getUint32(at, true); +} +function sameBytes(a, b) { + if (a.byteLength !== b.byteLength) { + return false; + } + for (let i = 0; i < a.byteLength; i++) { + if (a[i] !== b[i]) { + return false; + } + } + return true; +} +//# sourceMappingURL=MatFileWriter.js.map \ No newline at end of file diff --git a/dist/datamodel/parser/MatFileWriter.js.map b/dist/datamodel/parser/MatFileWriter.js.map new file mode 100644 index 00000000..0450137e --- /dev/null +++ b/dist/datamodel/parser/MatFileWriter.js.map @@ -0,0 +1 @@ +{"version":3,"file":"MatFileWriter.js","sourceRoot":"","sources":["../../../src/datamodel/parser/MatFileWriter.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/parser/MatWriter.d.ts b/dist/datamodel/parser/MatWriter.d.ts index 7a6dec15..a054a1e7 100644 --- a/dist/datamodel/parser/MatWriter.d.ts +++ b/dist/datamodel/parser/MatWriter.d.ts @@ -132,6 +132,23 @@ export declare function encodeMatStream(v: MatVariable): Uint8Array; * way, and its subsystem lives elsewhere in the file, so it is refused. */ export declare function matStreamOfElement(raw: Uint8Array): Uint8Array | null; +/** + * The miMATRIX element `raw` holds as read, named `name`: the inverse of ownElement, for a + * variable of a MAT-file, which carries its name in its element as a stream's value does not. + * Every byte but the name subelement's is copied, and the element's size restated, so a + * variable renamed and saved is the value it was, byte for byte, whatever this writer would + * write for it. Null when the bytes are not a whole element whose name this can find. + * + * An MCOS object's element (class 17) is renamed as well: its name comes straight after its + * array flags, with no dimensions before it, and then the type system's name and the object's + * class, which are kept. Measured against MATLAB R2027a: the file's subsystem holds no + * variable's name, so an object variable renamed this way loads as the same object, a + * Simulink.Parameter and a string alike. + * + * The name is written as MATLAB writes one, miINT8 with its UTF-8 bytes, in the small form + * when it is 1 to 4 bytes long (element). + */ +export declare function elementNamed(raw: Uint8Array, name: string): Uint8Array | null; /** * A complex value's plain-text form — `{_type: 'cdata', _value: '1+2i 5+6i 3+4i 7+8i', * _dimensions, _class?}`, what BinarySlddParser reads out of a binary dictionary and diff --git a/dist/datamodel/parser/MatWriter.d.ts.map b/dist/datamodel/parser/MatWriter.d.ts.map index f8b66770..9b073326 100644 --- a/dist/datamodel/parser/MatWriter.d.ts.map +++ b/dist/datamodel/parser/MatWriter.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"MatWriter.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/MatWriter.ts"],"names":[],"mappings":"AAwCA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AA2BlD;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,KAAK;gBAC1B,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,cAAe,SAAQ,aAAa;IAC/C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,aAAa,GAAG,YAAY,GAAG,cAAc,GAAG,aAAa,GAAG,aAAa,CAAC;IAC1G,yFAAyF;IACzF,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;gBACd,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,GAAE,cAAc,CAAC,QAAQ,CAAY;CASnH;AAkMD;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,QAAmB,CAAC;AAatD,+CAA+C;AAC/C,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAU7C;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAE/D;AAiCD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc,CAe7F;AAQD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG/C;AA6WD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,kBAAkB,GAAG,MAAM,GAAG,IAAI,CAsBvE;AAED,KAAK,kBAAkB,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,YAAY,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC,CAAC;AAiDzH;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,WAAW,GAAG,UAAU,CAgB5D;AAuFD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAOpE;AA4CD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAElD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,WAAW,GAAG,UAAU,CAE1D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,CAGrE;AAuDD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,CA2BpE;AAwED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CA+BzD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,SAAK,GAAG,OAAO,CAE/D;AAsVD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAqBjG"} \ No newline at end of file +{"version":3,"file":"MatWriter.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/MatWriter.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/parser/MatWriter.js b/dist/datamodel/parser/MatWriter.js index 39632266..edff652a 100644 --- a/dist/datamodel/parser/MatWriter.js +++ b/dist/datamodel/parser/MatWriter.js @@ -1006,12 +1006,41 @@ function ownElement(raw) { const body = concat([raw.slice(8, at.nameAt), emptyName(), raw.slice(at.nameAt + at.name, at.end)]); return concat([u32le(MI_MATRIX), u32le(body.length), body]); } +/** + * The miMATRIX element `raw` holds as read, named `name`: the inverse of ownElement, for a + * variable of a MAT-file, which carries its name in its element as a stream's value does not. + * Every byte but the name subelement's is copied, and the element's size restated, so a + * variable renamed and saved is the value it was, byte for byte, whatever this writer would + * write for it. Null when the bytes are not a whole element whose name this can find. + * + * An MCOS object's element (class 17) is renamed as well: its name comes straight after its + * array flags, with no dimensions before it, and then the type system's name and the object's + * class, which are kept. Measured against MATLAB R2027a: the file's subsystem holds no + * variable's name, so an object variable renamed this way loads as the same object, a + * Simulink.Parameter and a string alike. + * + * The name is written as MATLAB writes one, miINT8 with its UTF-8 bytes, in the small form + * when it is 1 to 4 bytes long (element). + */ +export function elementNamed(raw, name) { + const at = ownElementName(raw, true); + if (!at) { + return null; + } + const named = element(MI_INT8, new TextEncoder().encode(name)); + const body = concat([raw.slice(8, at.nameAt), named, raw.slice(at.nameAt + at.name, at.end)]); + return concat([u32le(MI_MATRIX), u32le(body.length), body]); +} /** * Where the name subelement of the miMATRIX element `raw` holds is, and where the element * ends; null when the bytes are not a whole one ownElement can re-frame. Read, not built, so * it can be asked of every member before a write (refuseDimsBelow). + * + * An MCOS object's element has no stream of its own (matStreamOfElement), so it is found only + * when `opaque` is set, for a variable's rename (elementNamed): its name is the subelement + * after its flags, where any other class has its dimensions. */ -function ownElementName(raw) { +function ownElementName(raw, opaque = false) { if (raw.length < 8) { return null; } @@ -1033,12 +1062,13 @@ function ownElementName(raw) { return 8 + n + ((8 - (n % 8)) % 8); }; const flags = subLength(8); - if (!flags || raw[16] === 17) { + const isOpaque = raw[16] === 17; + if (!flags || (isOpaque && !opaque)) { return null; } - const dims = subLength(8 + flags); + const dims = isOpaque ? 0 : subLength(8 + flags); const nameAt = 8 + flags + dims; - const name = dims ? subLength(nameAt) : 0; + const name = dims || isOpaque ? subLength(nameAt) : 0; if (!name || nameAt + name > end) { return null; } diff --git a/dist/datamodel/parser/MatWriter.js.map b/dist/datamodel/parser/MatWriter.js.map index b52b9a9b..dccd5892 100644 --- a/dist/datamodel/parser/MatWriter.js.map +++ b/dist/datamodel/parser/MatWriter.js.map @@ -1 +1 @@ -{"version":3,"file":"MatWriter.js","sourceRoot":"","sources":["../../../src/datamodel/parser/MatWriter.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"MatWriter.js","sourceRoot":"","sources":["../../../src/datamodel/parser/MatWriter.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/core/DataModel.ts b/src/core/DataModel.ts index 1b9e9ce4..f4863e34 100644 --- a/src/core/DataModel.ts +++ b/src/core/DataModel.ts @@ -12,6 +12,7 @@ import { parseMat } from '../datamodel/parser/MatParser.js'; import type { ParsedMat } from '../datamodel/parser/MatParser.js'; import { parseProject } from '../datamodel/parser/ProjectParser.js'; import { serializeBinarySldd } from '../datamodel/parser/BinarySlddSerializer.js'; +import { serializeMatFile } from '../datamodel/parser/MatFileWriter.js'; import { catalogFunctionRenames, catalogRenames, scJsonTextWithRenames } from '../datamodel/parser/ScCatalog.js'; // The name reductions and the expression reading, from the leaf modules that hold the // single copy of each. This file used to spell all three itself; the usage index needs @@ -2234,16 +2235,18 @@ function getActiveSlddNode(): ISourceNode | null { * * Null for two distinct absences, deliberately given the same answer: a srcId the * session does not hold (the same answer getDataSource gives the same question), and - * a source whose format HAS no write path. `.slx`, `.mdl`, `.mat` and `.prj` are - * read-only in this package — only `.sldd` has a writer, and only that writer has a - * live MATLAB gate behind it. Null rather than a throw because a consumer enumerating - * every open source to find the saveable ones should not need a try/catch per source, - * and because there is nothing exceptional about a project file not being writable. + * a source whose format HAS no write path. `.slx`, `.mdl` and `.prj` are read-only in + * this package — `.sldd` and `.mat` have writers. Null rather than a throw because a + * consumer enumerating every open source to find the saveable ones should not need a + * try/catch per source, and because there is nothing exceptional about a project file + * not being writable. * * Throws for a value in it that no writer may write: one past the unbacked-bytes budget, as * a MatBudgetError naming the entry, the path in it and the budget (MatWriter.budgetFailure). * Nothing is returned then — no part of a file — and nothing in the session changes, so the - * save after the value is fixed or removed is the save there would have been. + * save after the value is fixed or removed is the save there would have been. A `.mat` save + * throws a MatWriteError the same way, naming the variable or the file, for anything it + * cannot write as what it is (MatFileWriter.serializeMatFile). * * The flavour follows the FILE, not a default: a `.sldd` that arrived as a * compressed-binary package is answered with zip bytes and one that arrived as JSON @@ -2256,6 +2259,13 @@ function serializeSource(srcId: string): SerializedSource | null { if (!source) { return null; } + // A MAT-file is written as its own records, what was edited written fresh, and is + // binary whatever its records are, compressed (`-v7`) or not (`-v6`). An instanceof + // for the reason the dictionary's is below: serializeMatFile reaches for the records + // and the node bound to each, which only a MatNode built from a parse holds. + if (source instanceof MatNode) { + return { kind: 'binary', sourceFormat: source.sourceFormat, bytes: serializeMatFile(source) }; + } // An instanceof rather than a duck test on serializeJson: serializeBinarySldd // reaches for _zipMetadata and _dataSourceAttrs, so a lookalike that merely // answers the same method names would be handed to a writer built for the class. diff --git a/src/core/sessionTypes.ts b/src/core/sessionTypes.ts index 7f7cfa69..519de78c 100644 --- a/src/core/sessionTypes.ts +++ b/src/core/sessionTypes.ts @@ -52,8 +52,8 @@ export interface CreateSessionOptions { * * `sourceFormat` is the source node's OWN format string — the same vocabulary * SourceDTO.sourceFormat publishes ('json' for a textual `.sldd`, 'xml' for a - * compressed-binary one) — so a consumer can correlate the two without a mapping - * table of its own. + * compressed-binary one, 'mat' for a MAT-file, which is always `binary`) — so a + * consumer can correlate the two without a mapping table of its own. */ export type SerializedSource = | { kind: 'binary'; sourceFormat: string; bytes: Uint8Array } diff --git a/src/datamodel/node/DataNode.ts b/src/datamodel/node/DataNode.ts index da45b847..27838c6f 100644 --- a/src/datamodel/node/DataNode.ts +++ b/src/datamodel/node/DataNode.ts @@ -308,6 +308,13 @@ export default class DataNode extends BaseNode { // long as it is still the value: see _adoptEncoded. Undefined on every node but the one // a binary dictionary's `Encoding="hex"` element decoded into. _encoded?: EncodedValue; + // Set on an entry by every edit under it but the entry's own rename (_markModified), and + // never cleared, an undo included. `status` is 'Modified' after either, so this is what + // tells an entry that was only renamed, whose value is still the bytes it was read from, + // from one whose value changed: a MAT-file save writes the first as those bytes with the + // new name in them, and the second fresh (MatFileWriter). Left set by an undo, it writes + // a value equal to the one read, fresh, which is the safe side. + _valueEdited?: boolean; rawXml?: string; // A semantic classification token (e.g. 'DataInterface', 'StructType') set at // parse time for entries the source classifies beyond their Class (currently @@ -563,7 +570,7 @@ export default class DataNode extends BaseNode { // Class="double" element, which made MATLAB refuse to open the whole file. const encoded = this._encoded; const raw = this._rawInput; - this._markModified(); + this._markModified('name'); this._encoded = encoded; this._rawInput = raw; return true; @@ -755,7 +762,11 @@ export default class DataNode extends BaseNode { // edit below it on save. A value read from a stream is read-only (_refuseEncodedEdit and // BaseNode's editability), so nothing should reach here from inside one; this is the // second line, for whatever does. The rename that keeps it is DataNode.setProperty's. - _markModified(): void { + // + // `edit` is 'name' for that rename, and only for it. An entry's own rename leaves its value + // as it was, and every other edit marks the entry `_valueEdited`; so does the rename of + // anything under it, a struct's field, which changes the entry's value. + _markModified(edit: 'value' | 'name' = 'value'): void { const entry = this.owningEntry; for (let node: BaseNode | null = this; node && node !== entry; node = node.parent) { if ((node as DataNode)._rawInput !== undefined) { @@ -767,6 +778,9 @@ export default class DataNode extends BaseNode { } if (entry) { entry.status = 'Modified'; + if (edit !== 'name' || entry !== this) { + entry._valueEdited = true; + } if (entry._rawInput !== undefined) { entry._rawInput = undefined; } diff --git a/src/datamodel/node/data/MatlabVariableNode.ts b/src/datamodel/node/data/MatlabVariableNode.ts index 3d0b2b93..4a5552b6 100644 --- a/src/datamodel/node/data/MatlabVariableNode.ts +++ b/src/datamodel/node/data/MatlabVariableNode.ts @@ -1607,7 +1607,7 @@ export default class MatlabVariableNode extends DataNode { // every MatlabVariableNode above it, because the save path reads `_var` from the // TOP-LEVEL variable: a struct field's edit has to make the STRUCT's snapshot // stale, not just the field's own. See the _var getter for why. - _markModified(): void { + _markModified(edit: 'value' | 'name' = 'value'): void { let node: BaseNode | null = this; while (node instanceof MatlabVariableNode) { node._varStale = true; @@ -1619,7 +1619,7 @@ export default class MatlabVariableNode extends DataNode { } node = node.parent; } - super._markModified(); + super._markModified(edit); } // Push an edited element's new value into this container's _elements slot. diff --git a/src/datamodel/parser/MatFileWriter.ts b/src/datamodel/parser/MatFileWriter.ts new file mode 100644 index 00000000..cb3f5586 --- /dev/null +++ b/src/datamodel/parser/MatFileWriter.ts @@ -0,0 +1,733 @@ +// Copyright 2026 The MathWorks, Inc. +// +// A save of a Level-5 MAT-file (`-v6`, `-v7`): the file it was read from, with what was edited +// written fresh and everything else written as the bytes it was read from. +// +// WHY A SPLICE. A MAT-file is a header and a run of top-level records, each one variable, and +// the last one, unnamed, the subsystem that holds every object of the file. Nothing in a record +// points at another record, and nothing in the subsystem names a variable. So a record nobody +// edited can be written back as its own bytes, compressed as it was, which no re-encode +// reproduces: inflated and deflated again by fflate at level 6, 18 of the 78 compressed records +// of test/parity/artifacts/mat/cases.mat come back as they were. And the reader holds what it +// did not read (a record it could not inflate, a class it does not model) only as bytes. This +// is MATLAB's own update model too: measured against MATLAB R2027a, `save -append` copies every +// record it does not replace byte for byte, a compressed one included, keeps the header's text, +// and writes the subsystem last. +// +// What each record of the file becomes, in the file's order (plan): +// +// the node it became was deleted nothing +// unedited its own bytes +// only renamed its element with the name replaced (MatWriter. +// elementNamed), compressed again if it was +// its value edited, a plain value written fresh (MatlabVariableNode._matStream), +// named, compressed when the file holds any +// compressed record +// no node: the subsystem, a record the its own bytes +// reader dropped +// +// and a variable added since the read is written fresh, after the last variable and before the +// subsystem. The header keeps its 116 bytes of text and its version and byte-order mark, and +// bytes 116-123 say where the subsystem now starts, which MATLAB trusts without a scan +// (measured against MATLAB R2027a: a stale offset fails the whole load). +// +// "Unedited" is decided by the node's status, which every edit sets (DataNode._markModified), +// and never by whether a value still has the bytes it was read from: those stay on a variable +// after an edit. "Only renamed" is the status, a name that is not the record's, and no edit of +// the value (DataNode._valueEdited). +// +// EVERY DOUBT REFUSES THE SAVE. A save that cannot write a variable as what it is throws a +// MatWriteError naming it, and nothing is written: an object, a function handle or a value the +// reader did not decode, whose edit this writer cannot write; a variable stored after the +// subsystem, where MATLAB does not read it; a file whose records do not tile it, or that was +// opened without them. And before the bytes are handed back they are read again, and a record +// that does not read back as planned refuses the save as well (selfCheck). + +import { zlibSync } from 'fflate'; +import { inflateZlib } from './Inflate.js'; +import { parseMat, functionHandleOf } from './MatParser.js'; +import type { MatRecord, MatVariable, ParsedMat } from './MatParser.js'; +import { MatBudgetError, MatWriteError, classPhrase, elementNamed, encodeMatVariable } from './MatWriter.js'; +import { integerConversion } from './XmlUtils.js'; +import { validateMatlabName } from '../matlabName.js'; +import type BaseNode from '../node/BaseNode.js'; +import type DataNode from '../node/DataNode.js'; +import type MatNode from '../node/container/MatNode.js'; +import type MatlabVariableNode from '../node/data/MatlabVariableNode.js'; + +const MI_MATRIX = 14; +const MI_COMPRESSED = 15; + +/** + * The bytes of the MAT-file `matNode` is, as it stands now: what was edited written fresh, + * everything else as the bytes it was read from. Throws MatWriteError, naming the variable or + * the file and why, for anything it cannot write as what it is (see the file header), and + * never hands back bytes that did not read back as planned. + */ +export function serializeMatFile(matNode: MatNode): Uint8Array { + const file = matNode.name; + const { records, headerBytes } = matNode; + if (!records || !headerBytes) { + throw new MatWriteError( + 'Cannot save "' + file + '": it was opened without the records a save writes back, so a save would lose every one ' + + 'this package did not read. Nothing was written.', + ); + } + // The records are views of the bytes the file was read from, which a host that transfers + // them to a worker afterwards empties: what was not edited would be written as nothing. + const gone = headerBytes.byteLength !== 128 ? { offset: 0, length: 128, bytes: headerBytes } : records.find((r) => r.bytes.byteLength !== r.length); + if (gone) { + throw new MatWriteError( + 'Cannot save "' + file + '": the bytes it was read from are no longer held (the ' + (gone.offset === 0 ? 'header' : 'record at byte ' + gone.offset) + + ' holds ' + gone.bytes.byteLength + ' of its ' + gone.length + '), so what was not edited could not be written as it was. ' + + 'Nothing was written.', + ); + } + if (!matNode.framed) { + const at = matNode.unframed?.at ?? 128; + const unframedBytes = headerBytes.buffer.byteLength - headerBytes.byteOffset - at; + throw new MatWriteError( + 'Cannot save "' + file + '": this package could not frame ' + unframedBytes + ' byte(s) of it, from byte ' + at + + (matNode.unframed ? ' (' + matNode.unframed.reason + ')' : '') + + ', so a save could not keep them as they are. Nothing was written.', + ); + } + + const subsystem = subsystemOf(matNode, records); + const plan = planOf(matNode, records, subsystem); + // Nothing deleted, renamed, edited or added: the file, as it was read. + if (plan.length === records.length && plan.every((p, i) => p.kind === 'verbatim' && p.record === records[i])) { + return concat([headerBytes, ...records.map((r) => r.bytes)]); + } + refuseStructure(matNode, records, subsystem); + const assembled = assemble(headerBytes, plan, subsystem); + selfCheck(file, assembled.bytes, plan, assembled, headerBytes); + return assembled.bytes; +} + +// ---- The plan: what each record of the file becomes ----------------------------------------- + +/** One record of the file a save writes, and where its bytes come from. */ +type Planned = + // A record of the file, as its own bytes. + | { kind: 'verbatim'; record: MatRecord } + // A record of the file whose variable was only renamed: its element, named `name`. + | { kind: 'renamed'; record: MatRecord; name: string; bytes: Uint8Array } + // A value written fresh, named `name`: an edited variable's, read from `record`, or one + // added since the read, with no record. + | { kind: 'fresh'; record: MatRecord | null; node: MatlabVariableNode; name: string; bytes: Uint8Array }; + +/** What has happened to the variable a record became, as a save writes it. */ +type Edit = 'none' | 'name' | 'value'; + +// The record `matNode`'s header says its subsystem starts at, or null when it says there is none, +// or names a byte where no unnamed record starts (refuseStructure). By offset, and not by which +// record has no name: a matrix too short for its own flags reads as unnamed too. And unnamed, +// because a variable the header points at is a variable, whose edit is written or refused as +// any other's, and not passed over as the subsystem it is not. +function subsystemOf(matNode: MatNode, records: MatRecord[]): MatRecord | null { + if (matNode.subsystemOffset === 0) { + return null; + } + return records.find((r) => r.offset === matNode.subsystemOffset && r.anonymous) ?? null; +} + +// The file's records, each as a save writes it, in the file's order, and every variable added +// since the read just before the subsystem, or at the end of a file with none, in the order they +// were added. A record that became no node (the subsystem, one the reader dropped) is its own +// bytes. One past the subsystem, which MATLAB does not read, is too, and its edit refuses the +// save: written where it is, MATLAB still would not read it, and moved, what MATLAB loads of the +// file would change. Deleting one changes nothing MATLAB loads, and is written. +function planOf(matNode: MatNode, records: MatRecord[], subsystem: MatRecord | null): Planned[] { + const compress = records.some((r) => r.compressed); + const added = matNode.children.filter((c) => matNode.recordOf(c) === null); + const plan: Planned[] = []; + const addAdded = () => { + for (const node of added) { + plan.push(freshOf(node, null, compress)); + } + }; + let pastSubsystem = false; + for (const record of records) { + if (record === subsystem) { + addAdded(); + plan.push({ kind: 'verbatim', record }); + pastSubsystem = true; + continue; + } + const node = matNode.nodeOf(record); + if (!node) { + plan.push({ kind: 'verbatim', record }); + continue; + } + if (node.parent !== matNode) { + continue; + } + const edit = editOf(node, record); + if (edit === 'none') { + plan.push({ kind: 'verbatim', record }); + } else if (pastSubsystem) { + throw refusal( + node.name, + 'it is stored after the file\'s objects, where MATLAB does not read it, so it would not be read written there, ' + + 'and moved, it would change what MATLAB loads of the file', + ); + } else if (edit === 'name') { + plan.push(renamedOf(node, record)); + } else { + plan.push(freshOf(node, record, compress)); + } + } + if (!subsystem) { + addAdded(); + } + refuseDuplicates(plan); + return plan; +} + +// What has happened to the variable `record` became, `node`: decided by its status, which every +// edit sets (DataNode._markModified), and by whether anything but its own rename set it +// (DataNode._valueEdited). A rename undone leaves the status set and the name the file's: it is +// unedited. Its name is asked whatever the status, so that a rename made around the API, which +// sets none, is still written as one. +function editOf(node: BaseNode, record: MatRecord): Edit { + const { status, _valueEdited } = node as DataNode; + if (status === 'New' || (status === 'Modified' && _valueEdited)) { + return 'value'; + } + return node.name !== record.name ? 'name' : 'none'; +} + +// A save of a file with an unnamed record that is not its subsystem, or whose header puts its +// subsystem where no unnamed record starts, cannot place what it writes where MATLAB reads it: +// measured against MATLAB R2027a, MATLAB lists no variable past the first unnamed record, and a +// header offset that is not the subsystem's fails the whole load. Asked only of a save that +// changes the file: one that does not hands back the bytes it was read from. +function refuseStructure(matNode: MatNode, records: MatRecord[], subsystem: MatRecord | null): void { + const file = matNode.name; + const offset = matNode.subsystemOffset; + if (offset !== 0 && !subsystem) { + throw new MatWriteError( + 'Cannot save "' + file + '": its header places the file\'s objects at byte ' + offset + ', where ' + + (records.some((r) => r.offset === offset) ? 'a variable is' : 'no record starts') + ', so a save cannot say where they are. ' + + 'Nothing was written.', + ); + } + const stray = records.find((r) => r.anonymous && r !== subsystem); + if (stray) { + throw new MatWriteError( + 'Cannot save "' + file + '": the record at byte ' + stray.offset + ' holds a value with no name that is not the ' + + 'file\'s objects, and MATLAB reads no variable past one, so a save cannot place an edit where MATLAB reads it. ' + + 'Nothing was written.', + ); + } +} + +// Two records of one name: MATLAB loads one of them (measured against MATLAB R2027a: `load f` +// keeps the last, `load f x` the first). A file that holds two keeps them, as it was read; a +// rename or an addition that would make two is refused, naming the variable. +function refuseDuplicates(plan: Planned[]): void { + const count = new Map(); + const nameOf = (p: Planned) => (p.kind === 'verbatim' ? p.record.name : p.name); + for (const p of plan) { + count.set(nameOf(p), (count.get(nameOf(p)) ?? 0) + 1); + } + for (const p of plan) { + if (p.kind !== 'verbatim' && count.get(p.name)! > 1) { + throw refusal(p.name, 'the file would hold two variables named "' + p.name + '", and MATLAB loads only one of them'); + } + } +} + +// The refusal of a save for variable `name`, worded as every refused write is (MatWriter's +// budgetFailure, DataNode's): the variable, why, and that nothing was written. +function refusal(name: string, why: string): MatWriteError { + return new MatWriteError('Cannot write "' + name + '": ' + why + '. Nothing was written.'); +} + +// A name this writer puts in an element: a valid MATLAB name, by the rule a rename is held to +// (matlabName), which is stricter than MATLAB's and holds for older releases. A variable added +// by a caller that named it itself (MatNode.execAddEntry) has had no other check. +function refuseName(name: string): void { + const error = validateMatlabName(name); + if (error) { + throw refusal(name, 'it is not a name MATLAB can load (' + error + ')'); + } +} + +// ---- What a renamed or an edited record is written as ----------------------------------------- + +// The record of a variable only renamed: its element as read, with the name subelement replaced +// (MatWriter.elementNamed) and every other byte copied, compressed again when it was. An object +// variable, a function handle and a value the reader did not decode are renamed so as well: +// nothing of them but their name is written. +function renamedOf(node: BaseNode, record: MatRecord): Planned { + const name = node.name; + refuseName(name); + const element = elementOfRecord(record); + const named = element ? elementNamed(element, name) : null; + if (!named) { + throw refusal(name, 'the record it was read from, at byte ' + record.offset + ', is not a whole element whose name can be replaced, so it cannot be renamed'); + } + return { kind: 'renamed', record, name, bytes: recordBytes(named, record.compressed) }; +} + +// The record of a value written fresh: `node`'s, an edited variable read from `record` or one +// added since, named, and compressed when the file holds any compressed record, so that a `-v6` +// file, which holds none and is readable by every MATLAB, stays one. +// +// Only a plain MATLAB value is written fresh. A variable that was an object, a string, a function +// handle or a value the reader did not decode is refused when anything but its name changed, as +// is a typed object's node, whatever it holds now: this writer has no encoder for an object, and +// the record's own bytes, which are the only thing it could write, are no longer the value. +function freshOf(node: BaseNode, record: MatRecord | null, compress: boolean): Planned { + const name = node.name; + refuseName(name); + const was = record?.variable ? notPlain(record.variable) : null; + const value = valueNodeOf(node); + if (was || !value) { + const what = was ?? classPhrase(String((node as DataNode).className || 'object')); + throw refusal(name, 'it is ' + what + ', which a MAT-file save writes only as it was read, or renamed, so its edit cannot be saved'); + } + const named = elementNamed(freshElement(value), name); + if (!named) { + throw refusal(name, 'the element written for it has no name to replace'); + } + return { kind: 'fresh', record, node: value, name, bytes: recordBytes(named, compress) }; +} + +// `node` as the node of a plain MATLAB value, or null for a node of another class: a typed +// object's (a ParameterNode, a BusNode). Asked of what the node does rather than of its class, +// which this layer does not import (test/moduleBoundaries): a MatlabVariableNode, and only it, +// writes its value as a MAT stream. +function valueNodeOf(node: BaseNode): MatlabVariableNode | null { + const v = node as unknown as Partial; + return typeof v._matStream === 'function' && typeof v._matWritable === 'function' ? (v as MatlabVariableNode) : null; +} + +// What a variable read as `v` is, in words, when it is not a plain MATLAB value; null when it is. +function notPlain(v: MatVariable): string | null { + if (v.isOpaque) { + return classPhrase(v.className || 'object'); + } + if (functionHandleOf(v) || v.className === 'function_handle') { + return 'a function handle'; + } + if (v.className === 'unknown' || v.undecoded) { + return 'a value that was not decoded'; + } + return null; +} + +// The miMATRIX element `node`'s value is, with the empty name a stream's value has: the stream it +// is written as in a dictionary (_matStream), which writes a sparse array no element row edited +// and a struct array with no element rows as the bytes they were read from, and anything else as +// MatWriter writes it. Refused, naming what in it this writer cannot write, when it holds what +// MatWriter has no variable for or would write as what it is not (_matWritable): an object, a +// string, a function handle, a value not decoded. And refused, finally, as a dictionary's save +// refuses it, for a value with no form at all (_heldNone, _refuseNoSize) or past MatWriter's +// budget, restated naming the variable (_budgetFailure). +function freshElement(node: MatlabVariableNode): Uint8Array { + const unwritable = unwritableIn(node); + if (unwritable) { + throw refusal(node.name, unwritable.path + ' is ' + unwritable.what + ', which this package cannot write into a MAT-file'); + } + if (node._heldNone()) { + throw node._heldNoneRefusal(); + } + node._refuseNoSize(); + const stream = node._matStream(); + if (stream) { + return stream.subarray(8); + } + // _matStream answers null for a refusal of MatWriter's other than its budget's: asked again, + // for its reason. + try { + encodeMatVariable(node._var); + } catch (e) { + if (e instanceof MatBudgetError) { + throw node._budgetFailure(e); + } + if (e instanceof MatWriteError) { + throw refusal(node.name, e.message); + } + throw e; + } + throw refusal(node.name, 'no MAT element could be written for it'); +} + +// The first node at or under `node` that MatWriter cannot write as what it is (the rule of +// MatlabVariableNode._matWritable), with its MATLAB path and what it is, or null for none. +function unwritableIn(at: BaseNode): { path: string; what: string } | null { + const node = valueNodeOf(at); + if (!node) { + return { path: at.matlabPath, what: classPhrase(String((at as DataNode).className || 'object')) }; + } + if (node._matWritable()) { + return null; + } + if (node._isOpaque) { + return { path: node.matlabPath, what: classPhrase(node._opaqueClassName || 'object') }; + } + if (node._undecoded) { + return { path: node.matlabPath, what: 'a value that was not decoded' }; + } + if (node._scalarType === 'string' || node._scalarType === 'function_handle') { + return { path: node.matlabPath, what: node._scalarType === 'string' ? 'a string' : 'a function handle' }; + } + for (const child of node.children) { + const below = unwritableIn(child); + if (below) { + return below; + } + } + return { path: node.matlabPath, what: 'a value MatWriter has no variable for' }; +} + +// The miMATRIX element a record holds: its own bytes for a plain one, its payload inflated for a +// compressed one. Null when there is no whole element, or bytes after it: a record that is not +// one MATLAB writes is not one to rename. +function elementOfRecord(record: MatRecord): Uint8Array | null { + const bytes = record.bytes; + if (bytes.byteLength < 8) { + return null; + } + const nbytes = u32At(bytes, 4); + if (!record.compressed) { + return u32At(bytes, 0) === MI_MATRIX && 8 + nbytes <= bytes.byteLength ? bytes.subarray(0, 8 + nbytes) : null; + } + let inflated: Uint8Array; + try { + inflated = inflateZlib(bytes.subarray(8, 8 + nbytes)); + } catch { + return null; + } + if (inflated.byteLength < 8 || u32At(inflated, 0) !== MI_MATRIX) { + return null; + } + return 8 + u32At(inflated, 4) === inflated.byteLength ? inflated : null; +} + +// A top-level record of `element`: the element itself, which MatWriter pads to 8 bytes as a plain +// record must be, or its zlib stream (RFC 1950, which MATLAB requires; level 6, MATLAB's default) +// in an miCOMPRESSED tag, with no padding after it, as MATLAB writes one. +function recordBytes(element: Uint8Array, compress: boolean): Uint8Array { + if (!compress) { + return element; + } + const stream = zlibSync(element, { level: 6 }); + return concat([u32le(MI_COMPRESSED), u32le(stream.byteLength), stream]); +} + +// ---- Assembly --------------------------------------------------------------------------------- + +/** The bytes of the plan, each planned record's offset in them, and the subsystem's, or null. */ +interface Assembled { + bytes: Uint8Array; + offsets: number[]; + subsystemAt: number | null; +} + +// The header and the planned records, back to back. The header is the file's own: its text +// (bytes 0-115, which MATLAB keeps on `-append` and never reads), and its version and byte-order +// mark (124-127). Bytes 116-123 are the subsystem's new offset, a little-endian uint64, or, in a +// file with no subsystem, the file's own: zeros or spaces, both of which MATLAB reads as none. +function assemble(headerBytes: Uint8Array, plan: Planned[], subsystem: MatRecord | null): Assembled { + const header = headerBytes.slice(); + const parts: Uint8Array[] = [header]; + const offsets: number[] = []; + let subsystemAt: number | null = null; + let at = header.byteLength; + for (const p of plan) { + const bytes = p.kind === 'verbatim' ? p.record.bytes : p.bytes; + offsets.push(at); + if (p.kind === 'verbatim' && p.record === subsystem) { + subsystemAt = at; + } + parts.push(bytes); + at += bytes.byteLength; + } + if (subsystemAt !== null) { + new DataView(header.buffer, header.byteOffset, header.byteLength).setBigUint64(116, BigInt(subsystemAt), true); + } + return { bytes: concat(parts), offsets, subsystemAt }; +} + +// ---- The self-check --------------------------------------------------------------------------- +// +// The bytes about to be handed back, read again by this package's reader, against the plan: the +// header kept, and saying where the subsystem now is; the records the ones planned, at the offsets +// planned, and every one of them framed; each record written as its own bytes those bytes; each +// renamed one named as planned and, but for its name, its element byte for byte; each written +// fresh named as planned and reading back as the value it was written from, its class, size and +// every element. Any difference refuses the save. +// +// This proves what was written is what was planned, and not that MATLAB loads it: this reader +// reads files MATLAB refuses. + +function selfCheck(file: string, bytes: Uint8Array, plan: Planned[], assembled: Assembled, headerBytes: Uint8Array): void { + const fail = (why: string): never => { + throw new MatWriteError('Cannot save "' + file + '": the file written for it did not read back as written: ' + why + '. Nothing was written.'); + }; + let parsed: ParsedMat; + try { + // `bytes` is the whole of its buffer (concat), which the reader may take as it is. + parsed = parseMat(bytes.buffer as ArrayBuffer); + } catch (e) { + return fail('it does not open (' + (e instanceof Error ? e.message : String(e)) + ')'); + } + if (!parsed.framed) { + return fail('its records do not tile it (' + (parsed.unframed?.reason ?? '') + ')'); + } + const head = parsed.headerBytes; + if (!sameBytes(head.subarray(0, 116), headerBytes.subarray(0, 116)) || !sameBytes(head.subarray(124), headerBytes.subarray(124))) { + return fail('its header is not the one it was read with'); + } + const subsystemSaid = assembled.subsystemAt ?? 0; + if (parsed.subsystemOffset !== subsystemSaid) { + return fail('its header places its objects at byte ' + parsed.subsystemOffset + ', and they are at byte ' + subsystemSaid); + } + if (parsed.records.length !== plan.length) { + return fail('it holds ' + parsed.records.length + ' record(s) where ' + plan.length + ' were written'); + } + plan.forEach((p, i) => { + const got = parsed.records[i]; + const at = assembled.offsets[i]; + if (got.offset !== at) { + fail('a record starts at byte ' + got.offset + ' where one was written at byte ' + at); + } + if (p.kind === 'verbatim') { + if (!sameBytes(got.bytes, p.record.bytes)) { + fail('the record at byte ' + at + ' is not the bytes it was read from'); + } + return; + } + if (got.status !== 'read' || got.anonymous || got.name !== p.name || got.variable?.name !== p.name) { + fail('the record at byte ' + at + ', written as "' + p.name + '", reads as ' + (got.status === 'read' ? '"' + got.name + '"' : 'no variable')); + } + if (p.kind === 'renamed') { + const before = elementOfRecord(p.record); + const after = elementOfRecord(got); + const unnamed = (e: Uint8Array | null) => (e ? elementNamed(e, '') : null); + const was = unnamed(before); + const is = unnamed(after); + if (!was || !is || !sameBytes(was, is)) { + fail('"' + p.name + '" is not, but for its name, the element it was read as'); + } + return; + } + const difference = differs(p.node._var, got.variable, p.name); + if (difference) { + fail(difference); + } + }); +} + +// Where the value read back, `read`, is not the value `model` it was written from, in words, or +// null where it is that value: the same class, complexity, storage and size, the same members of a +// cell, the same fields of a struct in the same order, and each element the same number as its +// class holds it. MatWriter's own rules are taken as the model's meaning, not its result: an +// integer element as MATLAB converts it to the class, a single's as a float32, a member a cell or +// a struct does not hold as the empty double written for it. +function differs(model: MatVariable | null | undefined, read: MatVariable | null | undefined, at: string): string | null { + const m = model ?? EMPTY_DOUBLE; + const r = read ?? EMPTY_DOUBLE; + const cls = classOf(m); + const said = (what: string, was: string, is: string) => at + ': its ' + what + ' reads back as ' + is + ' where ' + was + ' was written'; + if (classOf(r) !== cls) { + return said('class', cls, classOf(r)); + } + const md = dimsOf(m); + if (md.join('x') !== r.dimensions.join('x')) { + return said('size', md.join('x'), r.dimensions.join('x')); + } + if (!!m.isComplex !== !!r.isComplex || !!m.isSparse !== !!r.isSparse) { + return said('storage', storageOf(m), storageOf(r)); + } + const n = md.reduce((a, b) => a * b, 1); + if (m.isSparse) { + return sparseDiffers(m, r, cls, at); + } + if (cls === 'cell') { + const mc = flatValues(m.value) as (MatVariable | null)[]; + const rc = flatValues(r.value) as (MatVariable | null)[]; + for (let i = 0; i < n; i++) { + const d = differs(mc[i], rc[i], at + '{' + (i + 1) + '}'); + if (d) { + return d; + } + } + return null; + } + if (cls === 'struct') { + const mf = m.fields ?? {}; + const rf = r.fields ?? {}; + const names = Object.keys(mf); + if (names.join(',') !== Object.keys(rf).join(',')) { + return said('fields', names.join(', ') || 'none', Object.keys(rf).join(', ') || 'none'); + } + for (let e = 0; e < n; e++) { + for (const name of names) { + const d = differs(memberOf(mf[name], e, n), memberOf(rf[name], e, n), at + (n === 1 ? '' : '(' + (e + 1) + ')') + '.' + name); + if (d) { + return d; + } + } + } + return null; + } + if (cls === 'char') { + const was = String(m.value ?? ''); + const is = String(r.value ?? ''); + return was === is ? null : said('text', JSON.stringify(was), JSON.stringify(is)); + } + const mv = flatValues(m.value); + const rv = flatValues(r.value); + if (mv.length !== n || rv.length !== n) { + return said('element count', String(mv.length), String(rv.length)); + } + const same = sameNumberFor(cls); + for (let i = 0; i < n; i++) { + for (const part of m.isComplex ? (['re', 'im'] as const) : (['re'] as const)) { + const was = partOf(mv[i], part); + const is = partOf(rv[i], part); + if (!same(was, is)) { + return said('element ' + (i + 1) + (m.isComplex ? ' (' + (part === 're' ? 'real' : 'imaginary') + ' part)' : ''), String(was), String(is)); + } + } + } + return null; +} + +// A sparse array's non-zeros, compared as a set of (row, column) to value: the order a writer +// puts them in is its own, and an explicit zero is not a non-zero MATLAB keeps. +function sparseDiffers(m: MatVariable, r: MatVariable, cls: string, at: string): string | null { + const ms = m.sparse; + const rs = r.sparse; + if (!ms || !rs) { + return at + ': it holds no non-zeros to compare'; + } + const same = sameNumberFor(cls); + const entries = (s: NonNullable) => { + const out = new Map(); + for (let k = 0; k < s.row.length; k++) { + const re = s.re[k]; + const im = s.im ? s.im[k] : 0; + if (re !== 0 || im !== 0) { + out.set(s.row[k] + ',' + s.col[k], [re, im]); + } + } + return out; + }; + const was = entries(ms); + const is = entries(rs); + if (was.size !== is.size) { + return at + ': it reads back with ' + is.size + ' non-zero(s) where ' + was.size + ' were written'; + } + for (const [where, [re, im]] of was) { + const got = is.get(where); + if (!got || !same(re, got[0]) || !same(im, got[1])) { + const [row, col] = where.split(',').map(Number); + return at + ': its non-zero at (' + (row + 1) + ',' + (col + 1) + ') does not read back as written'; + } + } + return null; +} + +const EMPTY_DOUBLE: MatVariable = { name: '', className: 'double', dimensions: [0, 0], isComplex: false, isLogical: false, value: null, fields: null }; + +const INTEGER_CLASS = /^u?int(?:8|16|32|64)$/; + +// MATLAB's class of `v`: a logical array is class uint8 with the logical flag, in a file and in +// the variable the node layer hands MatWriter. +function classOf(v: MatVariable): string { + return v.isLogical || v.className === 'logical' ? 'logical' : v.className; +} + +function storageOf(v: MatVariable): string { + return (v.isSparse ? 'sparse' : 'full') + (v.isComplex ? ' complex' : ' real'); +} + +// Whether two elements of class `cls` are the one number the class holds: an integer class's as +// MATLAB converts a value to it (integerConversion: rounded, saturated, NaN as 0), a logical's as a +// uint8, a single's as a float32, and a double's as itself, NaN equal to NaN and -0 not to 0. +function sameNumberFor(cls: string): (a: unknown, b: unknown) => boolean { + if (INTEGER_CLASS.test(cls) || cls === 'logical') { + const to = integerConversion(cls === 'logical' ? 'uint8' : cls); + return (a, b) => String(to(a)) === String(to(b)); + } + if (cls === 'single') { + return (a, b) => Object.is(Math.fround(Number(a)), Math.fround(Number(b))); + } + return (a, b) => Object.is(Number(a), Number(b)); +} + +// One part of a numeric element: a complex one is `{re, im}`, and a real one its real part, with +// an imaginary part of 0. +function partOf(x: unknown, part: 're' | 'im'): unknown { + if (x !== null && typeof x === 'object' && 're' in (x as Record)) { + return (x as Record)[part]; + } + return part === 're' ? x : 0; +} + +// Element `e` of `n` of a struct field: a struct array holds one variable per element, a 1x1 +// struct the variable itself (MatVariable.fields). +function memberOf(held: MatVariable | MatVariable[] | undefined, e: number, n: number): MatVariable | undefined { + return Array.isArray(held) ? held[e] : n === 1 ? held : undefined; +} + +// A MAT element has at least two dimensions; a variable may say fewer (MatWriter.dimsOf). +function dimsOf(v: MatVariable): number[] { + const d = (v.dimensions || []).slice(); + while (d.length < 2) { + d.push(1); + } + return d; +} + +// The values of a variable as one list: MatParser leaves a 1x1 a bare value and an empty one null. +function flatValues(value: unknown): unknown[] { + if (value === null || value === undefined) { + return []; + } + return Array.isArray(value) ? value : [value]; +} + +// ---- Bytes ------------------------------------------------------------------------------------ + +function concat(parts: Uint8Array[]): Uint8Array { + let total = 0; + for (const p of parts) { + total += p.byteLength; + } + const out = new Uint8Array(total); + let at = 0; + for (const p of parts) { + out.set(p, at); + at += p.byteLength; + } + return out; +} + +function u32le(n: number): Uint8Array { + const out = new Uint8Array(4); + new DataView(out.buffer).setUint32(0, n >>> 0, true); + return out; +} + +function u32At(bytes: Uint8Array, at: number): number { + return new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength).getUint32(at, true); +} + +function sameBytes(a: Uint8Array, b: Uint8Array): boolean { + if (a.byteLength !== b.byteLength) { + return false; + } + for (let i = 0; i < a.byteLength; i++) { + if (a[i] !== b[i]) { + return false; + } + } + return true; +} diff --git a/src/datamodel/parser/MatWriter.ts b/src/datamodel/parser/MatWriter.ts index 2dda6271..ca739969 100644 --- a/src/datamodel/parser/MatWriter.ts +++ b/src/datamodel/parser/MatWriter.ts @@ -1099,12 +1099,42 @@ function ownElement(raw: Uint8Array): Uint8Array | null { return concat([u32le(MI_MATRIX), u32le(body.length), body]); } +/** + * The miMATRIX element `raw` holds as read, named `name`: the inverse of ownElement, for a + * variable of a MAT-file, which carries its name in its element as a stream's value does not. + * Every byte but the name subelement's is copied, and the element's size restated, so a + * variable renamed and saved is the value it was, byte for byte, whatever this writer would + * write for it. Null when the bytes are not a whole element whose name this can find. + * + * An MCOS object's element (class 17) is renamed as well: its name comes straight after its + * array flags, with no dimensions before it, and then the type system's name and the object's + * class, which are kept. Measured against MATLAB R2027a: the file's subsystem holds no + * variable's name, so an object variable renamed this way loads as the same object, a + * Simulink.Parameter and a string alike. + * + * The name is written as MATLAB writes one, miINT8 with its UTF-8 bytes, in the small form + * when it is 1 to 4 bytes long (element). + */ +export function elementNamed(raw: Uint8Array, name: string): Uint8Array | null { + const at = ownElementName(raw, true); + if (!at) { + return null; + } + const named = element(MI_INT8, new TextEncoder().encode(name)); + const body = concat([raw.slice(8, at.nameAt), named, raw.slice(at.nameAt + at.name, at.end)]); + return concat([u32le(MI_MATRIX), u32le(body.length), body]); +} + /** * Where the name subelement of the miMATRIX element `raw` holds is, and where the element * ends; null when the bytes are not a whole one ownElement can re-frame. Read, not built, so * it can be asked of every member before a write (refuseDimsBelow). + * + * An MCOS object's element has no stream of its own (matStreamOfElement), so it is found only + * when `opaque` is set, for a variable's rename (elementNamed): its name is the subelement + * after its flags, where any other class has its dimensions. */ -function ownElementName(raw: Uint8Array): { nameAt: number; name: number; end: number } | null { +function ownElementName(raw: Uint8Array, opaque = false): { nameAt: number; name: number; end: number } | null { if (raw.length < 8) { return null; } @@ -1126,12 +1156,13 @@ function ownElementName(raw: Uint8Array): { nameAt: number; name: number; end: n return 8 + n + ((8 - (n % 8)) % 8); }; const flags = subLength(8); - if (!flags || raw[16] === 17) { + const isOpaque = raw[16] === 17; + if (!flags || (isOpaque && !opaque)) { return null; } - const dims = subLength(8 + flags); + const dims = isOpaque ? 0 : subLength(8 + flags); const nameAt = 8 + flags + dims; - const name = dims ? subLength(nameAt) : 0; + const name = dims || isOpaque ? subLength(nameAt) : 0; if (!name || nameAt + name > end) { return null; } diff --git a/test/matFileSave.test.ts b/test/matFileSave.test.ts new file mode 100644 index 00000000..7c6f111c --- /dev/null +++ b/test/matFileSave.test.ts @@ -0,0 +1,693 @@ +// Copyright 2026 The MathWorks, Inc. +// +// A save of a `.mat` (session.serializeSource on a MatNode, MatFileWriter.serializeMatFile): +// the file it was read from, with what was edited written fresh and every record nobody touched +// written as the bytes it was read from. +// +// The first sweep holds every Level-5 fixture to the strictest form of that: saved with no edit, +// a file is itself, byte for byte. Then each kind of edit, on cases.mat and on files of objects +// and function handles, read back: the edited value is what the save wrote, every other record is +// its own bytes, in its own order, and the subsystem is last, where the header says it is. A +// `-v6` file, which holds no compressed record, stays one. Then every refusal: a save that cannot +// write a variable as what it is throws, naming it, and hands back nothing. + +import { describe, it, expect } from 'vitest'; +import { readFileSync, readdirSync } from 'node:fs'; +import { join } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { parseMat } from '../src/datamodel/parser/MatParser.js'; +import type { MatRecord, ParsedMat } from '../src/datamodel/parser/MatParser.js'; +import { encodeMatStream, MatBudgetError, MatWriteError } from '../src/datamodel/parser/MatWriter.js'; +import { serializeMatFile } from '../src/datamodel/parser/MatFileWriter.js'; +import { createSession } from '../src/index.js'; +import { CLASS, MI, cellVar, matFile, numericVar, u32le } from './tools/matBytes.js'; + +const TEST_ROOT = fileURLToPath(new URL('.', import.meta.url)); + +// Every `.mat` under test/, recursively, so a fixture added later is swept by default. +function matFilesUnder(dir: string): string[] { + const out: string[] = []; + for (const entry of readdirSync(dir, { withFileTypes: true })) { + const abs = join(dir, entry.name); + if (entry.isDirectory()) { + out.push(...matFilesUnder(abs)); + } else if (entry.isFile() && entry.name.endsWith('.mat')) { + out.push(abs); + } + } + return out.sort(); +} + +// The one file of the corpus the reader refuses: a `-v7.3` file is HDF5, not Level 5. +const REFUSED = new Set(['strings_v73.mat']); + +const shown = (abs: string) => abs.slice(TEST_ROOT.length); +const basename = (abs: string) => abs.slice(abs.lastIndexOf('/') + 1); + +function arrayBufferOf(bytes: Uint8Array): ArrayBuffer { + return bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength) as ArrayBuffer; +} + +function concat(parts: Uint8Array[]): Uint8Array { + const out = new Uint8Array(parts.reduce((n, p) => n + p.byteLength, 0)); + let at = 0; + for (const p of parts) { + out.set(p, at); + at += p.byteLength; + } + return out; +} + +const sameBytes = (a: Uint8Array, b: Uint8Array) => a.byteLength === b.byteLength && a.every((x, i) => x === b[i]); + +const fixture = (rel: string) => arrayBufferOf(new Uint8Array(readFileSync(join(TEST_ROOT, rel)))); +const CASES = 'parity/artifacts/mat/cases.mat'; + +const scalar = (name: string, value: number) => numericVar({ name, cls: CLASS.DOUBLE, dimensions: [1, 1], real: [value] }); + +/** A MatNode opened from `bytes` through the session, as a host opens one, and its edits. */ +function opened(bytes: ArrayBuffer, name = 'f.mat') { + const session = createSession(); + const root: any = session.addMatSource(name, bytes); + const by = (n: string) => root.children.find((c: any) => c.name === n); + const edit = (node: any, prop: string, value: string) => { + session.setActive(root, node); + return session.editProperty(node.id, prop, value); + }; + const remove = (node: any) => { + session.setActive(root, node); + return session.deleteNodeById(node.id); + }; + // What session.serializeSource hands back for it, which for a MAT-file is always bytes. + const save = (): Uint8Array => { + const out = session.serializeSource(name)!; + expect([out.kind, out.sourceFormat]).toEqual(['binary', 'mat']); + return (out as { bytes: Uint8Array }).bytes; + }; + return { session, root, by, edit, remove, save }; +} + +/** `bytes`, read again: the parse, and a tree of it, as a host reopening the saved file has. */ +function reopened(bytes: Uint8Array) { + const parsed = parseMat(arrayBufferOf(bytes)); + const { root, by } = opened(arrayBufferOf(bytes), 'saved.mat'); + return { parsed, root, by }; +} + +/** What a variable of `bytes` reads back as, by the reader itself: its class, size and value. */ +const variableOf = (parsed: ParsedMat, name: string) => { + const v = parsed.variables.find((x) => x.name === name); + expect(v, name).toBeDefined(); + return v!; +}; + +/** + * Every record of `original` but the ones named `was` is in `saved`, in the same order, as the + * bytes it was read from; `is` names the records of `saved` that are not (edited, renamed, + * added). + */ +function expectKept(original: ParsedMat, saved: ParsedMat, { was = [] as string[], is = [] as string[] } = {}) { + const before = original.records.filter((r) => !was.includes(r.name!)); + const after = saved.records.filter((r) => !is.includes(r.name!)); + expect(after.map((r) => r.name)).toEqual(before.map((r) => r.name)); + after.forEach((r, i) => expect(sameBytes(r.bytes, before[i].bytes), String(r.name)).toBe(true)); +} + +/** The subsystem is the file's last record, unnamed, and where its header says it is. */ +function expectSubsystemLast(saved: ParsedMat) { + const last: MatRecord = saved.records[saved.records.length - 1]; + expect([last.anonymous, last.name, saved.subsystemOffset]).toEqual([true, '', last.offset]); + expect(saved.records.filter((r) => r.anonymous)).toEqual([last]); +} + +/** The thrown error of `fn`, which must throw. */ +function thrownBy(fn: () => unknown): Error { + try { + fn(); + } catch (e) { + return e as Error; + } + throw new Error('did not throw'); +} + +describe('a file saved with no edit is the file, byte for byte', () => { + const files = matFilesUnder(TEST_ROOT).filter((f) => !REFUSED.has(basename(f))); + + it('sweeps the whole corpus', () => { + // Lower bounds, so that a mis-filtered list cannot pass the sweep below vacuously. + expect(files.length).toBeGreaterThanOrEqual(30); + expect(files.map(basename)).toEqual(expect.arrayContaining(['cases.mat', 'Param.mat', 'strings.mat', 'nested_handles.mat'])); + }); + + for (const file of files) { + it(shown(file), () => { + const input = fixture(shown(file)); + const { save } = opened(input, basename(file)); + const bytes = save(); + expect(sameBytes(bytes, new Uint8Array(input))).toBe(true); + // A copy, not a view of what the file was read from: a host may write it anywhere. + expect(bytes.buffer).not.toBe(input); + }); + } + + it('a rename undone, the file as it was', () => { + const input = fixture(CASES); + const { session, by, edit, save } = opened(input, 'cases.mat'); + expect(edit(by('kp'), 'Name', 'kp2')).toBe(true); + session.undo(); + expect([by('kp').name, by('kp').status]).toEqual(['kp', 'Modified']); + expect(sameBytes(save(), new Uint8Array(input))).toBe(true); + }); + + it('a variable deleted and its delete undone, the file as it was', () => { + const input = fixture(CASES); + const { session, by, remove, save } = opened(input, 'cases.mat'); + expect(remove(by('aParam'))).toBe(true); + session.undo(); + expect(sameBytes(save(), new Uint8Array(input))).toBe(true); + }); +}); + +describe('every variable of every fixture, renamed or written fresh, reads back as itself', () => { + const files = matFilesUnder(TEST_ROOT).filter((f) => !REFUSED.has(basename(f))); + // What a host is shown of a file: each variable's name, node class, class, size and value. + const shownAs = (root: any) => root.children.map((c: any) => [c.name, c.constructor.name, c.className, c.displayValue]); + + for (const file of files) { + it(`${shown(file)}: every variable renamed, in one save`, () => { + const { root, edit, save } = opened(fixture(shown(file)), basename(file)); + const before = shownAs(root); + root.children.forEach((node: any, i: number) => expect(edit(node, 'Name', 'renamed' + i)).toBe(true)); + const { root: again } = reopened(save()); + expect(shownAs(again)).toEqual(before.map(([, ...rest]: any[], i: number) => ['renamed' + i, ...rest])); + }); + + it(`${shown(file)}: every plain variable written fresh, in one save`, () => { + const { root, save } = opened(fixture(shown(file)), basename(file)); + const before = shownAs(root); + // An edit that leaves the value as it was, as an undone one does: written fresh all the + // same (DataNode._valueEdited). Of what MatWriter can write as what it is: an object, a + // string, a function handle refuse the save (below). + const plain = root.children.filter((n: any) => n._matWritable?.() === true && !root.recordOf(n).variable.isOpaque); + plain.forEach((node: any) => node._markModified()); + const bytes = save(); + const { parsed, root: again } = reopened(bytes); + expect(shownAs(again)).toEqual(before); + const original = parseMat(fixture(shown(file))); + const names = plain.map((n: any) => n.name); + expectKept(original, parsed, { was: names, is: names }); + }); + } +}); + +describe('cases.mat: an edit is written, and every record it did not touch is its own bytes', () => { + const original = parseMat(fixture(CASES)); + const casesMat = () => opened(fixture(CASES), 'cases.mat'); + + it('a value edit', () => { + const { by, edit, save } = casesMat(); + expect(edit(by('kp'), 'Value', '9')).toBe(true); + const { parsed, by: again } = reopened(save()); + expect(variableOf(parsed, 'kp')).toMatchObject({ className: 'double', dimensions: [1, 1], value: 9 }); + expect(again('kp').displayValue).toBe('9'); + expectKept(original, parsed, { was: ['kp'], is: ['kp'] }); + expectSubsystemLast(parsed); + // Written where it was, compressed, as every record of a `-v7` file is. + expect(parsed.records.map((r) => r.name)).toEqual(original.records.map((r) => r.name)); + expect(parsed.records.find((r) => r.name === 'kp')!.compressed).toBe(true); + }); + + const childEdits: [string, string, (by: (n: string) => any) => any, (v: any) => void][] = [ + ['a matrix element', 'mat2x3', (by) => by('mat2x3').children[0], (v) => expect(v.value).toEqual([9, 2, 3, 4, 5, 6])], + ['a struct field', 'structScalar', (by) => by('structScalar').children[0], (v) => expect(v.fields.a.value).toBe(9)], + ['a cell member', 'cellFlat', (by) => by('cellFlat').children[0], (v) => expect(v.value[0].value).toBe(9)], + [ + "a struct array element's field", + 'struct1x3', + (by) => by('struct1x3').children[1].children[0], + (v) => expect(v.fields.a.map((f: any) => f.value)).toEqual([1, 9, 3]), + ], + ]; + for (const [what, name, target, check] of childEdits) { + it(what, () => { + const { by, edit, save } = casesMat(); + expect(edit(target(by), 'Value', '9')).toBe(true); + const { parsed } = reopened(save()); + check(variableOf(parsed, name)); + expectKept(original, parsed, { was: [name], is: [name] }); + expectSubsystemLast(parsed); + }); + } + + it('a reshape', () => { + const { by, edit, save } = casesMat(); + expect(edit(by('rowVec'), 'Value', '[1 2; 3 4]')).toBe(true); + const { parsed, by: again } = reopened(save()); + expect(variableOf(parsed, 'rowVec')).toMatchObject({ className: 'double', dimensions: [2, 2], value: [1, 2, 3, 4] }); + expect(again('rowVec').displayValue).toBe('[1 2; 3 4]'); + expectKept(original, parsed, { was: ['rowVec'], is: ['rowVec'] }); + }); + + it('a class change', () => { + const { by, edit, save } = casesMat(); + expect(edit(by('charStr'), 'Value', '[1 2]')).toBe(true); + const { parsed } = reopened(save()); + expect(variableOf(parsed, 'charStr')).toMatchObject({ className: 'double', dimensions: [1, 2], value: [1, 2] }); + expectKept(original, parsed, { was: ['charStr'], is: ['charStr'] }); + }); + + it('a field added to a struct', () => { + const { session, root, by, save } = casesMat(); + session.setActive(root, by('structScalar')); + expect(session.addChildTo(by('structScalar').id)).not.toBeNull(); + const { parsed } = reopened(save()); + expect(Object.keys(variableOf(parsed, 'structScalar').fields!)).toEqual(Object.keys(by('structScalar')._var.fields)); + expect(Object.keys(variableOf(parsed, 'structScalar').fields!).length).toBe(3); + expectKept(original, parsed, { was: ['structScalar'], is: ['structScalar'] }); + }); + + it('a rename: the element as it was read, named anew, and compressed again', () => { + const { by, edit, save } = casesMat(); + expect(edit(by('kp'), 'Name', 'kp2')).toBe(true); + const { parsed, by: again } = reopened(save()); + expect(parsed.records.map((r) => r.name)).toEqual(original.records.map((r) => (r.name === 'kp' ? 'kp2' : r.name))); + expect(variableOf(parsed, 'kp2')).toMatchObject({ className: 'double', value: 1.5 }); + expect(again('kp2').displayValue).toBe('1.5'); + expect(parsed.records.find((r) => r.name === 'kp2')!.compressed).toBe(true); + // The value's bytes are the ones read: the name subelement, the small element at bytes 40-47 + // after the tag, the flags and the dims, is all that changed. Both names fit in it. + const was = variableOf(original, 'kp')._rawBytes!; + const is = variableOf(parsed, 'kp2')._rawBytes!; + expect(is.byteLength).toBe(was.byteLength); + expect([sameBytes(is.subarray(0, 40), was.subarray(0, 40)), sameBytes(is.subarray(40, 48), was.subarray(40, 48))]).toEqual([true, false]); + expect(sameBytes(is.subarray(48), was.subarray(48))).toBe(true); + expectKept(original, parsed, { was: ['kp'], is: ['kp2'] }); + expectSubsystemLast(parsed); + }); + + it("an object variable's rename: the same object, its subsystem as it was", () => { + const { by, edit, save } = casesMat(); + const value = by('aParam').getPropInfo(by('aParam').getProperties().find((p: any) => p.key === 'Value' || p.name === 'Value')).displayValue; + expect(edit(by('aParam'), 'Name', 'renamedParam')).toBe(true); + const { parsed, by: again } = reopened(save()); + const node = again('renamedParam'); + expect([node.constructor.name, node.className]).toEqual(['ParameterNode', 'Simulink.Parameter']); + expect(node.getPropInfo(node.getProperties().find((p: any) => p.key === 'Value' || p.name === 'Value')).displayValue).toBe(value); + expect(again('aParam')).toBeUndefined(); + expectKept(original, parsed, { was: ['aParam'], is: ['renamedParam'] }); + expectSubsystemLast(parsed); + }); + + it("a string's rename", () => { + const { by, edit, save } = casesMat(); + const shownAs = by('strScalar').displayValue; + expect(edit(by('strScalar'), 'Name', 'str2')).toBe(true); + const { parsed, by: again } = reopened(save()); + expect([again('str2').className, again('str2').displayValue]).toEqual(['string', shownAs]); + expectKept(original, parsed, { was: ['strScalar'], is: ['str2'] }); + }); + + it('a delete, of a plain variable and of an object variable', () => { + const { by, remove, save } = casesMat(); + expect(remove(by('kp'))).toBe(true); + expect(remove(by('aParam'))).toBe(true); + const { parsed, root } = reopened(save()); + expect(parsed.records.map((r) => r.name)).toEqual(original.records.map((r) => r.name).filter((n) => n !== 'kp' && n !== 'aParam')); + expect(root.children.length).toBe(original.records.length - 3); + expectKept(original, parsed, { was: ['kp', 'aParam'] }); + // The subsystem, as it was, at its new offset: an object no variable holds any more is + // one MATLAB writes itself. + expectSubsystemLast(parsed); + expect(parsed.subsystemOffset).toBeLessThan(original.subsystemOffset); + }); + + it('an edit undone: the value read, written fresh', () => { + const { session, by, edit, save } = casesMat(); + expect(edit(by('mat2x3').children[0], 'Value', '9')).toBe(true); + session.undo(); + expect(by('mat2x3')._valueEdited).toBe(true); + const { parsed } = reopened(save()); + expect(variableOf(parsed, 'mat2x3')).toMatchObject({ dimensions: [2, 3], value: [1, 2, 3, 4, 5, 6] }); + expectKept(original, parsed, { was: ['mat2x3'], is: ['mat2x3'] }); + }); + + it('a variable added, after the last one and before the subsystem', () => { + const { root, save } = casesMat(); + root.execAddEntry(); + root.execAddEntry(undefined, 'second'); + const { parsed, by: again } = reopened(save()); + const names = parsed.records.map((r) => r.name); + expect(names.slice(-3)).toEqual(['var', 'second', '']); + expect(again('var').displayValue).toBe(root.children.find((c: any) => c.name === 'var').displayValue); + expect(parsed.records.find((r) => r.name === 'var')!.compressed).toBe(true); + expectKept(original, parsed, { is: ['var', 'second'] }); + expectSubsystemLast(parsed); + }); + + it('several edits at once', () => { + const { root, by, edit, remove, save } = casesMat(); + expect(edit(by('kp'), 'Value', '[7 8]')).toBe(true); + expect(edit(by('scalarD'), 'Name', 'renamedD')).toBe(true); + expect(edit(by('cellFlat').children[2], 'Value', "'x'")).toBe(true); + expect(edit(by('aSignal'), 'Name', 'sig2')).toBe(true); + expect(remove(by('negD'))).toBe(true); + expect(remove(by('objRow'))).toBe(true); + root.execAddEntry(undefined, 'added'); + const { parsed } = reopened(save()); + expect(variableOf(parsed, 'kp')).toMatchObject({ dimensions: [1, 2], value: [7, 8] }); + expect(variableOf(parsed, 'renamedD').value).toBe(variableOf(original, 'scalarD').value); + expect(variableOf(parsed, 'cellFlat').value).toMatchObject([{ value: 1 }, { value: 'two' }, { className: 'char', value: 'x' }]); + expect(parsed.records.map((r) => r.name)).toEqual([ + ...original.records + .map((r) => ({ scalarD: 'renamedD', aSignal: 'sig2' } as Record)[r.name!] ?? r.name) + .filter((n) => n !== 'negD' && n !== 'objRow' && n !== ''), + 'added', + '', + ]); + expectKept(original, parsed, { was: ['kp', 'scalarD', 'cellFlat', 'aSignal', 'negD', 'objRow'], is: ['kp', 'renamedD', 'cellFlat', 'sig2', 'added'] }); + expectSubsystemLast(parsed); + }); +}); + +describe('a rename into a name of another length restates the element and the record', () => { + for (const [from, to] of [ + ['kp', 'kpWithAMuchLongerName'], + ['structNest', 'sN'], + ['aParam', 'p'], + ]) { + it(`${from} -> ${to}`, () => { + const original = parseMat(fixture(CASES)); + const { by, edit, save } = opened(fixture(CASES), 'cases.mat'); + const before = by(from).displayValue; + expect(edit(by(from), 'Name', to)).toBe(true); + const { parsed, by: again } = reopened(save()); + expect(again(to).displayValue).toBe(before); + expect(again(to).constructor.name).toBe(by(to).constructor.name); + expectKept(original, parsed, { was: [from], is: [to] }); + expectSubsystemLast(parsed); + }); + } +}); + +describe('function handles and the objects of a file: written as read, renamed, deleted', () => { + const FH = 'fixtures/display/dispcat_opaque.mat'; + + it('a function handle renamed, another deleted', () => { + const original = parseMat(fixture(FH)); + const { by, edit, remove, save } = opened(fixture(FH), 'dispcat_opaque.mat'); + expect(edit(by('fh_sin'), 'Name', 'sinHandle')).toBe(true); + expect(remove(by('fh_anon'))).toBe(true); + const { parsed, by: again } = reopened(save()); + expect([again('sinHandle').className, again('sinHandle').displayValue]).toEqual(['function_handle', '@sin']); + expect(again('fh_anon')).toBeUndefined(); + expectKept(original, parsed, { was: ['fh_sin', 'fh_anon'], is: ['sinHandle'] }); + expectSubsystemLast(parsed); + }); + + it('every object variable of a file renamed reads back as the same object', () => { + const FILE = 'fixtures/mcos/nested_objects.mat'; + const { root, edit, save } = opened(fixture(FILE), 'nested_objects.mat'); + const shownAs = (r: any) => r.children.map((c: any) => [c.constructor.name, c.className, c.displayValue]); + const before = shownAs(root); + for (const node of [...root.children]) { + expect(edit(node, 'Name', node.name + 'R')).toBe(true); + } + const { root: again } = reopened(save()); + expect(again.children.map((c: any) => c.name)).toEqual(root.children.map((c: any) => c.name)); + expect(shownAs(again)).toEqual(before); + }); +}); + +describe('a -v6 file, which holds no compressed record, stays one', () => { + it('nested_handles.mat: a variable added is written plain', () => { + const FILE = 'fixtures/display/nested_handles.mat'; + const original = parseMat(fixture(FILE)); + expect(original.records.some((r) => r.compressed)).toBe(false); + const { root, save } = opened(fixture(FILE), 'nested_handles.mat'); + root.execAddEntry(); + const { parsed } = reopened(save()); + expect(parsed.records.map((r) => r.compressed)).toEqual(parsed.records.map(() => false)); + expect(parsed.records.map((r) => r.name).slice(-2)).toEqual(['var', '']); + // A plain record is 8-byte aligned, its tag's nbytes a whole number of words. + const added = parsed.records.find((r) => r.name === 'var')!; + expect([added.offset % 8, added.length % 8]).toEqual([0, 0]); + expectKept(original, parsed, { is: ['var'] }); + expectSubsystemLast(parsed); + }); + + it('hexobj_values.mat: a plain variable edited is written plain', () => { + const FILE = 'fixtures/sparse/hexobj_values.mat'; + const original = parseMat(fixture(FILE)); + const { by, edit, save } = opened(fixture(FILE), 'hexobj_values.mat'); + expect(edit(by('control'), 'Value', '[1 2 3]')).toBe(true); + const { parsed } = reopened(save()); + expect(parsed.records.every((r) => !r.compressed)).toBe(true); + expect(variableOf(parsed, 'control')).toMatchObject({ dimensions: [1, 3], value: [1, 2, 3] }); + expectKept(original, parsed, { was: ['control'], is: ['control'] }); + expectSubsystemLast(parsed); + }); + + it('a file with no subsystem keeps its header bytes 116-123 as they were', () => { + const spaces = new Uint8Array(matFile([scalar('a', 1), scalar('b', 2)])); + spaces.fill(0x20, 116, 124); + const { root, by, edit, save } = opened(arrayBufferOf(spaces)); + expect(root.subsystemOffset).toBe(0); + expect(edit(by('a'), 'Value', '5')).toBe(true); + root.execAddEntry(); + const bytes = save(); + expect(sameBytes(bytes.subarray(0, 128), spaces.subarray(0, 128))).toBe(true); + const { parsed } = reopened(bytes); + expect(parsed.records.map((r) => [r.name, r.compressed])).toEqual([['a', false], ['b', false], ['var', false]]); + expect(variableOf(parsed, 'a').value).toBe(5); + }); +}); + +describe('the marker that tells a rename from a value edit (DataNode._valueEdited)', () => { + const casesMat = () => opened(fixture(CASES), 'cases.mat'); + + it("is not set by an entry's own rename, of a plain variable or an object", () => { + const { by, edit } = casesMat(); + expect(edit(by('kp'), 'Name', 'kp2')).toBe(true); + expect(edit(by('aParam'), 'Name', 'p2')).toBe(true); + expect([by('kp2').status, by('kp2')._valueEdited, by('p2').status, by('p2')._valueEdited]).toEqual(['Modified', undefined, 'Modified', undefined]); + }); + + it("is set by a value edit, an element's, and an object's property edit", () => { + const { by, edit } = casesMat(); + expect(edit(by('kp'), 'Value', '2')).toBe(true); + expect(edit(by('mat2x3').children[3], 'Value', '2')).toBe(true); + expect(edit(by('aParam'), 'Value', '3')).toBe(true); + expect(['kp', 'mat2x3', 'aParam'].map((n) => by(n)._valueEdited)).toEqual([true, true, true]); + // On the entry only. + expect(by('mat2x3').children[3]._valueEdited).toBeUndefined(); + }); + + it("is set by the rename of anything under the entry, a bus element's, which changes the entry's value", () => { + const { by, edit, save } = casesMat(); + const element = by('aBus').children[0]; + expect(edit(element, 'Name', 'renamedElement')).toBe(true); + expect([by('aBus').status, by('aBus')._valueEdited]).toEqual(['Modified', true]); + // And a bus is an object, whose edit this writer cannot write. + expect(thrownBy(save).message).toBe( + 'Cannot write "aBus": it is a Simulink.Bus, which a MAT-file save writes only as it was read, or renamed, so its edit cannot be saved. Nothing was written.', + ); + }); +}); + +describe('a save that cannot write a variable as what it is is refused, naming it, and nothing is written', () => { + const editRefused = (name: string, what: string) => + `Cannot write "${name}": it is ${what}, which a MAT-file save writes only as it was read, or renamed, so its edit cannot be saved. Nothing was written.`; + + it("an object's property edited; the variable deleted, the file saves", () => { + const { by, edit, remove, save } = opened(fixture(CASES), 'cases.mat'); + expect(edit(by('aParam'), 'Value', '7')).toBe(true); + const thrown = thrownBy(save); + expect([thrown instanceof MatWriteError, thrown.message]).toEqual([true, editRefused('aParam', 'a Simulink.Parameter')]); + expect(remove(by('aParam'))).toBe(true); + expect(reopened(save()).by('aParam')).toBeUndefined(); + }); + + it('a string edited', () => { + const { by, edit, save } = opened(fixture(CASES), 'cases.mat'); + expect(edit(by('strScalar'), 'Value', '"xyz"')).toBe(true); + expect(thrownBy(save).message).toBe(editRefused('strScalar', 'a string')); + }); + + it('a struct holding an object, edited at another field', () => { + const { by, edit, save } = opened(fixture('fixtures/mcos/complex_objects.mat'), 'complex_objects.mat'); + const z = by('s').children.find((c: any) => c.name === 'z'); + expect(edit(z, 'Value', '5')).toBe(true); + expect(thrownBy(save).message).toBe( + 'Cannot write "s": s.p is a Simulink.Parameter, which this package cannot write into a MAT-file. Nothing was written.', + ); + }); + + it('a function handle edited, which the table does not offer, around it', () => { + const { by, edit, save } = opened(fixture('fixtures/display/dispcat_opaque.mat'), 'dispcat_opaque.mat'); + expect(edit(by('fh_sin'), 'Value', '@cos')).toMatchObject({ error: true }); + by('fh_sin')._markModified(); + expect(thrownBy(save).message).toBe(editRefused('fh_sin', 'a function handle')); + }); + + it('a value the reader did not decode, edited around the table', () => { + const z = numericVar({ name: 'z', cls: CLASS.DOUBLE, dimensions: [1, 1], real: [3], imag: [4] }); + // Byte 16 of the matrix is its array-flags data: class 255, and the complex flag kept. + z[16] = 0xff; + const { by, save } = opened(matFile([scalar('a', 1), z])); + expect(by('z').displayValue).toContain('not decoded'); + by('z')._markModified(); + expect(thrownBy(save).message).toBe(editRefused('z', 'a value that was not decoded')); + }); + + describe('a variable stored after the subsystem, which MATLAB does not read', () => { + // Param.mat, and after its subsystem a plain double: a file MATLAB lists `late` in with + // `whos -file` and does not load. + const late = () => { + const param = new Uint8Array(fixture('fixtures/mcos/Param.mat')); + return arrayBufferOf(concat([param, scalar('late', 4)])); + }; + + it('renamed or edited, refuses the save', () => { + for (const [prop, value] of [['Name', 'late2'], ['Value', '5']]) { + const { by, edit, save } = opened(late()); + expect(edit(by('late'), prop, value)).toBe(true); + expect(thrownBy(save).message).toBe( + `Cannot write "${by(prop === 'Name' ? 'late2' : 'late').name}": it is stored after the file's objects, where MATLAB does not read it, ` + + 'so it would not be read written there, and moved, it would change what MATLAB loads of the file. Nothing was written.', + ); + } + }); + + it('unedited, is written where it was; deleted, is gone', () => { + const original = parseMat(late()); + { + const { by, edit, save } = opened(late()); + expect(edit(by('Param'), 'Name', 'P')).toBe(true); + const { parsed } = reopened(save()); + expect(parsed.records.map((r) => r.name)).toEqual(['P', '', 'late']); + expect(parsed.subsystemOffset).toBe(parsed.records[1].offset); + expectKept(original, parsed, { was: ['Param'], is: ['P'] }); + } + { + const { by, remove, root, save } = opened(late()); + expect(remove(by('late'))).toBe(true); + root.execAddEntry(); + const { parsed } = reopened(save()); + expect(parsed.records.map((r) => r.name)).toEqual(['Param', 'var', '']); + expectSubsystemLast(parsed); + } + }); + }); + + it('a file whose records do not tile it', () => { + const bytes = matFile([scalar('a', 1), scalar('b', 2)], { trailing: new Uint8Array(8) }); + const { root, by, edit, save } = opened(bytes); + expect(root.framed).toBe(false); + // Unedited too: the bytes past the records are not records to write back. + const at = root.unframed.at; + const refusal = `Cannot save "f.mat": this package could not frame 8 byte(s) of it, from byte ${at} (${root.unframed.reason}), ` + + 'so a save could not keep them as they are. Nothing was written.'; + expect(thrownBy(save).message).toBe(refusal); + expect(edit(by('a'), 'Value', '3')).toBe(true); + expect(thrownBy(save).message).toBe(refusal); + }); + + it("a file opened from a host's parse that carries no records", () => { + const session = createSession(); + const { header, variables } = parseMat(fixture(CASES)); + session.addMatSourceParsed('older.mat', { header, variables }); + expect(() => session.serializeSource('older.mat')).toThrow( + 'Cannot save "older.mat": it was opened without the records a save writes back, so a save would lose every one this package did not read. Nothing was written.', + ); + }); + + it('a file whose bytes the host has since handed away', () => { + const input = fixture(CASES); + const { by, edit, save } = opened(input, 'cases.mat'); + expect(edit(by('kp'), 'Value', '3')).toBe(true); + // Transferred, as a host posting it to a worker does: every view of it is now empty. + structuredClone(input, { transfer: [input] }); + expect(thrownBy(save).message).toBe( + 'Cannot save "cases.mat": the bytes it was read from are no longer held (the header holds 0 of its 128), so what was not edited ' + + 'could not be written as it was. Nothing was written.', + ); + }); + + it("a header that places the subsystem where there is none, edited; unedited, it is the file", () => { + const bytes = new Uint8Array(fixture(CASES)); + new DataView(bytes.buffer).setBigUint64(116, 200n, true); + const { by, edit, save } = opened(arrayBufferOf(bytes), 'cases.mat'); + expect(sameBytes(save(), bytes)).toBe(true); + expect(edit(by('kp'), 'Value', '3')).toBe(true); + expect(thrownBy(save).message).toBe( + 'Cannot save "cases.mat": its header places the file\'s objects at byte 200, where no record starts, so a save cannot say where they are. Nothing was written.', + ); + }); + + it("a header that places the subsystem at a variable: the variable's edit is refused, not passed over", () => { + const bytes = new Uint8Array(matFile([scalar('a', 1), scalar('b', 2)])); + const { root, by, edit, save } = opened(arrayBufferOf(bytes)); + const at = root.records[1].offset; + new DataView(bytes.buffer).setBigUint64(116, BigInt(at), true); + const again = opened(arrayBufferOf(bytes)); + expect(sameBytes(again.save(), bytes)).toBe(true); + expect(again.edit(again.by('b'), 'Value', '5')).toBe(true); + expect(thrownBy(again.save).message).toBe( + `Cannot save "f.mat": its header places the file's objects at byte ${at}, where a variable is, so a save cannot say where they are. ` + + 'Nothing was written.', + ); + // The file as it was, with its header saying none, saves the edit. + expect(edit(by('b'), 'Value', '5')).toBe(true); + expect(variableOf(reopened(save()).parsed, 'b').value).toBe(5); + }); + + it('an unnamed record that is not the subsystem', () => { + const { root, by, edit, save } = opened(matFile([scalar('a', 1), scalar('', 2), scalar('b', 3)])); + expect(edit(by('a'), 'Value', '5')).toBe(true); + expect(thrownBy(save).message).toBe( + `Cannot save "f.mat": the record at byte ${root.records[1].offset} holds a value with no name that is not the file's objects, ` + + 'and MATLAB reads no variable past one, so a save cannot place an edit where MATLAB reads it. Nothing was written.', + ); + }); + + it('a value past the unbacked-bytes budget, restated naming the variable', () => { + // A cell declaring 1x600000 and holding one element: edited, the 599,999 it does not hold + // are each the empty double MatWriter writes for a hole, past the budget. + const { by, edit, save } = opened(matFile([cellVar('big', [scalar('', 1)], [1, 600000])])); + expect(edit(by('big').children[0], 'Value', '2')).toBe(true); + const thrown = thrownBy(save) as MatBudgetError; + expect([thrown instanceof MatBudgetError, thrown.entry, thrown.reason]).toEqual([true, 'big', 'budget']); + expect(thrown.message).toMatch(/^Cannot write "big": big is a 1x600000 cell holding 1 of its 600000 elements, /); + }); + + it('a variable added under a name that is no MATLAB name, or one the file holds already', () => { + for (const [name, why] of [ + ['1bad', 'it is not a name MATLAB can load (Invalid MATLAB name. Must start with a letter and contain only letters, digits, and underscores)'], + ['end', "it is not a name MATLAB can load ('end' is a reserved MATLAB keyword)"], + ['kp', 'the file would hold two variables named "kp", and MATLAB loads only one of them'], + ]) { + const { root, save } = opened(fixture(CASES), 'cases.mat'); + root.execAddEntry(undefined, name); + expect(thrownBy(save).message, name).toBe(`Cannot write "${name}": ${why}. Nothing was written.`); + } + }); + + it('a file that holds two variables of one name keeps both, as read', () => { + const { by, root, save } = opened(matFile([scalar('a', 1), scalar('a', 2), scalar('b', 3)])); + expect(root.children.map((c: any) => c.name)).toEqual(['a', 'a', 'b']); + root.execAddEntry(); + expect(by('b')).toBeDefined(); + const { parsed } = reopened(save()); + expect(parsed.variables.map((v) => [v.name, v.value])).toEqual([['a', 1], ['a', 2], ['b', 3], ['var', 0]]); + }); + + it('a record that does not read back as the value it was written from (the self-check)', () => { + const { by, edit, save } = opened(fixture(CASES), 'cases.mat'); + expect(edit(by('kp'), 'Value', '9')).toBe(true); + // The stream written for it, standing in for a writer that wrote another value. + by('kp')._matStream = () => encodeMatStream({ ...by('kp')._var, value: 10 }); + expect(thrownBy(save).message).toBe( + 'Cannot save "cases.mat": the file written for it did not read back as written: kp: its element 1 reads back as 10 where 9 was written. Nothing was written.', + ); + }); +}); diff --git a/test/moduleBoundaries.test.ts b/test/moduleBoundaries.test.ts index 42bc2581..5ee1019c 100644 --- a/test/moduleBoundaries.test.ts +++ b/test/moduleBoundaries.test.ts @@ -161,8 +161,8 @@ describe('the seams that are already clean stay clean', () => { expect(describeEdges(outboundFrom('datamodel/display'))).toEqual([]); }); - it('keeps datamodel/parser/ reaching for nothing but blockIdentity and fileKinds', () => { - // TWO allowed modules, and both are the same kind of thing: a table of rules about + it('keeps datamodel/parser/ reaching for nothing but blockIdentity, fileKinds and matlabName', () => { + // THREE allowed modules, and all are the same kind of thing: a table of rules about // names that the parsers share with code outside this folder. // // `datamodel/blockIdentity.ts` came first — `MdlParser` and `SlxParser` both have @@ -174,19 +174,23 @@ describe('the seams that are already clean stay clean', () => { // `endsWith('.sldd')` that disagreed on case — is that a rule like that lives in one // place. Re-spelling `'matlab.toml'` inside the parser folder to keep this test at // one allowed module would be the exact defect that module was written to end. + // `datamodel/matlabName.ts` was added with the MAT-file writer (MatFileWriter), which + // writes variable names into a file: the rule for a name MATLAB can load is the one a + // rename and a new entry are held to, and a second spelling of it here could let a + // save write a name no edit could have made. // - // Both widen the seam by nothing measurable: neither imports anything at all, so + // All three widen the seam by nothing measurable: none imports anything at all, so // each travels alone. And this adds no folder-level edge — `datamodel/parser -> // datamodel` already exists, via `blockIdentity`. - const allowed = ['datamodel/blockIdentity.ts', 'datamodel/fileKinds.ts']; + const allowed = ['datamodel/blockIdentity.ts', 'datamodel/fileKinds.ts', 'datamodel/matlabName.ts']; const strays = outboundFrom('datamodel/parser').filter((e) => !allowed.includes(e.to)); expect(describeEdges(strays)).toEqual([]); // Not a count of them — a check that each exemption is still USED, so the test // cannot start passing because the seam quietly stopped existing. Per module, not in - // total: one of the two going unreached is exactly how an allowance outlives the + // total: one of them going unreached is exactly how an allowance outlives the // reason for it. const reached = new Set(outboundFrom('datamodel/parser').map((e) => e.to)); - expect([...reached].sort(), 'and both allowed modules are still reached').toEqual(allowed); + expect([...reached].sort(), 'and every allowed module is still reached').toEqual(allowed); }); }); diff --git a/test/sessionSerializeSource.test.ts b/test/sessionSerializeSource.test.ts index 45384cd1..6a377bcf 100644 --- a/test/sessionSerializeSource.test.ts +++ b/test/sessionSerializeSource.test.ts @@ -128,20 +128,31 @@ describe('session.serializeSource', () => { }); it('returns null for a read-only format instead of throwing', () => { - // .slx / .mdl / .mat / .prj have no write path at all (see docs/TODO.md, "Not - // gaps"). A consumer enumerating every open source must not need a try/catch per - // source to find that out, and must never be handed bytes that only look like a - // file — ModelNode.serialize(), for one, returns a summary object, not a model. + // .slx / .mdl / .prj have no write path at all (see docs/TODO.md, "Not gaps"). A + // consumer enumerating every open source must not need a try/catch per source to + // find that out, and must never be handed bytes that only look like a file — + // ModelNode.serialize(), for one, returns a summary object, not a model. const s = createSession(); s.addModelSource('model_with_refs.slx', bytes('model_with_refs.slx')); - s.addMatSource('strings.mat', bytes('strings.mat')); s.addProjectSource('MyProj.prj', PRJ_STORE); expect(s.serializeSource('model_with_refs.slx')).toBeNull(); - expect(s.serializeSource('strings.mat')).toBeNull(); expect(s.serializeSource('MyProj.prj')).toBeNull(); }); + it('answers a MAT-file with its bytes, which unedited are the file it was read from', () => { + // A `.mat` is written as its own records, what was edited written fresh + // (test/matFileSave.test.ts holds every edit to that), so with nothing edited it is + // the file, byte for byte. + const s = createSession(); + const input = bytes('strings.mat'); + s.addMatSource('strings.mat', input); + + const out = s.serializeSource('strings.mat')!; + expect([out.kind, out.sourceFormat]).toEqual(['binary', 'mat']); + expect(out.kind === 'binary' ? [...out.bytes] : null).toEqual([...new Uint8Array(input)]); + }); + it('returns null for a srcId the session does not hold', () => { // Same answer as getDataSource for the same question, so a caller has one rule. const s = createSession(); From eecf2c01ab7688850f8f45ddc308885625b40f4b Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Tue, 20 Oct 2026 17:25:28 -0400 Subject: [PATCH 04/13] [wip] Refuse a MAT-file save whose bytes break a load rule the file read did not The writer's own check reads the saved bytes back with this package's reader, which opens files MATLAB refuses, so it proves the bytes are what was planned and not that MATLAB loads them. Before handing them back the save now also asks the strict checker (checkMatFile), and refuses, naming the rule and the variable, when the new file breaks a rule the file it was read from did not (violationsAdded, by rule and variable, a renamed variable by its old name). A file read breaking one, two variables of one name say, can still be saved as long as the save adds nothing. The original's violations are worked out once per opened file. Every save of MATLAB's verdict corpus is held to that: unedited, each variable renamed, each plain one written fresh, or one added, a file is either saved adding no violation or refused with a reason, and all but four of the 64 files MATLAB loads are saved. The record sweep of the fixtures leaves that corpus out, as the other whole-file sweeps do: many of its files are not framed on purpose. --- dist/datamodel/parser/MatFileWriter.d.ts.map | 2 +- dist/datamodel/parser/MatFileWriter.js | 40 +++++- dist/datamodel/parser/MatFileWriter.js.map | 2 +- src/datamodel/parser/MatFileWriter.ts | 45 ++++++- test/matFileSave.test.ts | 123 ++++++++++++++++++- test/matRecords.test.ts | 8 +- 6 files changed, 205 insertions(+), 15 deletions(-) diff --git a/dist/datamodel/parser/MatFileWriter.d.ts.map b/dist/datamodel/parser/MatFileWriter.d.ts.map index 6a1a19f3..b2be7652 100644 --- a/dist/datamodel/parser/MatFileWriter.d.ts.map +++ b/dist/datamodel/parser/MatFileWriter.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"MatFileWriter.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/MatFileWriter.ts"],"names":[],"mappings":"AAsDA,OAAO,KAAK,OAAO,MAAM,8BAA8B,CAAC;AAMxD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,CAuC7D"} \ No newline at end of file +{"version":3,"file":"MatFileWriter.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/MatFileWriter.ts"],"names":[],"mappings":"AAyDA,OAAO,KAAK,OAAO,MAAM,8BAA8B,CAAC;AAMxD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,CAwC7D"} \ No newline at end of file diff --git a/dist/datamodel/parser/MatFileWriter.js b/dist/datamodel/parser/MatFileWriter.js index 7ea46b6a..acf4fdb1 100644 --- a/dist/datamodel/parser/MatFileWriter.js +++ b/dist/datamodel/parser/MatFileWriter.js @@ -41,11 +41,13 @@ // reader did not decode, whose edit this writer cannot write; a variable stored after the // subsystem, where MATLAB does not read it; a file whose records do not tile it, or that was // opened without them. And before the bytes are handed back they are read again, and a record -// that does not read back as planned refuses the save as well (selfCheck). +// that does not read back as planned refuses the save as well (selfCheck), as does one that breaks +// a rule MATLAB loads a file by that the file it was read from did not break (MatFileCheck). import { zlibSync } from 'fflate'; import { inflateZlib } from './Inflate.js'; import { parseMat, functionHandleOf } from './MatParser.js'; import { MatBudgetError, MatWriteError, classPhrase, elementNamed, encodeMatVariable } from './MatWriter.js'; +import { checkMatFile, violationsAdded } from './MatFileCheck.js'; import { integerConversion } from './XmlUtils.js'; import { validateMatlabName } from '../matlabName.js'; const MI_MATRIX = 14; @@ -87,6 +89,7 @@ export function serializeMatFile(matNode) { refuseStructure(matNode, records, subsystem); const assembled = assemble(headerBytes, plan, subsystem); selfCheck(file, assembled.bytes, plan, assembled, headerBytes); + refuseWorse(file, assembled.bytes, plan, headerBytes, records); return assembled.bytes; } // The record `matNode`'s header says its subsystem starts at, or null when it says there is none, @@ -195,7 +198,7 @@ function refuseDuplicates(plan) { } for (const p of plan) { if (p.kind !== 'verbatim' && count.get(p.name) > 1) { - throw refusal(p.name, 'the file would hold two variables named "' + p.name + '", and MATLAB loads only one of them'); + throw refusal(p.name, 'the file holds another variable named "' + p.name + '", and MATLAB loads only one of them'); } } } @@ -404,7 +407,7 @@ function assemble(headerBytes, plan, subsystem) { // every element. Any difference refuses the save. // // This proves what was written is what was planned, and not that MATLAB loads it: this reader -// reads files MATLAB refuses. +// reads files MATLAB refuses. That is refuseWorse's to ask, of the other judge. function selfCheck(file, bytes, plan, assembled, headerBytes) { const fail = (why) => { throw new MatWriteError('Cannot save "' + file + '": the file written for it did not read back as written: ' + why + '. Nothing was written.'); @@ -463,6 +466,37 @@ function selfCheck(file, bytes, plan, assembled, headerBytes) { } }); } +// The bytes about to be handed back, judged by the rules MATLAB loads a file by (MatFileCheck), +// which this package's reader does not hold a file to: the save is refused when they break a rule +// the file they were read from did not break. A file that was read breaking one (two variables of +// one name, say) may still be saved, edited elsewhere, as long as the save adds nothing to it. +// Compared by rule and variable, not by offset, which every edit before a record moves; a +// variable renamed is compared under the name the file it was read from gave it. +// +// The file as read is checked once, and its violations kept with its records: they are the bytes +// it was read from, and no edit changes them. +function refuseWorse(file, bytes, plan, headerBytes, records) { + let before = originalViolations.get(records); + if (!before) { + before = checkMatFile(concat([headerBytes, ...records.map((r) => r.bytes)])); + originalViolations.set(records, before); + } + const renamed = new Map(); + for (const p of plan) { + if (p.kind !== 'verbatim' && p.record?.name && p.record.name !== p.name) { + renamed.set(p.name, p.record.name); + } + } + const added = violationsAdded(before, checkMatFile(bytes), renamed); + if (added.length > 0) { + const more = added.length - 1; + throw new MatWriteError('Cannot save "' + file + '": the file written for it breaks a rule MATLAB loads a file by, which the file it was read ' + + 'from does not: ' + added[0].message + (more > 0 ? ' It breaks ' + more + ' more as well.' : '') + ' Nothing was written.'); + } +} +// What MatFileCheck says of the file a MatNode was read from, by its records (MatNode.records), +// which are that file's bytes for as long as the node is. +const originalViolations = new WeakMap(); // Where the value read back, `read`, is not the value `model` it was written from, in words, or // null where it is that value: the same class, complexity, storage and size, the same members of a // cell, the same fields of a struct in the same order, and each element the same number as its diff --git a/dist/datamodel/parser/MatFileWriter.js.map b/dist/datamodel/parser/MatFileWriter.js.map index 0450137e..fb3ad877 100644 --- a/dist/datamodel/parser/MatFileWriter.js.map +++ b/dist/datamodel/parser/MatFileWriter.js.map @@ -1 +1 @@ -{"version":3,"file":"MatFileWriter.js","sourceRoot":"","sources":["../../../src/datamodel/parser/MatFileWriter.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"MatFileWriter.js","sourceRoot":"","sources":["../../../src/datamodel/parser/MatFileWriter.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,EAAE;AACF,+FAA+F;AAC/F,2EAA2E;AAC3E,EAAE;AACF,8FAA8F;AAC9F,gGAAgG;AAChG,8FAA8F;AAC9F,wFAAwF;AACxF,gGAAgG;AAChG,8FAA8F;AAC9F,8FAA8F;AAC9F,gGAAgG;AAChG,gGAAgG;AAChG,iCAAiC;AACjC,EAAE;AACF,oEAAoE;AACpE,EAAE;AACF,mDAAmD;AACnD,yDAAyD;AACzD,0FAA0F;AAC1F,qFAAqF;AACrF,0FAA0F;AAC1F,qFAAqF;AACrF,6DAA6D;AAC7D,yDAAyD;AACzD,mBAAmB;AACnB,EAAE;AACF,+FAA+F;AAC/F,6FAA6F;AAC7F,uFAAuF;AACvF,yEAAyE;AACzE,EAAE;AACF,8FAA8F;AAC9F,8FAA8F;AAC9F,+FAA+F;AAC/F,qCAAqC;AACrC,EAAE;AACF,2FAA2F;AAC3F,+FAA+F;AAC/F,0FAA0F;AAC1F,6FAA6F;AAC7F,8FAA8F;AAC9F,mGAAmG;AACnG,6FAA6F;AAE7F,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC7G,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAElE,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAMtD,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB,MAAM,aAAa,GAAG,EAAE,CAAC;AAEzB;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IACzC,IAAI,CAAC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;QAC7B,MAAM,IAAI,aAAa,CACrB,eAAe,GAAG,IAAI,GAAG,0FAA0F;cAC/G,iDAAiD,CACtD,CAAC;IACJ,CAAC;IACD,yFAAyF;IACzF,wFAAwF;IACxF,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;IACpJ,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,IAAI,aAAa,CACrB,eAAe,GAAG,IAAI,GAAG,wDAAwD,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC;cAChJ,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,UAAU,GAAG,IAAI,CAAC,MAAM,GAAG,4DAA4D;cAC3H,sBAAsB,CAC3B,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,EAAE,IAAI,GAAG,CAAC;QACvC,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC,UAAU,GAAG,WAAW,CAAC,UAAU,GAAG,EAAE,CAAC;QAClF,MAAM,IAAI,aAAa,CACrB,eAAe,GAAG,IAAI,GAAG,kCAAkC,GAAG,aAAa,GAAG,4BAA4B,GAAG,EAAE;cAC3G,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;cAC9D,mEAAmE,CACxE,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACjD,uEAAuE;IACvE,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7G,OAAO,MAAM,CAAC,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;IACD,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IACzD,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IAC/D,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAC/D,OAAO,SAAS,CAAC,KAAK,CAAC;AACzB,CAAC;AAiBD,kGAAkG;AAClG,gGAAgG;AAChG,8FAA8F;AAC9F,6FAA6F;AAC7F,+DAA+D;AAC/D,SAAS,WAAW,CAAC,OAAgB,EAAE,OAAoB;IACzD,IAAI,OAAO,CAAC,eAAe,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,eAAe,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;AAC1F,CAAC;AAED,8FAA8F;AAC9F,iGAAiG;AACjG,8FAA8F;AAC9F,8FAA8F;AAC9F,iGAAiG;AACjG,gFAAgF;AAChF,SAAS,MAAM,CAAC,OAAgB,EAAE,OAAoB,EAAE,SAA2B;IACjF,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IAC3E,MAAM,IAAI,GAAc,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,CAAC;IACF,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,QAAQ,EAAE,CAAC;YACX,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;YACxC,aAAa,GAAG,IAAI,CAAC;YACrB,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;YACxC,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAC5B,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAClC,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1C,CAAC;aAAM,IAAI,aAAa,EAAE,CAAC;YACzB,MAAM,OAAO,CACX,IAAI,CAAC,IAAI,EACT,gHAAgH;kBAC5G,0DAA0D,CAC/D,CAAC;QACJ,CAAC;aAAM,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IACD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,QAAQ,EAAE,CAAC;IACb,CAAC;IACD,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,gGAAgG;AAChG,wFAAwF;AACxF,gGAAgG;AAChG,+FAA+F;AAC/F,sCAAsC;AACtC,SAAS,MAAM,CAAC,IAAc,EAAE,MAAiB;IAC/C,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,IAAgB,CAAC;IAClD,IAAI,MAAM,KAAK,KAAK,IAAI,CAAC,MAAM,KAAK,UAAU,IAAI,YAAY,CAAC,EAAE,CAAC;QAChE,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AACrD,CAAC;AAED,8FAA8F;AAC9F,+FAA+F;AAC/F,gGAAgG;AAChG,4FAA4F;AAC5F,6EAA6E;AAC7E,SAAS,eAAe,CAAC,OAAgB,EAAE,OAAoB,EAAE,SAA2B;IAC1F,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IACvC,IAAI,MAAM,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,MAAM,IAAI,aAAa,CACrB,eAAe,GAAG,IAAI,GAAG,mDAAmD,GAAG,MAAM,GAAG,UAAU;cAC9F,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,kBAAkB,CAAC,GAAG,yCAAyC;cAC7H,sBAAsB,CAC3B,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC;IAClE,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,IAAI,aAAa,CACrB,eAAe,GAAG,IAAI,GAAG,wBAAwB,GAAG,KAAK,CAAC,MAAM,GAAG,8CAA8C;cAC7G,gHAAgH;cAChH,sBAAsB,CAC3B,CAAC;IACJ,CAAC;AACH,CAAC;AAED,8FAA8F;AAC9F,6FAA6F;AAC7F,6EAA6E;AAC7E,SAAS,gBAAgB,CAAC,IAAe;IACvC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC/C,MAAM,MAAM,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAChF,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAE,GAAG,CAAC,EAAE,CAAC;YACpD,MAAM,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,yCAAyC,GAAG,CAAC,CAAC,IAAI,GAAG,sCAAsC,CAAC,CAAC;QACrH,CAAC;IACH,CAAC;AACH,CAAC;AAED,2FAA2F;AAC3F,+EAA+E;AAC/E,SAAS,OAAO,CAAC,IAAY,EAAE,GAAW;IACxC,OAAO,IAAI,aAAa,CAAC,gBAAgB,GAAG,IAAI,GAAG,KAAK,GAAG,GAAG,GAAG,wBAAwB,CAAC,CAAC;AAC7F,CAAC;AAED,8FAA8F;AAC9F,+FAA+F;AAC/F,kFAAkF;AAClF,SAAS,UAAU,CAAC,IAAY;IAC9B,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,OAAO,CAAC,IAAI,EAAE,oCAAoC,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC;AAED,kGAAkG;AAElG,gGAAgG;AAChG,gGAAgG;AAChG,4FAA4F;AAC5F,6CAA6C;AAC7C,SAAS,SAAS,CAAC,IAAc,EAAE,MAAiB;IAClD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,UAAU,CAAC,IAAI,CAAC,CAAC;IACjB,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,OAAO,CAAC,IAAI,EAAE,uCAAuC,GAAG,MAAM,CAAC,MAAM,GAAG,8EAA8E,CAAC,CAAC;IAChK,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;AACzF,CAAC;AAED,8FAA8F;AAC9F,gGAAgG;AAChG,qEAAqE;AACrE,EAAE;AACF,kGAAkG;AAClG,gGAAgG;AAChG,iGAAiG;AACjG,4FAA4F;AAC5F,SAAS,OAAO,CAAC,IAAc,EAAE,MAAwB,EAAE,QAAiB;IAC1E,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,UAAU,CAAC,IAAI,CAAC,CAAC;IACjB,MAAM,GAAG,GAAG,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChE,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,IAAI,GAAG,GAAG,IAAI,WAAW,CAAC,MAAM,CAAE,IAAiB,CAAC,SAAS,IAAI,QAAQ,CAAC,CAAC,CAAC;QAClF,MAAM,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,6FAA6F,CAAC,CAAC;IACvI,CAAC;IACD,MAAM,KAAK,GAAG,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;IACtD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,OAAO,CAAC,IAAI,EAAE,mDAAmD,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC;AAC3F,CAAC;AAED,2FAA2F;AAC3F,+FAA+F;AAC/F,+FAA+F;AAC/F,oCAAoC;AACpC,SAAS,WAAW,CAAC,IAAc;IACjC,MAAM,CAAC,GAAG,IAA8C,CAAC;IACzD,OAAO,OAAO,CAAC,CAAC,UAAU,KAAK,UAAU,IAAI,OAAO,CAAC,CAAC,YAAY,KAAK,UAAU,CAAC,CAAC,CAAE,CAAwB,CAAC,CAAC,CAAC,IAAI,CAAC;AACvH,CAAC;AAED,kGAAkG;AAClG,SAAS,QAAQ,CAAC,CAAc;IAC9B,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QACf,OAAO,WAAW,CAAC,CAAC,CAAC,SAAS,IAAI,QAAQ,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,iBAAiB,EAAE,CAAC;QAC7D,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IACD,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;QAC7C,OAAO,8BAA8B,CAAC;IACxC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,kGAAkG;AAClG,gGAAgG;AAChG,iGAAiG;AACjG,+FAA+F;AAC/F,8FAA8F;AAC9F,+FAA+F;AAC/F,6FAA6F;AAC7F,yDAAyD;AACzD,SAAS,YAAY,CAAC,IAAwB;IAC5C,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,GAAG,MAAM,GAAG,UAAU,CAAC,IAAI,GAAG,mDAAmD,CAAC,CAAC;IAC7H,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;QACrB,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAChC,CAAC;IACD,IAAI,CAAC,aAAa,EAAE,CAAC;IACrB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IACjC,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IACD,6FAA6F;IAC7F,kBAAkB;IAClB,IAAI,CAAC;QACH,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,cAAc,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC,YAAY,aAAa,EAAE,CAAC;YAC/B,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;QACD,MAAM,CAAC,CAAC;IACV,CAAC;IACD,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,wCAAwC,CAAC,CAAC;AACrE,CAAC;AAED,2FAA2F;AAC3F,2FAA2F;AAC3F,SAAS,YAAY,CAAC,EAAY;IAChC,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;IAC7B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,WAAW,CAAC,MAAM,CAAE,EAAe,CAAC,SAAS,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC;IACpG,CAAC;IACD,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,gBAAgB,IAAI,QAAQ,CAAC,EAAE,CAAC;IACzF,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,8BAA8B,EAAE,CAAC;IACzE,CAAC;IACD,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ,IAAI,IAAI,CAAC,WAAW,KAAK,iBAAiB,EAAE,CAAC;QAC5E,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC;IAC3G,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,uCAAuC,EAAE,CAAC;AAClF,CAAC;AAED,iGAAiG;AACjG,+FAA+F;AAC/F,0CAA0C;AAC1C,SAAS,eAAe,CAAC,MAAiB;IACxC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC3B,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC/B,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,GAAG,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChH,CAAC;IACD,IAAI,QAAoB,CAAC;IACzB,IAAI,CAAC;QACH,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,QAAQ,CAAC,UAAU,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;QAChE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1E,CAAC;AAED,kGAAkG;AAClG,kGAAkG;AAClG,0EAA0E;AAC1E,SAAS,WAAW,CAAC,OAAmB,EAAE,QAAiB;IACzD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/C,OAAO,MAAM,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAC1E,CAAC;AAWD,2FAA2F;AAC3F,iGAAiG;AACjG,iGAAiG;AACjG,+FAA+F;AAC/F,SAAS,QAAQ,CAAC,WAAuB,EAAE,IAAe,EAAE,SAA2B;IACrF,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC;IACnC,MAAM,KAAK,GAAiB,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,WAAW,GAAkB,IAAI,CAAC;IACtC,IAAI,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACpD,WAAW,GAAG,EAAE,CAAC;QACnB,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,EAAE,IAAI,KAAK,CAAC,UAAU,CAAC;IACzB,CAAC;IACD,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QACzB,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,CAAC;IACjH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;AACxD,CAAC;AAED,kGAAkG;AAClG,EAAE;AACF,gGAAgG;AAChG,mGAAmG;AACnG,gGAAgG;AAChG,8FAA8F;AAC9F,gGAAgG;AAChG,kDAAkD;AAClD,EAAE;AACF,8FAA8F;AAC9F,gFAAgF;AAEhF,SAAS,SAAS,CAAC,IAAY,EAAE,KAAiB,EAAE,IAAe,EAAE,SAAoB,EAAE,WAAuB;IAChH,MAAM,IAAI,GAAG,CAAC,GAAW,EAAS,EAAE;QAClC,MAAM,IAAI,aAAa,CAAC,eAAe,GAAG,IAAI,GAAG,2DAA2D,GAAG,GAAG,GAAG,wBAAwB,CAAC,CAAC;IACjJ,CAAC,CAAC;IACF,IAAI,MAAiB,CAAC;IACtB,IAAI,CAAC;QACH,mFAAmF;QACnF,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAqB,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC,8BAA8B,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC;IAChC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACjI,OAAO,IAAI,CAAC,4CAA4C,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,aAAa,GAAG,SAAS,CAAC,WAAW,IAAI,CAAC,CAAC;IACjD,IAAI,MAAM,CAAC,eAAe,KAAK,aAAa,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAC,wCAAwC,GAAG,MAAM,CAAC,eAAe,GAAG,yBAAyB,GAAG,aAAa,CAAC,CAAC;IAC7H,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC;IACzG,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACpB,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;YACtB,IAAI,CAAC,0BAA0B,GAAG,GAAG,CAAC,MAAM,GAAG,iCAAiC,GAAG,EAAE,CAAC,CAAC;QACzF,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC1B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1C,IAAI,CAAC,qBAAqB,GAAG,EAAE,GAAG,oCAAoC,CAAC,CAAC;YAC1E,CAAC;YACD,OAAO;QACT,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;YACnG,IAAI,CAAC,qBAAqB,GAAG,EAAE,GAAG,gBAAgB,GAAG,CAAC,CAAC,IAAI,GAAG,cAAc,GAAG,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;QACjJ,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACzC,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;YACnC,MAAM,OAAO,GAAG,CAAC,CAAoB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC3E,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;YAC5B,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;gBACvC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,wDAAwD,CAAC,CAAC;YAChF,CAAC;YACD,OAAO;QACT,CAAC;QACD,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9D,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,gGAAgG;AAChG,kGAAkG;AAClG,kGAAkG;AAClG,+FAA+F;AAC/F,0FAA0F;AAC1F,iFAAiF;AACjF,EAAE;AACF,iGAAiG;AACjG,8CAA8C;AAC9C,SAAS,WAAW,CAAC,IAAY,EAAE,KAAiB,EAAE,IAAe,EAAE,WAAuB,EAAE,OAAoB;IAClH,IAAI,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,kBAAkB,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;IACpE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9B,MAAM,IAAI,aAAa,CACrB,eAAe,GAAG,IAAI,GAAG,8FAA8F;cACnH,iBAAiB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,IAAI,GAAG,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,uBAAuB,CAC/H,CAAC;IACJ,CAAC;AACH,CAAC;AAED,gGAAgG;AAChG,0DAA0D;AAC1D,MAAM,kBAAkB,GAAG,IAAI,OAAO,EAA+B,CAAC;AAEtE,gGAAgG;AAChG,mGAAmG;AACnG,+FAA+F;AAC/F,6FAA6F;AAC7F,kGAAkG;AAClG,6DAA6D;AAC7D,SAAS,OAAO,CAAC,KAAqC,EAAE,IAAoC,EAAE,EAAU;IACtG,MAAM,CAAC,GAAG,KAAK,IAAI,YAAY,CAAC;IAChC,MAAM,CAAC,GAAG,IAAI,IAAI,YAAY,CAAC;IAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACvB,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,GAAW,EAAE,EAAU,EAAE,EAAE,CAAC,EAAE,GAAG,QAAQ,GAAG,IAAI,GAAG,iBAAiB,GAAG,EAAE,GAAG,SAAS,GAAG,GAAG,GAAG,cAAc,CAAC;IACzI,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACrB,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACrE,OAAO,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACxC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QACf,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACnB,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAA2B,CAAC;QACzD,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAA2B,CAAC;QACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;YAC1D,IAAI,CAAC,EAAE,CAAC;gBACN,OAAO,CAAC,CAAC;YACX,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QACrB,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;QAC1B,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAClD,OAAO,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC;QAC1F,CAAC;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;gBAC9H,IAAI,CAAC,EAAE,CAAC;oBACN,OAAO,CAAC,CAAC;gBACX,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAClC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QACjC,OAAO,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;IACnF,CAAC;IACD,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,IAAI,CAAW,CAAC,CAAC,CAAE,CAAC,IAAI,CAAW,EAAE,CAAC;YAC7E,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAChC,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;gBACnB,OAAO,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7I,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8FAA8F;AAC9F,gFAAgF;AAChF,SAAS,aAAa,CAAC,CAAc,EAAE,CAAc,EAAE,GAAW,EAAE,EAAU;IAC5E,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;IACpB,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;QACf,OAAO,EAAE,GAAG,oCAAoC,CAAC;IACnD,CAAC;IACD,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG,CAAC,CAAqC,EAAE,EAAE;QACxD,MAAM,GAAG,GAAG,IAAI,GAAG,EAA4B,CAAC;QAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACnB,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;gBACzB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IACF,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;IACxB,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;IACvB,IAAI,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;QACzB,OAAO,EAAE,GAAG,uBAAuB,GAAG,EAAE,CAAC,IAAI,GAAG,qBAAqB,GAAG,GAAG,CAAC,IAAI,GAAG,eAAe,CAAC;IACrG,CAAC;IACD,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAChD,OAAO,EAAE,GAAG,qBAAqB,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,iCAAiC,CAAC;QACtG,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,YAAY,GAAgB,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAEvJ,MAAM,aAAa,GAAG,uBAAuB,CAAC;AAE9C,gGAAgG;AAChG,+CAA+C;AAC/C,SAAS,OAAO,CAAC,CAAc;IAC7B,OAAO,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5E,CAAC;AAED,SAAS,SAAS,CAAC,CAAc;IAC/B,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AACjF,CAAC;AAED,gGAAgG;AAChG,oGAAoG;AACpG,8FAA8F;AAC9F,SAAS,aAAa,CAAC,GAAW;IAChC,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACjD,MAAM,EAAE,GAAG,iBAAiB,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAChE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QACrB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,iGAAiG;AACjG,0BAA0B;AAC1B,SAAS,MAAM,CAAC,CAAU,EAAE,IAAiB;IAC3C,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,IAAI,IAAK,CAA6B,EAAE,CAAC;QAClF,OAAQ,CAA6B,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,CAAC;AAED,6FAA6F;AAC7F,mDAAmD;AACnD,SAAS,QAAQ,CAAC,IAA6C,EAAE,CAAS,EAAE,CAAS;IACnF,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACpE,CAAC;AAED,0FAA0F;AAC1F,SAAS,MAAM,CAAC,CAAc;IAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IACvC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACZ,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,mGAAmG;AACnG,SAAS,UAAU,CAAC,KAAc;IAChC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC;AAED,kGAAkG;AAElG,SAAS,MAAM,CAAC,KAAmB;IACjC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,KAAK,IAAI,CAAC,CAAC,UAAU,CAAC;IACxB,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACf,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC;IACrB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,KAAK,CAAC,CAAS;IACtB,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;IACrD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,KAAK,CAAC,KAAiB,EAAE,EAAU;IAC1C,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAC5F,CAAC;AAED,SAAS,SAAS,CAAC,CAAa,EAAE,CAAa;IAC7C,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC;QAClC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAClB,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"} \ No newline at end of file diff --git a/src/datamodel/parser/MatFileWriter.ts b/src/datamodel/parser/MatFileWriter.ts index cb3f5586..52df7bca 100644 --- a/src/datamodel/parser/MatFileWriter.ts +++ b/src/datamodel/parser/MatFileWriter.ts @@ -41,13 +41,16 @@ // reader did not decode, whose edit this writer cannot write; a variable stored after the // subsystem, where MATLAB does not read it; a file whose records do not tile it, or that was // opened without them. And before the bytes are handed back they are read again, and a record -// that does not read back as planned refuses the save as well (selfCheck). +// that does not read back as planned refuses the save as well (selfCheck), as does one that breaks +// a rule MATLAB loads a file by that the file it was read from did not break (MatFileCheck). import { zlibSync } from 'fflate'; import { inflateZlib } from './Inflate.js'; import { parseMat, functionHandleOf } from './MatParser.js'; import type { MatRecord, MatVariable, ParsedMat } from './MatParser.js'; import { MatBudgetError, MatWriteError, classPhrase, elementNamed, encodeMatVariable } from './MatWriter.js'; +import { checkMatFile, violationsAdded } from './MatFileCheck.js'; +import type { MatViolation } from './MatFileCheck.js'; import { integerConversion } from './XmlUtils.js'; import { validateMatlabName } from '../matlabName.js'; import type BaseNode from '../node/BaseNode.js'; @@ -102,6 +105,7 @@ export function serializeMatFile(matNode: MatNode): Uint8Array { refuseStructure(matNode, records, subsystem); const assembled = assemble(headerBytes, plan, subsystem); selfCheck(file, assembled.bytes, plan, assembled, headerBytes); + refuseWorse(file, assembled.bytes, plan, headerBytes, records); return assembled.bytes; } @@ -234,7 +238,7 @@ function refuseDuplicates(plan: Planned[]): void { } for (const p of plan) { if (p.kind !== 'verbatim' && count.get(p.name)! > 1) { - throw refusal(p.name, 'the file would hold two variables named "' + p.name + '", and MATLAB loads only one of them'); + throw refusal(p.name, 'the file holds another variable named "' + p.name + '", and MATLAB loads only one of them'); } } } @@ -463,7 +467,7 @@ function assemble(headerBytes: Uint8Array, plan: Planned[], subsystem: MatRecord // every element. Any difference refuses the save. // // This proves what was written is what was planned, and not that MATLAB loads it: this reader -// reads files MATLAB refuses. +// reads files MATLAB refuses. That is refuseWorse's to ask, of the other judge. function selfCheck(file: string, bytes: Uint8Array, plan: Planned[], assembled: Assembled, headerBytes: Uint8Array): void { const fail = (why: string): never => { @@ -523,6 +527,41 @@ function selfCheck(file: string, bytes: Uint8Array, plan: Planned[], assembled: }); } +// The bytes about to be handed back, judged by the rules MATLAB loads a file by (MatFileCheck), +// which this package's reader does not hold a file to: the save is refused when they break a rule +// the file they were read from did not break. A file that was read breaking one (two variables of +// one name, say) may still be saved, edited elsewhere, as long as the save adds nothing to it. +// Compared by rule and variable, not by offset, which every edit before a record moves; a +// variable renamed is compared under the name the file it was read from gave it. +// +// The file as read is checked once, and its violations kept with its records: they are the bytes +// it was read from, and no edit changes them. +function refuseWorse(file: string, bytes: Uint8Array, plan: Planned[], headerBytes: Uint8Array, records: MatRecord[]): void { + let before = originalViolations.get(records); + if (!before) { + before = checkMatFile(concat([headerBytes, ...records.map((r) => r.bytes)])); + originalViolations.set(records, before); + } + const renamed = new Map(); + for (const p of plan) { + if (p.kind !== 'verbatim' && p.record?.name && p.record.name !== p.name) { + renamed.set(p.name, p.record.name); + } + } + const added = violationsAdded(before, checkMatFile(bytes), renamed); + if (added.length > 0) { + const more = added.length - 1; + throw new MatWriteError( + 'Cannot save "' + file + '": the file written for it breaks a rule MATLAB loads a file by, which the file it was read ' + + 'from does not: ' + added[0].message + (more > 0 ? ' It breaks ' + more + ' more as well.' : '') + ' Nothing was written.', + ); + } +} + +// What MatFileCheck says of the file a MatNode was read from, by its records (MatNode.records), +// which are that file's bytes for as long as the node is. +const originalViolations = new WeakMap(); + // Where the value read back, `read`, is not the value `model` it was written from, in words, or // null where it is that value: the same class, complexity, storage and size, the same members of a // cell, the same fields of a struct in the same order, and each element the same number as its diff --git a/test/matFileSave.test.ts b/test/matFileSave.test.ts index 7c6f111c..1c459d2e 100644 --- a/test/matFileSave.test.ts +++ b/test/matFileSave.test.ts @@ -19,18 +19,24 @@ import { parseMat } from '../src/datamodel/parser/MatParser.js'; import type { MatRecord, ParsedMat } from '../src/datamodel/parser/MatParser.js'; import { encodeMatStream, MatBudgetError, MatWriteError } from '../src/datamodel/parser/MatWriter.js'; import { serializeMatFile } from '../src/datamodel/parser/MatFileWriter.js'; +import { checkMatFile, violationsAdded } from '../src/datamodel/parser/MatFileCheck.js'; import { createSession } from '../src/index.js'; import { CLASS, MI, cellVar, matFile, numericVar, u32le } from './tools/matBytes.js'; const TEST_ROOT = fileURLToPath(new URL('.', import.meta.url)); -// Every `.mat` under test/, recursively, so a fixture added later is swept by default. +// Every `.mat` under test/, recursively, so a fixture added later is swept by default. But not +// test/fixtures/mat-check, MATLAB's verdict corpus, of files edited to break its load rules on +// purpose (test/matFileCheck.test.ts), which has a sweep of its own below. +const MAT_CHECK = join(TEST_ROOT, 'fixtures', 'mat-check'); function matFilesUnder(dir: string): string[] { const out: string[] = []; for (const entry of readdirSync(dir, { withFileTypes: true })) { const abs = join(dir, entry.name); if (entry.isDirectory()) { - out.push(...matFilesUnder(abs)); + if (abs !== MAT_CHECK) { + out.push(...matFilesUnder(abs)); + } } else if (entry.isFile() && entry.name.endsWith('.mat')) { out.push(abs); } @@ -78,11 +84,17 @@ function opened(bytes: ArrayBuffer, name = 'f.mat') { session.setActive(root, node); return session.deleteNodeById(node.id); }; - // What session.serializeSource hands back for it, which for a MAT-file is always bytes. + // What session.serializeSource hands back for it, which for a MAT-file is always bytes, and + // which by the rules MATLAB loads a file by (MatFileCheck) is no worse than the file it was + // read from: as clean as every fixture here is, and adding nothing to one that is not. const save = (): Uint8Array => { const out = session.serializeSource(name)!; expect([out.kind, out.sourceFormat]).toEqual(['binary', 'mat']); - return (out as { bytes: Uint8Array }).bytes; + const saved = (out as { bytes: Uint8Array }).bytes; + const before = checkMatFile(new Uint8Array(bytes)); + const after = checkMatFile(saved); + expect(before.length === 0 ? after : violationsAdded(before, after)).toEqual([]); + return saved; }; return { session, root, by, edit, remove, save }; } @@ -664,7 +676,7 @@ describe('a save that cannot write a variable as what it is is refused, naming i for (const [name, why] of [ ['1bad', 'it is not a name MATLAB can load (Invalid MATLAB name. Must start with a letter and contain only letters, digits, and underscores)'], ['end', "it is not a name MATLAB can load ('end' is a reserved MATLAB keyword)"], - ['kp', 'the file would hold two variables named "kp", and MATLAB loads only one of them'], + ['kp', 'the file holds another variable named "kp", and MATLAB loads only one of them'], ]) { const { root, save } = opened(fixture(CASES), 'cases.mat'); root.execAddEntry(undefined, name); @@ -691,3 +703,104 @@ describe('a save that cannot write a variable as what it is is refused, naming i ); }); }); + +describe("MATLAB's verdict corpus (test/fixtures/mat-check): a save adds nothing MATLAB refuses, or is refused", () => { + // Copies of MATLAB-written files, most edited one byte range at a time to break a rule MATLAB + // loads a file by, with MATLAB's verdict on each. Whatever a file breaks as read, a save of it + // either breaks no rule it did not break (MatFileCheck.violationsAdded, by rule and variable, + // a renamed variable by its old name), or throws, naming why, and hands back nothing. + const verdicts: { file: string; matlab: string }[] = JSON.parse(readFileSync(join(MAT_CHECK, 'verdicts.json'), 'utf8')); + const edits: [string, (o: ReturnType) => Map][] = [ + ['no edit', () => new Map()], + [ + 'every variable renamed', + (o) => { + const renamed = new Map(); + o.root.children.forEach((node: any, i: number) => { + const was = node.name; + if (o.edit(node, 'Name', 'renamed' + i) === true) { + renamed.set('renamed' + i, was); + } + }); + return renamed; + }, + ], + [ + 'every plain variable written fresh', + (o) => { + for (const node of o.root.children.filter((n: any) => n._matWritable?.() === true && !o.root.recordOf(n)?.variable?.isOpaque)) { + node._markModified(); + } + return new Map(); + }, + ], + [ + 'a variable added', + (o) => { + o.root.execAddEntry(); + return new Map(); + }, + ], + ]; + + for (const [what, edit] of edits) { + it(what, () => { + let saved = 0; + for (const { file, matlab } of verdicts) { + const input = arrayBufferOf(new Uint8Array(readFileSync(join(MAT_CHECK, file)))); + const before = checkMatFile(new Uint8Array(input)); + const o = opened(input, file); + const renamed = edit(o); + let bytes: Uint8Array; + try { + bytes = serializeMatFile(o.root); + } catch (e) { + expect(e, file).toBeInstanceOf(MatWriteError); + expect((e as Error).message, file).toMatch(/^Cannot (save|write) "/); + continue; + } + expect(violationsAdded(before, checkMatFile(bytes), renamed), file).toEqual([]); + if (what === 'no edit') { + expect(sameBytes(bytes, new Uint8Array(input)), file).toBe(true); + } + if (matlab === 'loads') { + saved++; + } + } + // Not vacuous: of the 64 files MATLAB loads, all but a few are saved. The ones refused are + // refused for what they hold: 8 zero bytes after the subsystem, which this package does not + // frame; a name of 70 characters, longer than the 63 a rename is held to; two variables of + // one name, one of them edited. + expect(saved, what).toBeGreaterThanOrEqual(verdicts.filter((v) => v.matlab === 'loads').length - 4); + }); + } +}); + +describe('the strict check, of the bytes about to be handed back (MatFileCheck)', () => { + it('refuses a save whose bytes break a rule the file read did not, though they read back as written', () => { + const { by, edit, save } = opened(fixture(CASES), 'cases.mat'); + expect(edit(by('charStr'), 'Value', "'中文'")).toBe(true); + // The stream written for it, standing in for a writer that stored the text as miUINT16, which + // this package's reader reads back as written and MATLAB reads as the low byte of each unit. + const stream = (text: string) => { + const units = new Uint8Array(text.length * 2); + for (let i = 0; i < text.length; i++) { + new DataView(units.buffer).setUint16(2 * i, text.charCodeAt(i), true); + } + const tag = (type: number, n: number) => concat([u32le(type), u32le(n)]); + const body = concat([ + tag(MI.UINT32, 8), u32le(CLASS.CHAR), u32le(0), + tag(MI.INT32, 8), u32le(1), u32le(text.length), + tag(MI.INT8, 0), + tag(MI.UINT16, units.length), units, new Uint8Array((8 - (units.length % 8)) % 8), + ]); + return concat([new Uint8Array([0, 1, 0x49, 0x4d, 0, 0, 0, 0]), tag(MI.MATRIX, body.length), body]); + }; + by('charStr')._matStream = () => stream('中文'); + const thrown = thrownBy(save); + expect(thrown).toBeInstanceOf(MatWriteError); + expect(thrown.message).toMatch( + /^Cannot save "cases\.mat": the file written for it breaks a rule MATLAB loads a file by, which the file it was read from does not: .*charStr.* Nothing was written\.$/, + ); + }); +}); diff --git a/test/matRecords.test.ts b/test/matRecords.test.ts index 734cfaab..fdacaaf4 100644 --- a/test/matRecords.test.ts +++ b/test/matRecords.test.ts @@ -25,13 +25,17 @@ import { CLASS, MI, charVar, element, matFile, numericVar, u32le } from './tools const TEST_ROOT = fileURLToPath(new URL('.', import.meta.url)); -// Every `.mat` under test/, recursively, so a fixture added later is swept by default. +// Every `.mat` under test/, recursively, so a fixture added later is swept by default. But not +// test/fixtures/mat-check: copies of MATLAB-written files edited to break MATLAB's load rules on +// purpose, each with MATLAB's verdict (test/matFileCheck.test.ts), many of them not framed. function matFilesUnder(dir: string): string[] { const out: string[] = []; for (const entry of readdirSync(dir, { withFileTypes: true })) { const abs = join(dir, entry.name); if (entry.isDirectory()) { - out.push(...matFilesUnder(abs)); + if (entry.name !== 'mat-check') { + out.push(...matFilesUnder(abs)); + } } else if (entry.isFile() && entry.name.endsWith('.mat')) { out.push(abs); } From 9136df08b94ecc7ad50e41cb7f3143df5bb29c95 Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Tue, 20 Oct 2026 17:28:36 -0400 Subject: [PATCH 05/13] [wip] Pin that a renamed variable keeps the load-rule violation its file already had The strict check compares the saved file with the one read by rule and variable, and a renamed variable is matched under its old name. The map runs from the new name to the old one; turned round, every rename in a file that already broke a rule would refuse its save. The verdict-corpus sweep tolerates a refusal, so it did not pin which way round the map goes. This test does: a file whose char is stored as miUINT8, renamed, saves with its one violation, now under the new name. --- test/matFileSave.test.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/test/matFileSave.test.ts b/test/matFileSave.test.ts index 1c459d2e..5ff9ea34 100644 --- a/test/matFileSave.test.ts +++ b/test/matFileSave.test.ts @@ -777,6 +777,25 @@ describe("MATLAB's verdict corpus (test/fixtures/mat-check): a save adds nothing }); describe('the strict check, of the bytes about to be handed back (MatFileCheck)', () => { + it("a file that breaks a rule as read is saved renamed, its variable's violation matched under the old name", () => { + // char-latin1-uint8.mat holds a char stored as miUINT8, which MATLAB fails to load + // (`char-type`). Renamed, the record is its own bytes but for the name, so the violation is + // the one the file had: matched as the variable's under the name the file gave it (the map + // violationsAdded takes runs from the new name to the old), the save is not refused. + const FILE = join(MAT_CHECK, 'char-latin1-uint8.mat'); + const input = arrayBufferOf(new Uint8Array(readFileSync(FILE))); + const before = checkMatFile(new Uint8Array(input)); + expect(before.map((v) => v.code)).toEqual(['char-type']); + const { root, edit } = opened(input, 'char-latin1-uint8.mat'); + const [node] = root.children; + const was = node.name; + expect(edit(node, 'Name', 'renamedChar')).toBe(true); + const after = checkMatFile(serializeMatFile(root)); + expect(after.map((v) => [v.code, v.variable])).toEqual([['char-type', 'renamedChar']]); + expect(violationsAdded(before, after, new Map([['renamedChar', was]]))).toEqual([]); + expect(violationsAdded(before, after).map((v) => v.code)).toEqual(['char-type']); + }); + it('refuses a save whose bytes break a rule the file read did not, though they read back as written', () => { const { by, edit, save } = opened(fixture(CASES), 'cases.mat'); expect(edit(by('charStr'), 'Value', "'中文'")).toBe(true); From 7a224b13fece3f13a50e043f5570514371768e5b Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Tue, 20 Oct 2026 18:06:37 -0400 Subject: [PATCH 06/13] [wip] Ask MATLAB to load every MAT-file the save writes, edited as the session edited it Core's reader is more lenient than MATLAB's, and the strict checker is a model of MATLAB's load rules, so neither can prove a saved .mat loads as what the session showed. This adds the live gate that can: probe_mat_writeback.mjs opens MATLAB's own .mat files through the session, makes each case's edit there (values, elements, struct and cell members, reshapes, class changes, renames and deletes of plain variables, objects, strings and function handles, added variables and fields, several at once, -v6 files), saves with serializeSource, and records the same edit as MATLAB statements; probe_mat_writeback.m loads the original, makes the edit in MATLAB, loads the save, and compares to the leaf (variable order, class, size, sparsity, complexity, values, field order, object properties, function handles, handle sharing), with no warning allowed and MATLAB's own re-save loading the same. Twelve negative controls plant a difference in MATLAB's half and pass only when it is reported. matWriteback.live.test.ts runs both halves as a Tier 2 test, skipped without DEX_MATLAB_CMD. Measured against MATLAB R2027a: 93 of 96 cases pass, every control included. The three that fail are two defects of the fresh encode, held without MATLAB in matWritebackDefects.test.ts: a complex empty whose node is marked edited is written real, and an empty struct array is written with no field name, which an edit of a field or a cell member beside it is enough to cause. --- test/parity/matlab/README.md | 56 +- test/parity/matlab/matWriteback.live.test.ts | 71 ++ .../parity/matlab/matWritebackDefects.test.ts | 122 +++ test/parity/matlab/probe_mat_writeback.m | 497 ++++++++++ test/parity/matlab/probe_mat_writeback.mjs | 908 ++++++++++++++++++ 5 files changed, 1653 insertions(+), 1 deletion(-) create mode 100644 test/parity/matlab/matWriteback.live.test.ts create mode 100644 test/parity/matlab/matWritebackDefects.test.ts create mode 100644 test/parity/matlab/probe_mat_writeback.m create mode 100644 test/parity/matlab/probe_mat_writeback.mjs diff --git a/test/parity/matlab/README.md b/test/parity/matlab/README.md index eb8e0c69..7ad10d6a 100644 --- a/test/parity/matlab/README.md +++ b/test/parity/matlab/README.md @@ -127,6 +127,7 @@ directory, because `Simulink.data.dictionary.open` rejects a relative one with | `probe_non_data_params.m` | which FREE-TEXT block parameters never name data, however much their values look like variables? | `tempdir` (one child model, deleted) | — | | `probe_writeback.mjs` + `.m` | **the acceptance gate for the TEXT dictionary**: does MATLAB read back the JSON `_value` our writer emits? | `$PROBE_OUT` | — | | `probe_writeback_bin.mjs` + `.m` | **the acceptance gate for the BINARY dictionary**: does MATLAB read back the XML chunk our writer emits? (defects 27-30) | `$PROBE_OUT` | — | +| `probe_mat_writeback.mjs` + `.m` | **the acceptance gate for the `.mat` save**: does MATLAB `load` what `session.serializeSource` writes for a MAT-file, as the edit the session made, with no warning? See [The MAT-file gate](#the-mat-file-gate) | `$PROBE_OUT` | — | | `probe_parameter_value.m` | which values does a `Simulink.Parameter` refuse as its `Value`, at the top level and as a field of a struct Value, and with which message? And which structural edits inside it (removing or adding a field or an array element) leave a Value it refuses? (C-160, C-042, A2: core mirrors the answers at edit time) | `$PARAM_VALUE_OUT` or `tempdir/paramvalue` | `parameter_value_truth.json` (written by `27.1.0.3400455 (R2027a) Prerelease`) | | `probe_parameter_shape.m` + `parameter_shape.mjs` | what are a `Simulink.Parameter`'s Dimensions and Complexity after each edit of its Value that core makes (an element removed or added, an element set, a Value typed in) on `../../fixtures/mcos/complex_binary.sldd`'s pRow, pCol, pInt16Row, pScalar and pStruct, and what does MATLAB read of core's saves of the same edits? They are the Value's size and complexity, except that a symbolic Dimensions is kept, an empty Value keeps both, and a struct Value keeps its Complexity; MATLAB refuses a numeric Dimensions or a Complexity set by hand. MAKE (`PARAM_SHAPE_MAKE=1`) saves a copy of the fixture with pRow's Dimensions `'[1,N]'` and records how its chunk spells that (`symbolicDimensionsTag`), which `parameter_shape.mjs` puts into its own copy of the fixture (MATLAB's save is not kept: it respells every entry and names the user who saved it); READ opens the `core_*.sldd` in `$PARAM_SHAPE_OUT`. Core's edit for each row is `parameter_shape.steps.json`. Graded by `../../parameterShape.test.ts` (B-25). Ends `PARAMETER_SHAPE OK` | `$PARAM_SHAPE_OUT` or `tempdir/paramshape` | `parameter_shape.truth.json` (here), written by `27.1.0.3409468 (R2027a) Prerelease` | | `probe_save_readbacks.m` + `save_readbacks.mjs` | does MATLAB reopen what core SAVES as what it was: a config set regenerated and pasted into text (M1, D15), enumeration values and empty ones (M2), an emptied and a new bus and the two spellings older saves gave one (M3)? The `.mjs` makes the saves through core's API; graded by `../readbacks.truth.test.ts`. M1 needs two corpus files (`DEX_READBACKS_CORPUS`). Ends `SAVE_READBACKS OK` | `$SAVE_READBACKS_OUT` | `save_readbacks.truth.json` (here), written by `27.1.0.3409468 (R2027a) Prerelease` | @@ -266,6 +267,58 @@ Both gates need every node in the subtree marked modified, not just the root: `_markModified` walks UP the chain and an unmodified node replays its `_rawInput`, so marking a container leaves the writer untested on every field and element beneath it. +### The MAT-file gate + +`probe_mat_writeback.mjs` opens MATLAB's own `.mat` files through the session API, as a host +does, makes each case's edits there (`editProperty`, `deleteNodeById`, `addChildTo`, an added +variable, `undo`), saves with `session.serializeSource`, and writes into the manifest beside +each saved file **the same edit as MATLAB statements** on a struct `S` loaded from the original +(`S.kp = 7;`, `S.mat2x3(1,2) = 99;`, `S = renameStructField(S, 'kp', 'kpRenamed');`, +`S = rmfield(S, 'infP');`, `S.var = 0;`). After each edit it checks that the node shows what +the statements make of it, so the two halves describe one edit. `probe_mat_writeback.m` then +loads the original, makes the edit in MATLAB, loads the save, and compares: + +- the same variables in the same order (load's, and `whos -file`'s class and size of each); +- each variable to the leaf: class, size, sparsity, complexity, `isequaln` on every value, + field names in order, every element of a cell or a struct array, every readable property + of an object, a function handle's text and an anonymous one's workspace, and handle + sharing (one object held twice is still one object); +- no warning and nothing printed by `load`, except a warning the original gives itself, word + for word (`dispcat_opaque.mat` holds an anonymous handle made in a file that no longer + exists); +- a save with no edit is the original, byte for byte, and one of a `-v6` file holds no + compressed record (both also asserted by the JS half, with the strict checker); +- MATLAB's own re-save of what it loaded loads the same, with no warning. + +```bash +npm run build +env PROBE_OUT=/tmp/matwb node test/parity/matlab/probe_mat_writeback.mjs +env PROBE_OUT=/tmp/matwb mw -using Bmain matlab -nodesktop \ + -batch "run('$PWD/test/parity/matlab/probe_mat_writeback.m')" +``` + +Its last line is `PROBE_MAT_WRITEBACK DONE pass=N fail=M`, with one +`RESULT PASS|FAIL ` per case before it. `fail=0` is the only acceptable result. +The fixtures are `cases.mat`, `dispcat.mat`, `dispcat_opaque.mat` (function handles, +enumerations, `fi`, `categorical`, `table`), `nested_objects.mat`, `strings.mat`, +`strings_mixed.mat`, `sparse_values.mat`, `sparse_cases.mat`, `complex_inf.mat` (no subsystem), +`dag4.mat` (a handle DAG), the two `-v6` files `nested_handles.mat` and `hexobj_values.mat`, and +one file the JS half assembles from `dispcat.mat`'s own elements, an empty complex array and an +empty struct array with a field held in a struct and a cell beside a value to edit. The MATLAB +half puts the classes those need on the path (`../../fixtures/display`, `../../fixtures/sparse`, +`../../fixtures/mcos/shared`, and `DispColor` by `Simulink.defineIntEnumType`). + +Twelve cases are **negative controls**: MATLAB's half makes one change more than the save does +(a value, a class, complexity, a Parameter's `Value` and its `CoderInfo.StorageClass`, a +string, the variables' order, a struct's field order, handle sharing, an anonymous handle's +text, an enumeration member, a `categorical`), and each passes only when the comparison +reports that difference. They are what makes a PASS mean the comparison looked. + +`matWriteback.live.test.ts` runs both halves (Tier 2, below). `matWritebackDefects.test.ts` +holds, without MATLAB, the two defects the first run found: a complex empty written fresh loads +real, and an empty struct array written fresh loads with no field, which an edit of a field or +a cell member beside it is enough to cause. + ## The catalog 77 names, in `gen_truth.m`'s `C` (73) and `OBJARR` (4), landing in `truth.json` @@ -858,7 +911,8 @@ catches a value written back in its truncated display form. **Tier 2 — live MATLAB, dev-only, never in CI.** `writeback.live.test.ts` (edit -> serialize -> MATLAB reopens -> assert value, `size()` and `class()`, for both -`.sldd` formats), `drift.mjs`, and the older per-node assertions in +`.sldd` formats), `matWriteback.live.test.ts` (the same for a `.mat`, through +[the MAT-file gate](#the-mat-file-gate)), `drift.mjs`, and the older per-node assertions in `test/parity/fidelity/*` and `test/fidelitySmoke.test.ts`. A fixture cannot stand in for any of them: proving MATLAB reads what *we* wrote requires MATLAB. diff --git a/test/parity/matlab/matWriteback.live.test.ts b/test/parity/matlab/matWriteback.live.test.ts new file mode 100644 index 00000000..3c6816cd --- /dev/null +++ b/test/parity/matlab/matWriteback.live.test.ts @@ -0,0 +1,71 @@ +// Copyright 2026 The MathWorks, Inc. +// +// The MAT-file save, loaded by MATLAB: probe_mat_writeback.mjs opens MATLAB's own `.mat` files +// through the session, edits them as a host does (values, elements, fields, cell members, +// reshapes, class changes, renames and deletes of plain variables, objects, strings and +// function handles, added variables and fields, several at once, `-v6` files), saves each with +// session.serializeSource, and writes the same edit as MATLAB statements beside it; +// probe_mat_writeback.m loads each original, makes the edit in MATLAB, loads the save, and +// compares the two to the leaf, with no warning allowed and MATLAB's own re-save of the save +// loading the same. Twelve of the cases are negative controls, which pass only when the +// comparison reports a difference planted in MATLAB's half. See the two scripts. +// +// Tier 2: skipped wholesale when DEX_MATLAB_CMD is unset, as writeback.live.test.ts is, so CI +// and external contributors stay green. Set it to the launcher plus its fixed args, and +// DEX_MATLAB_CWD to where the launcher must run from: +// env DEX_MATLAB_CMD="mw -using Bmain matlab" npx vitest run test/parity/matlab/matWriteback.live.test.ts +// +// The JS half reads the BUILT package (dist/), so build first: a stale dist/ is a stale verdict. +import { describe, it, expect, beforeAll } from 'vitest'; +import { execFileSync } from 'node:child_process'; +import { existsSync, mkdtempSync, readFileSync } from 'node:fs'; +import { tmpdir } from 'node:os'; +import { join } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { matlabAvailable } from '../fidelity/roundTripHarness.js'; + +const HERE = fileURLToPath(new URL('.', import.meta.url)); + +// One launch for every case. A cold launch has taken up to 10 minutes on a network sandbox +// (writeback.live.test.ts measured 276s on one), and the cases take about a minute more. +const MATLAB_TIMEOUT = 900_000; + +describe('live MAT-file write-back', () => { + if (!matlabAvailable()) { + it.skip('DEX_MATLAB_CMD unset — live gate skipped', () => {}); + return; + } + + let manifest: Array<{ id: string; js: string; refused: string }> = []; + let out = ''; + beforeAll(() => { + // A directory of its own under /tmp: the MATLAB half cds there before it writes anything. + const dir = mkdtempSync(join(existsSync('/tmp') ? '/tmp' : tmpdir(), 'dex-matwb-')); + execFileSync(process.execPath, [join(HERE, 'probe_mat_writeback.mjs')], { + env: { ...process.env, PROBE_OUT: dir }, + encoding: 'utf8', + }); + manifest = JSON.parse(readFileSync(join(dir, 'manifest.json'), 'utf8')); + const [bin, ...args] = (process.env.DEX_MATLAB_CMD as string).split(' '); + out = execFileSync(bin, [...args, '-nodesktop', '-batch', `PROBE_OUT='${dir}'; run('${join(HERE, 'probe_mat_writeback.m')}')`], { + cwd: process.env.DEX_MATLAB_CWD || undefined, + env: { ...process.env, PROBE_OUT: dir }, + encoding: 'utf8', + maxBuffer: 64 * 1024 * 1024, + timeout: MATLAB_TIMEOUT, + }); + }, MATLAB_TIMEOUT); + + it('core saves every case, and each save passes the JS half', () => { + expect(manifest.length).toBeGreaterThanOrEqual(90); + expect(manifest.filter((r) => r.js || r.refused).map((r) => [r.id, r.js || r.refused])).toEqual([]); + }); + + it('MATLAB loads every save as the session edited it, with no warning', () => { + const results = [...out.matchAll(/^RESULT (\S+) (PASS|FAIL)(.*)$/gm)]; + // One verdict per case, in order: a case the MATLAB half never reached is not a pass. + expect(results.map((m) => m[1])).toEqual(manifest.map((r) => r.id)); + expect(results.filter((m) => m[2] === 'FAIL').map((m) => m[1] + m[3])).toEqual([]); + expect(out).toContain(`PROBE_MAT_WRITEBACK DONE pass=${manifest.length} fail=0`); + }); +}); diff --git a/test/parity/matlab/matWritebackDefects.test.ts b/test/parity/matlab/matWritebackDefects.test.ts new file mode 100644 index 00000000..a55f27d8 --- /dev/null +++ b/test/parity/matlab/matWritebackDefects.test.ts @@ -0,0 +1,122 @@ +// Copyright 2026 The MathWorks, Inc. +// +// Two defects of the MAT-file save that the live gate (probe_mat_writeback.{mjs,m}) found, held +// here without MATLAB so that they stay in sight on every run until they are fixed. Neither is +// visible to core: its reader carries neither thing either, so the save's own re-parse +// (MatFileWriter's self-check) agrees with what it wrote, and the strict checker breaks no load +// rule. Only MATLAB, loading the save beside the original, reads a different value. +// +// Each test states the defect AS IT IS: the bytes the save writes today, beside the bytes +// MATLAB's own element holds. A fix makes it fail; it should then assert the bytes MATLAB +// wrote, and the gate's three failing cases (fresh_dispcat, sibling_struct_field, +// sibling_cell_member) pass. +// +// Measured against MATLAB R2027a (27.1.0.3409468): +// A. complex(zeros(0,0)) and the other complex empties of dispcat.mat, written fresh, load +// real: isreal is true where the original's is false. +// B. a 0x0 or 1x0 struct array with a field `a`, written fresh, loads with no field: +// fieldnames is {} where the original's is {'a'}. A struct field or a cell member edited +// beside one writes it fresh, so an ordinary edit loses the names. +import { describe, it, expect } from 'vitest'; +import { readFileSync } from 'node:fs'; +import { unzlibSync } from 'fflate'; +import { parseMat } from '../../../src/datamodel/parser/MatParser.js'; +import { createSession } from '../../../src/index.js'; +import { CLASS, matFile, numericVar, structVar } from '../../tools/matBytes.js'; + +const arrayBufferOf = (bytes: Uint8Array) => bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength) as ArrayBuffer; +const DISPCAT = arrayBufferOf(new Uint8Array(readFileSync(new URL('../../fixtures/display/dispcat.mat', import.meta.url)))); + +/** The miMATRIX element (tag and body) of the top-level variable `name`, inflated. */ +function elementOf(file: Uint8Array | ArrayBuffer, name: string): Uint8Array { + const rec = parseMat(file instanceof Uint8Array ? arrayBufferOf(file) : file).records.find((r) => r.name === name)!; + const view = new DataView(rec.bytes.buffer, rec.bytes.byteOffset, rec.bytes.byteLength); + return view.getUint32(0, true) === 15 ? unzlibSync(rec.bytes.subarray(8, 8 + view.getUint32(4, true))) : rec.bytes; +} + +/** The sub-elements of an miMATRIX element, in order: each one's type and data. */ +function subElementsOf(el: Uint8Array): { type: number; data: Uint8Array }[] { + const view = new DataView(el.buffer, el.byteOffset, el.byteLength); + const out: { type: number; data: Uint8Array }[] = []; + const end = 8 + view.getUint32(4, true); + for (let at = 8; at < end; ) { + const word = view.getUint32(at, true); + if (word >>> 16) { + out.push({ type: word & 0xffff, data: el.subarray(at + 4, at + 4 + (word >>> 16)) }); + at += 8; + } else { + const n = view.getUint32(at + 4, true); + out.push({ type: word, data: el.subarray(at + 8, at + 8 + n) }); + at += 8 + Math.ceil(n / 8) * 8; + } + } + return out; +} + +/** A struct element's field names, read from its own field-name table. */ +function fieldNamesOf(el: Uint8Array): string[] { + const [, , , length, names] = subElementsOf(el); + const len = new DataView(length.data.buffer, length.data.byteOffset, 4).getInt32(0, true); + const out: string[] = []; + for (let at = 0; at < names.data.byteLength; at += len) { + out.push(new TextDecoder().decode(names.data.subarray(at, at + len)).replace(/\0+$/, '')); + } + return out; +} + +/** The element of a struct's `index`th field (of its first element), with its own tag. */ +function fieldElement(structElement: Uint8Array, index: number): Uint8Array { + const { type, data } = subElementsOf(structElement)[5 + index]; + expect(type).toBe(14); + const out = new Uint8Array(8 + data.byteLength); + out.set(new Uint8Array(new Uint32Array([14, data.byteLength]).buffer)); + out.set(data, 8); + return out; +} + +/** An element's complex bit: byte 1 of its array-flags data. */ +const complexOf = (el: Uint8Array) => (subElementsOf(el)[0].data[1] & 0x08) !== 0; + +describe('KNOWN DEFECTS of the MAT-file save, found by the live gate', () => { + it('A: a complex empty, its node marked edited, is written real', () => { + const session = createSession(); + const root: any = session.addMatSource('dispcat.mat', DISPCAT); + const node = root.children.find((c: any) => c.name === 'dx_complex_0x0'); + expect(complexOf(elementOf(DISPCAT, 'dx_complex_0x0'))).toBe(true); + // The state an edit leaves the node in (DataNode._valueEdited, MatlabVariableNode's stale + // _var), which MatFileWriter writes fresh. The node rebuilds its variable from its + // elements, and an empty has none to be complex: _isComplexValue() is false, so the + // variable's isComplex is, though _elementType still says 'complex' (the Class column + // reads that, and says complex). + node._markModified(); + expect(node._var.isComplex).toBe(false); + const saved = (session.serializeSource('dispcat.mat') as { bytes: Uint8Array }).bytes; + expect(complexOf(elementOf(saved, 'dx_complex_0x0'))).toBe(false); + }); + + it('B: an empty struct array with a field, written fresh beside an edited field, keeps no field name', () => { + // MATLAB's own element first, so that the reader below is seen to read names at all. + expect(fieldNamesOf(elementOf(DISPCAT, 'dx_struct_0x0_fields'))).toEqual(['a']); + + const empty = structVar('', ['inner'], [], [0, 0]); + const x = numericVar({ name: '', cls: CLASS.DOUBLE, dimensions: [1, 1], real: [1] }); + const file = matFile([structVar('s', ['es', 'x'], [{ es: empty, x }])]); + const session = createSession(); + const root: any = session.addMatSource('f.mat', file); + const field = root.children[0].children.find((c: any) => c.name === 'x'); + session.setActive(root, field); + expect(session.editProperty(field.id, 'Value', '2')).toBe(true); + const saved = (session.serializeSource('f.mat') as { bytes: Uint8Array }).bytes; + + // es as the file holds it, and as the save writes it: a 0x0 struct both times, whose + // field-name table the save leaves empty. The reader holds `fields: {}` for an empty struct + // array, its names dropped, and the writer writes what the reader holds. + const esOf = (file_: Uint8Array | ArrayBuffer) => { + const s = elementOf(file_, 's'); + expect(fieldNamesOf(s)).toEqual(['es', 'x']); + return fieldElement(s, 0); + }; + expect([fieldNamesOf(esOf(file)), subElementsOf(esOf(file))[1].data]).toEqual([['inner'], new Uint8Array(8)]); + expect([fieldNamesOf(esOf(saved)), subElementsOf(esOf(saved))[1].data]).toEqual([[], new Uint8Array(8)]); + }); +}); diff --git a/test/parity/matlab/probe_mat_writeback.m b/test/parity/matlab/probe_mat_writeback.m new file mode 100644 index 00000000..536918fb --- /dev/null +++ b/test/parity/matlab/probe_mat_writeback.m @@ -0,0 +1,497 @@ +% Copyright 2026 The MathWorks, Inc. +% +% The MATLAB half of the MAT-file save gate: load every file probe_mat_writeback.mjs saved +% through the session, and compare it, to the leaf, with the original loaded and edited by +% MATLAB itself. +% +% Run the JS half first, with the SAME absolute PROBE_OUT (and `npm run build` before it: +% the JS half reads dist/, so a stale build is a stale verdict): +% env PROBE_OUT=/tmp/matwb node test/parity/matlab/probe_mat_writeback.mjs +% env PROBE_OUT=/tmp/matwb mw -using Bmain matlab -nodesktop \ +% -batch "run('$PWD/test/parity/matlab/probe_mat_writeback.m')" +% PROBE_OUT may instead be set as a variable before the run: "PROBE_OUT='/tmp/matwb'; run(...)". +% +% For each case of the manifest: +% 1. S0 = load(original), which must load with no warning and print nothing: a class the +% fixtures need and this MATLAB lacks would otherwise read as our failure; +% 2. S = load(original) with the case's MATLAB statements applied, which must differ from +% S0 for a case that edits and equal it for one that does not; +% 3. T = load(saved), which must load with no warning and print nothing; +% 4. T must be S: the same variables in the same order (load's, and whos -file's class and +% size of each), and each variable the same to the leaf (dcmp below: class, size, +% sparsity, complexity, isequaln on every value, field names in order, every element of +% a cell or struct array, every readable property of an object, a function handle's text +% and an anonymous one's workspace), and its handles shared as S's are (the same object +% held twice is still one object); +% 5. a save with no edit is the original, byte for byte; +% 6. T saved again by MATLAB loads as T, with no warning. +% A case whose `expect` is 'control' is a NEGATIVE control: its statements make one change +% more than the save does, and it passes only when step 4 reports it (`differs`). +% +% Prints `RESULT PASS` or `RESULT FAIL ` per case, and last +% `PROBE_MAT_WRITEBACK DONE pass=N fail=M`. fail=0 is the only acceptable result: a FAIL here +% means MATLAB loads something other than what the session showed, or loads it with a warning. +if exist('PROBE_OUT', 'var') && ~isempty(PROBE_OUT) %#ok + outdir = PROBE_OUT; +else + outdir = getenv('PROBE_OUT'); +end +if isempty(outdir) || outdir(1) ~= '/' + error('PROBE_OUT is not set to an ABSOLUTE path. It must be the one the .mjs half wrote to.'); +end +here = fileparts(mfilename('fullpath')); +fixtures = fullfile(here, '..', '..', 'fixtures'); +% Everything this script writes (MATLAB's re-saves) goes to outdir, a temp directory, never +% to the folder MATLAB was launched from. +cd(outdir); +warning('off', 'backtrace'); + +% The classes the fixtures hold that MATLAB does not ship: the display enumerations, the +% dexsparse classes of hexobj_values.mat, and the DagNode of dag4.mat. +addpath(fullfile(fixtures, 'display')); +addpath(fullfile(fixtures, 'sparse')); +addpath(fullfile(fixtures, 'mcos', 'shared')); +try + % As probe_display.m defines it for dispcat_opaque.mat. + Simulink.defineIntEnumType('DispColor', {'Red', 'Green', 'Blue'}, [1 2 3]); +catch err + fprintf('ENV DispColor: %s\n', err.message); +end + +fprintf('VERSION %s\n', version); +m = jsondecode(fileread(fullfile(outdir, 'manifest.json'))); +if iscell(m) + m = [m{:}]; +end +npass = 0; +nfail = 0; +for k = 1:numel(m) + e = m(k); + fprintf('CASE %s: %s\n', e.id, e.why); + try + why = runCase(e, outdir); + catch err + why = {sprintf('the probe itself threw: %s (%s)', err.message, err.identifier)}; + end + if isempty(why) + fprintf('RESULT %s PASS\n', e.id); + npass = npass + 1; + else + if numel(why) > 12 + why = [why(1:12), {sprintf('... and %d more', numel(why) - 12)}]; + end + fprintf('RESULT %s FAIL %s\n', e.id, strjoin(why, ' | ')); + nfail = nfail + 1; + end +end +fprintf('PROBE_MAT_WRITEBACK DONE pass=%d fail=%d\n', npass, nfail); + +% ---- one case ------------------------------------------------------------------------ +function why = runCase(e, outdir) +why = {}; +if ~isempty(e.js) + why{end + 1} = ['the JS half: ' e.js]; +end +if ~isempty(e.refused) + why{end + 1} = ['core refused the save: ' e.refused]; +end +if isempty(e.saved) + return +end + +[S0, w0, err0] = loadQuietly(e.original); +if ~isempty(err0) + why{end + 1} = ['the ORIGINAL does not load here, so nothing can be judged: ' err0]; + return +end +if ~isempty(w0) + % A warning the original gives itself is the fixture's, not the save's: dispcat_opaque.mat + % holds an anonymous handle made in a file that no longer exists, and every load of it + % says so. A save of it may give that warning again, word for word, and nothing else. + fprintf(' INFO the original warns: %s\n', w0); +end + +S = load(e.original); +stmts = e.statements; +if ischar(stmts) + stmts = {stmts}; +elseif isempty(stmts) + stmts = {}; +end +for i = 1:numel(stmts) + eval(stmts{i}); +end +edited = cmpVars(S0, S); +edits = any(strcmp(e.expect, {'changed', 'control'})); +if edits && isempty(edited) + why{end + 1} = 'the MATLAB statements change nothing, so a PASS would be vacuous'; +elseif ~edits && ~isempty(edited) + why{end + 1} = ['the MATLAB statements change what this case says is unchanged: ' strjoin(edited, '; ')]; +end + +[T, wT, errT] = loadQuietly(e.saved); +if ~isempty(errT) + why{end + 1} = ['load fails: ' errT]; + return +end +if ~isempty(wT) && ~strcmp(wT, w0) + why{end + 1} = ['load warns: ' wT]; +end + +diffs = cmpVars(S, T); +if strcmp(e.expect, 'control') + % A negative control: S holds one change the save does not, and the comparison must say + % so, in so many words. + if ~contains(strjoin(diffs, ' | '), e.differs) + why{end + 1} = sprintf('the control''s planted difference "%s" was not reported; got: %s', e.differs, strjoin(diffs, ' | ')); + else + fprintf(' CONTROL saw %s\n', strjoin(diffs, ' | ')); + end +else + why = [why, diffs]; +end + +% whos -file, which reads the file's own record of each variable without loading it. +w = whos('-file', e.saved); +wn = {w.name}; +tn = fieldnames(T); +if ~isequal(sort(wn(:)), sort(tn(:))) + why{end + 1} = sprintf('whos -file lists [%s], load gives [%s]', strjoin(wn, ','), strjoin(tn', ',')); +else + for i = 1:numel(w) + v = T.(w(i).name); + if ~strcmp(w(i).class, class(v)) || ~isequal(w(i).size, size(v)) + why{end + 1} = sprintf('whos -file says %s is %s %s, load gives %s %s', w(i).name, ... + w(i).class, mat2str(w(i).size), class(v), mat2str(size(v))); %#ok + end + end +end + +if strcmp(e.expect, 'identical') && ~isequal(bytesOf(e.original), bytesOf(e.saved)) + why{end + 1} = 'a save with no edit is not the original, byte for byte'; +end + +% MATLAB's own save of what it loaded, loaded again. +if ~isempty(fieldnames(T)) + resaved = fullfile(outdir, ['resave_' e.id '.mat']); + lastwarn(''); + txt = evalc('save(resaved, ''-struct'', ''T'');'); + [ws, wsid] = lastwarn; + if ~isempty(ws) || ~isempty(strtrim(txt)) + why{end + 1} = sprintf('MATLAB''s re-save warns: %s (%s) %s', ws, wsid, strtrim(txt)); + end + [T2, w2, err2] = loadQuietly(resaved); + if ~isempty(err2) || (~isempty(w2) && ~strcmp(w2, w0)) + why{end + 1} = ['MATLAB''s re-save does not load cleanly: ' err2 w2]; + else + again = cmpVars(T, T2); + if ~isempty(again) + why{end + 1} = ['MATLAB''s re-save loads differently: ' strjoin(again, '; ')]; + end + end +end +end + +% load, with what it warns or prints, and its error, instead of letting either escape. +function [V, w, err] = loadQuietly(path) +V = struct(); +w = ''; +err = ''; +lastwarn(''); +try + txt = evalc('V = load(path);'); +catch ex + err = sprintf('%s (%s)', ex.message, ex.identifier); + return +end +[msg, id] = lastwarn; +if ~isempty(msg) + w = sprintf('%s (%s)', msg, id); +end +txt = strtrim(txt); +if ~isempty(txt) + w = strtrim([w ' printed: ' txt]); +end +end + +function b = bytesOf(path) +fid = fopen(path, 'r'); +b = fread(fid, Inf, '*uint8'); +fclose(fid); +end + +% ---- the comparison -------------------------------------------------------------------- +% Two loaded files: the same variables, in the same order, each the same to the leaf, and +% their handles shared alike. +function d = cmpVars(A, B) +d = {}; +na = fieldnames(A); +nb = fieldnames(B); +if ~isequal(na, nb) + d{end + 1} = sprintf('variables [%s] vs [%s]', strjoin(na', ','), strjoin(nb', ',')); +end +common = intersect(na, nb, 'stable'); +for i = 1:numel(common) + d = [d, dcmp(A.(common{i}), B.(common{i}), common{i}, 0)]; %#ok +end +[ha, pa] = handlesOf(A); +[hb, pb] = handlesOf(B); +if ~isequal(pa, pb) + d{end + 1} = sprintf('handle sharing differs: %d handles reached vs %d', numel(pa), numel(pb)); +elseif ~isequal(aliasesOf(ha), aliasesOf(hb)) + sa = aliasesOf(ha); + sb = aliasesOf(hb); + k = find(sa ~= sb, 1); + d{end + 1} = sprintf('handle sharing differs at %s: one object with #%d vs #%d', pa{k}, sa(k), sb(k)); +end +end + +function d = dcmp(a, b, path, depth) +d = {}; +if depth > 24 + return +end +if ~strcmp(class(a), class(b)) + d{end + 1} = sprintf('%s: class %s vs %s', path, class(a), class(b)); + return +end +if ~isequal(size(a), size(b)) + d{end + 1} = sprintf('%s: size %s vs %s', path, mat2str(size(a)), mat2str(size(b))); + return +end +if (isnumeric(a) || islogical(a)) && ~isobject(a) + if issparse(a) ~= issparse(b) + d{end + 1} = sprintf('%s: sparse %d vs %d', path, issparse(a), issparse(b)); + return + end + if isreal(a) ~= isreal(b) + d{end + 1} = sprintf('%s: real %d vs %d', path, isreal(a), isreal(b)); + return + end +end +if isstruct(a) + fa = fieldnames(a); + fb = fieldnames(b); + if ~isequal(fa, fb) + d{end + 1} = sprintf('%s: fields [%s] vs [%s]', path, strjoin(fa', ','), strjoin(fb', ',')); + return + end + for i = 1:numel(a) + for j = 1:numel(fa) + d = [d, dcmp(a(i).(fa{j}), b(i).(fa{j}), sprintf('%s(%d).%s', path, i, fa{j}), depth + 1)]; %#ok + end + end +elseif iscell(a) + for i = 1:numel(a) + d = [d, dcmp(a{i}, b{i}, sprintf('%s{%d}', path, i), depth + 1)]; %#ok + end +elseif isa(a, 'function_handle') + if isempty(a) + return + end + if ~strcmp(func2str(a), func2str(b)) + d{end + 1} = sprintf('%s: %s vs %s', path, func2str(a), func2str(b)); + return + end + fa = functions(a); + fb = functions(b); + if isfield(fa, 'workspace') ~= isfield(fb, 'workspace') + d{end + 1} = sprintf('%s: a workspace on one side only', path); + elseif isfield(fa, 'workspace') + d = [d, dcmp(fa.workspace, fb.workspace, [path ''], depth + 1)]; + end +elseif isenum(a) + if ~isequal(a, b) + d{end + 1} = sprintf('%s: %s vs %s', path, show(a), show(b)); + end +elseif isstring(a) + if ~isequaln(a, b) + d{end + 1} = sprintf('%s: %s vs %s', path, show(a), show(b)); + end +elseif isobject(a) || isa(a, 'handle') + % By its properties, each to the leaf. Not by isequaln, which is numeric (it finds a + % property retyped single equal to its double), and false between two loads of one file + % for a handle (its identity) and for a value object holding an anonymous function handle + % (hexobj_values.mat's FhAlias), however equal the contents. + [dd, gotone] = dprops(a, b, path, depth); + d = [d, dd]; + if ~gotone + % Nothing readable (a categorical's properties are not public; a + % Simulink.VariantVariable's throw on get): a value object by isequaln after all, and + % either by its own display, as wbcompare.m does, so that it is not compared on its + % class and size alone. + if ~isa(a, 'handle') && ~isequaln(a, b) + d{end + 1} = sprintf('%s: isequaln false', path); + end + if builtin('numel', a) == 1 + ta = displayOf(a); + tb = displayOf(b); + if ~strcmp(ta, tb) + d{end + 1} = sprintf('%s: displays %s vs %s', path, trunc(ta), trunc(tb)); + end + end + end +elseif ~isequaln(a, b) + d{end + 1} = sprintf('%s: %s vs %s', path, show(a), show(b)); +end +end + +% Every readable property of every element, and whether there was one. The elements are the +% object's own, builtin('numel'): a table or a categorical is one object whatever size it +% says it is, and t(i) is an error for a table. +function [d, gotone] = dprops(a, b, path, depth) +d = {}; +p = properties(a); +gotone = false; +n = builtin('numel', a); +if builtin('numel', b) ~= n + d{end + 1} = sprintf('%s: %d objects vs %d', path, n, builtin('numel', b)); + return +end +for i = 1:n + if n == 1 + ai = a; + bi = b; + else + ai = a(i); + bi = b(i); + end + for j = 1:numel(p) + [va, ea] = getProp(ai, p{j}); + [vb, eb] = getProp(bi, p{j}); + where = sprintf('%s(%d).%s', path, i, p{j}); + if ~strcmp(ea, eb) + d{end + 1} = sprintf('%s: get throws <%s> vs <%s>', where, ea, eb); %#ok + elseif isempty(ea) + gotone = true; + d = [d, dcmp(va, vb, where, depth + 1)]; %#ok + end + end +end +end + +function [v, eid] = getProp(o, name) +v = []; +eid = ''; +try + v = o.(name); +catch ex + eid = ex.identifier; + if isempty(eid) + eid = ex.message; + end +end +end + +function s = displayOf(v) +try + s = strtrim(regexprep(char(formattedDisplayText(v, 'SuppressMarkup', true)), '\s+', ' ')); +catch + s = ''; +end +end + +% Every handle object reachable from the variables, in a fixed walk, with its path. A handle +% met again is listed again but not walked again, so a DAG costs its size, not its paths. +function [hs, ps] = handlesOf(V) +hs = {}; +ps = {}; +names = fieldnames(V); +for i = 1:numel(names) + [hs, ps] = walkHandles(V.(names{i}), names{i}, hs, ps, 0); +end +end + +function [hs, ps] = walkHandles(v, path, hs, ps, depth) +if depth > 12 || numel(hs) >= 400 + return +end +if isstruct(v) + fn = fieldnames(v); + for i = 1:numel(v) + for j = 1:numel(fn) + [hs, ps] = walkHandles(v(i).(fn{j}), sprintf('%s(%d).%s', path, i, fn{j}), hs, ps, depth + 1); + end + end +elseif iscell(v) + for i = 1:numel(v) + [hs, ps] = walkHandles(v{i}, sprintf('%s{%d}', path, i), hs, ps, depth + 1); + end +elseif isobject(v) && ~isstring(v) && ~isenum(v) + isHandle = isa(v, 'handle'); + p = properties(v); + n = builtin('numel', v); + for i = 1:n + if n == 1 + h = v; + else + h = v(i); + end + walk = true; + if isHandle + for k = 1:numel(hs) + if sameHandle(hs{k}, h) + walk = false; + break + end + end + hs{end + 1} = h; %#ok + ps{end + 1} = sprintf('%s(%d)', path, i); %#ok + end + if walk + for j = 1:numel(p) + [x, ex] = getProp(h, p{j}); + if isempty(ex) + [hs, ps] = walkHandles(x, sprintf('%s(%d).%s', path, i, p{j}), hs, ps, depth + 1); + end + end + end + end +end +end + +% For each handle, the number of the first earlier one that is the same object, or 0. +function s = aliasesOf(hs) +s = zeros(1, numel(hs)); +for k = 1:numel(hs) + for j = 1:k - 1 + if sameHandle(hs{j}, hs{k}) + s(k) = j; + break + end + end +end +end + +function tf = sameHandle(a, b) +try + tf = strcmp(class(a), class(b)) && isequal(size(a), size(b)) && all(a == b, 'all'); +catch + tf = false; +end +end + +function s = show(v) +try + if ischar(v) + s = ['''' reshape(v, 1, []) '''']; + elseif isstring(v) + s = ['"' char(strjoin(reshape(v, 1, []), '","')) '"']; + elseif isenum(v) + s = strjoin(arrayfun(@char, reshape(v, 1, []), 'UniformOutput', false), ','); + elseif isnumeric(v) || islogical(v) + s = mat2str(full(v), 17); + else + s = ['<' class(v) '>']; + end +catch + s = ['<' class(v) '>']; +end +s = trunc(s); +end + +function s = trunc(s) +if numel(s) > 200 + s = [s(1:200) sprintf(' ...(%d chars)', numel(s))]; +end +end diff --git a/test/parity/matlab/probe_mat_writeback.mjs b/test/parity/matlab/probe_mat_writeback.mjs new file mode 100644 index 00000000..7c5396da --- /dev/null +++ b/test/parity/matlab/probe_mat_writeback.mjs @@ -0,0 +1,908 @@ +// Copyright 2026 The MathWorks, Inc. +// +// THE acceptance gate for the MAT-file save: does MATLAB `load` what +// session.serializeSource writes for a `.mat`, as the edit the session made? +// +// test/matFileSave.test.ts reads every save back with core's own reader, and core's reader is +// more lenient than MATLAB's: it opens files MATLAB refuses. The strict checker +// (MatFileCheck) states the load rules MATLAB was measured to enforce, which is closer, but +// still a model of MATLAB. Only MATLAB can say that a file it is handed loads, loads without a +// warning, and loads as the values the session showed after its edit. +// +// So each case opens a fixture MATLAB wrote through the session API, as a host does, makes +// its edits there (editProperty, deleteNodeById, addChildTo, an added variable, undo), saves +// it with serializeSource, and records beside the saved file THE SAME EDIT as MATLAB +// statements on a struct `S` loaded from the original (`S.kp = 7;`, `S.rowVec(2) = 99;`, +// `S = renameStructField(S, 'negD', 'negD2');`, `S = rmfield(S, 'infP');`, `S.var = 0;`). +// probe_mat_writeback.m loads the original, makes the edit in MATLAB, loads the save, and +// compares the two to the leaf. +// +// Two halves, one manifest between them (PROBE_OUT must be the same ABSOLUTE path in each): +// +// npm run build +// env PROBE_OUT=/tmp/matwb node test/parity/matlab/probe_mat_writeback.mjs +// env PROBE_OUT=/tmp/matwb mw -using Bmain matlab -nodesktop \ +// -batch "run('$PWD/test/parity/matlab/probe_mat_writeback.m')" +// +// It reads the BUILT package, as probe_writeback.mjs does and for its reason, so a stale +// `dist/` is a stale verdict. The fixtures are found from this file's own folder, so node can +// be launched from anywhere. +// +// What this half asserts itself, before MATLAB is asked anything, and records in the +// manifest as `js` (anything but '' fails the case in the MATLAB half too): +// - every edit the case makes is accepted, and leaves the node showing what the case's +// MATLAB statements make of it (`shows`), so the two halves describe one edit; +// - the save answers `{ kind: 'binary', sourceFormat: 'mat' }`; +// - a save with no edit is the file, byte for byte, and a save with one is not; +// - a save of a file that holds no compressed record (`-v6`) holds none either; +// - the strict checker finds no violation in the save that it does not find in the file. +// +// A save core refuses is written to the manifest as `refused`, with core's message, and +// counts as a failure: every case here is an edit phase 1 claims to save. +import { readFileSync, writeFileSync, mkdirSync, copyFileSync } from 'node:fs'; +import { fileURLToPath } from 'node:url'; +import { unzlibSync } from 'fflate'; +import { createSession } from '../../../dist/index.js'; +import { parseMat } from '../../../dist/datamodel/parser/MatParser.js'; +import { checkMatFile, violationsAdded } from '../../../dist/datamodel/parser/MatFileCheck.js'; + +const REPO = fileURLToPath(new URL('../../../', import.meta.url)); +const OUT = process.env.PROBE_OUT || '/tmp/mat_writeback_probe'; +if (!OUT.startsWith('/')) { + throw new Error('PROBE_OUT must be an ABSOLUTE path, the same one the MATLAB half is given; got ' + OUT); +} +mkdirSync(OUT, { recursive: true }); + +// The fixtures, each MATLAB's own `save`. Between them: every plain class and shape the +// corpus has (cases, dispcat, sparse_values, complex_inf, sparse_cases), objects and strings +// held in the subsystem (cases, nested_objects, strings_mixed, strings), function handles, +// enumerations, fi, categorical and table (dispcat_opaque), a handle DAG of one object held +// twice at every level (dag4), and two `-v6` files, which hold no compressed record +// (nested_handles, hexobj_values). complex_inf and sparse_cases hold no subsystem. +const CASES_MAT = 'test/parity/artifacts/mat/cases.mat'; +const DISPCAT = 'test/fixtures/display/dispcat.mat'; +const OPAQUE = 'test/fixtures/display/dispcat_opaque.mat'; +const NESTED = 'test/fixtures/mcos/nested_objects.mat'; +const STR_MIXED = 'test/fixtures/strings_mixed.mat'; +const STRINGS = 'test/fixtures/strings.mat'; +const SPARSE = 'test/fixtures/sparse/sparse_values.mat'; +const SPARSE_CASES = 'test/fixtures/sparse_cases.mat'; +const COMPLEX_INF = 'test/fixtures/complex_inf/complex_inf.mat'; +const DAG = 'test/fixtures/mcos/shared/dag4.mat'; +const V6_HANDLES = 'test/fixtures/display/nested_handles.mat'; +const V6_HEXOBJ = 'test/fixtures/sparse/hexobj_values.mat'; + +const LONG_NAME = 'a' + 'b'.repeat(61) + 'c'; // 63 characters, the longest name core writes + +const basename = (rel) => rel.slice(rel.lastIndexOf('/') + 1); +const sameBytes = (a, b) => a.byteLength === b.byteLength && a.every((x, i) => x === b[i]); + +// A fixture is a path under the repo, or (CRAFTED below) one this half writes into OUT. +const crafted = new Map(); +function bytesOf(rel) { + const u8 = crafted.get(rel) ?? new Uint8Array(readFileSync(REPO + rel)); + return u8.buffer.slice(u8.byteOffset, u8.byteOffset + u8.byteLength); +} + +// ---- one fixture this half assembles: MATLAB's own elements, held one level down ------ +// +// No fixture MATLAB wrote holds an empty complex array or an empty struct array with fields +// INSIDE a struct or a cell, beside a value a user can edit, which is what makes a save +// write them fresh without touching them. dispcat.mat holds both at the top level. So this +// takes MATLAB's own elements for `dx_complex_0x0` (complex(zeros(0,0))) and +// `dx_struct_0x0_fields` (a 0x0 struct with a field `a`), drops their names, and puts them +// in a struct `s` and a cell `c`, each beside the double 1, in a `-v6`-style file of plain +// records. The MATLAB half loads it, as it does every original, before judging anything +// saved from it. +const u32 = (n) => new Uint8Array(new Uint32Array([n]).buffer); +const concat = (parts) => { + const out = new Uint8Array(parts.reduce((n, p) => n + p.byteLength, 0)); + let at = 0; + for (const p of parts) { + out.set(p, at); + at += p.byteLength; + } + return out; +}; +const pad8 = (b) => concat([b, new Uint8Array((8 - (b.byteLength % 8)) % 8)]); +const sub = (type, data) => pad8(concat([u32(type), u32(data.byteLength), data])); +const EMPTY_NAME = sub(1, new Uint8Array(0)); +const miMatrix = (body) => concat([u32(14), u32(body.byteLength), body]); + +/** The element of `rec`, inflated when compressed: its miMATRIX tag and body. */ +function elementOf(rec) { + const dv = new DataView(rec.bytes.buffer, rec.bytes.byteOffset, rec.bytes.byteLength); + return dv.getUint32(0, true) === 15 ? unzlibSync(rec.bytes.subarray(8, 8 + dv.getUint32(4, true))) : rec.bytes.subarray(0, 8 + dv.getUint32(4, true)); +} + +/** `el` with its name sub-element (the third, after the flags and the dims) made empty. */ +function nameless(el) { + const dv = new DataView(el.buffer, el.byteOffset, el.byteLength); + const skip = (at) => { + const word = dv.getUint32(at, true); + return word >>> 16 ? at + 8 : at + 8 + Math.ceil(dv.getUint32(at + 4, true) / 8) * 8; + }; + const nameAt = skip(skip(8)); + return miMatrix(concat([el.subarray(8, nameAt), EMPTY_NAME, el.subarray(skip(nameAt), 8 + dv.getUint32(4, true))])); +} + +const NAME = (n) => sub(1, new TextEncoder().encode(n)); +const FLAGS = (cls) => sub(6, concat([u32(cls), u32(0)])); +const DIMS = (d) => sub(5, concat(d.map(u32))); +const doubleScalar = (v) => miMatrix(concat([FLAGS(6), DIMS([1, 1]), EMPTY_NAME, sub(9, new Uint8Array(new Float64Array([v]).buffer))])); + +function structVar(name, fields) { + const len = 32; + const names = new Uint8Array(len * fields.length); + fields.forEach(([f], i) => names.set(new TextEncoder().encode(f), i * len)); + return miMatrix(concat([FLAGS(2), DIMS([1, 1]), NAME(name), concat([u32(5 | (4 << 16)), u32(len)]), sub(1, names), ...fields.map(([, el]) => el)])); +} +const cellVar = (name, els) => miMatrix(concat([FLAGS(1), DIMS([1, els.length]), NAME(name), ...els])); + +function nestedEmpties() { + const dispcat = parseMat(bytesOf(DISPCAT)); + const el = (n) => nameless(elementOf(dispcat.records.find((r) => r.name === n))); + const header = new Uint8Array(128).fill(0x20); + header.set(new TextEncoder().encode('MATLAB 5.0 MAT-file, assembled by probe_mat_writeback.mjs from the elements of dispcat.mat')); + header.set([0, 0, 0, 0, 0, 0, 0, 0, 0x00, 0x01, 0x49, 0x4d], 116); + return concat([ + header, + structVar('s', [ + ['ec', el('dx_complex_0x0')], + ['es', el('dx_struct_0x0_fields')], + ['x', doubleScalar(1)], + ]), + cellVar('c', [el('dx_complex_0x0'), el('dx_struct_0x0_fields'), doubleScalar(1)]), + ]); +} +const NESTED_EMPTIES = 'crafted/nested_empties.mat'; + +/** + * A fixture opened through the session, as a host opens one, and the edits a host makes on + * it. Each edit throws when the session refuses it, or when the node does not then show what + * the case says, so a case whose two halves describe different edits never reaches MATLAB. + */ +function opened(rel) { + const session = createSession(); + const name = basename(rel); + const root = session.addMatSource(name, bytesOf(rel)); + const notes = []; + + // `labels`: the variable's name, then the displayName of each child down to the node, as + // the tree shows them (`'mat2x3', 'mat2x3(1,2)'`; `'struct1x3', 'struct1x3(2)', 'a'`). + const at = (...labels) => { + let node = root.children.find((c) => c.name === labels[0]); + for (const label of labels.slice(1)) { + node = node?.children?.find((c) => c.displayName === label); + } + if (!node) { + throw new Error('no node ' + labels.join(' > ') + ' in ' + name); + } + return node; + }; + const accepted = (what, ok) => { + if (ok !== true) { + throw new Error(what + ' was refused: ' + JSON.stringify(ok)); + } + }; + const shows = (node, className, displayValue) => { + const got = [node.className, node.displayValue]; + if (got[0] !== className || (displayValue !== undefined && got[1] !== displayValue)) { + throw new Error( + node.displayName + ' shows ' + JSON.stringify(got) + ', not ' + JSON.stringify([className, displayValue]), + ); + } + }; + + return { + session, + root, + name, + notes, + at, + /** Set the Value of the node at `labels`; then it must show `className` (and `display`). */ + set(labels, value, className, display) { + const node = at(...labels); + session.setActive(root, node); + accepted('Value ' + value + ' of ' + labels.join(' > '), session.editProperty(node.id, 'Value', value)); + shows(node, className, display); + return node; + }, + rename(from, to) { + const node = at(from); + session.setActive(root, node); + accepted('rename ' + from + ' -> ' + to, session.editProperty(node.id, 'Name', to)); + if (node.name !== to) { + throw new Error('rename ' + from + ' -> ' + to + ' left the name ' + node.name); + } + }, + remove(name_) { + const node = at(name_); + session.setActive(root, node); + accepted('delete ' + name_, session.deleteNodeById(node.id)); + }, + /** A struct field added to the struct at `labels`; it must be `field`, a double 0. */ + addField(labels, field) { + const node = at(...labels); + session.setActive(root, node); + const added = session.addChildTo(node.id); + if (!added) { + throw new Error('addChildTo ' + labels.join(' > ') + ' was refused'); + } + if (added.name !== field) { + throw new Error('the field added to ' + labels.join(' > ') + ' is ' + added.name + ', not ' + field); + } + shows(added, 'double', '0'); + }, + /** + * A variable added, as a host adds one: by session.addEntry where it answers for a + * MAT-file, else by MatNode.execAddEntry, which is all session.addEntry does for a + * dictionary's section. It must be `name`, a double 0, as the design says a new variable + * is. + */ + add(name_) { + session.setActive(root, root); + let node = session.addEntry?.('', 'double', name_) ?? null; + if (node) { + notes.push('added by session.addEntry'); + } else { + node = root.execAddEntry(undefined, name_).node; + notes.push('added by MatNode.execAddEntry (session.addEntry answered null)'); + } + if (node.name !== name_) { + throw new Error('the variable added is ' + node.name + ', not ' + name_); + } + shows(node, 'double', '0'); + return node; + }, + undo() { + session.undo(); + }, + /** + * Every variable MatWriter can write as what it is, marked edited: the state an edit and + * its undo leave (DataNode._valueEdited), which writes the variable fresh, holding the + * value it was read as. This is the MATLAB half's question for the fresh encoder, value by + * value: every class, shape, empty and non-finite these fixtures hold, written by core. + */ + freshAll() { + const plain = root.children.filter((n) => n._matWritable?.() === true && !root.recordOf(n)?.variable?.isOpaque); + if (plain.length === 0) { + throw new Error('no plain variable in ' + name); + } + plain.forEach((n) => n._markModified()); + notes.push(plain.length + ' variables written fresh'); + }, + }; +} + +// The cases. Each one: an id (the saved file's name), the fixture, what it asks, the edits +// through the session (`edit`), the same edits in MATLAB (`matlab`), and what the MATLAB half +// must then find: +// identical no edit: the save is the file, byte for byte, and MATLAB loads it as itself +// unchanged written anew, but holding the same values: MATLAB loads it as the original +// changed MATLAB loads it as the original with `matlab` applied, which must differ +// control a NEGATIVE control: `matlab` is the edit plus one more change the save does not +// make, and the case passes only when the comparison names it (`differs`, a +// piece of the difference it must report). Without these a PASS could be a +// comparison that never looks where it says it does. +const CASES = []; +function add(id, file, why, edit, matlab, expect = 'changed', differs = '') { + CASES.push({ id, file, why, edit, matlab, expect, differs }); +} +const zero = (id, file, why) => add(id, file, why, () => {}, [], 'identical'); +const control = (id, file, why, edit, matlab, differs) => add(id, file, why, edit, matlab, 'control', differs); + +// ---- no edit: the file, byte for byte, for every fixture the gate uses ------------------ +for (const [id, file] of [ + ['zero_cases', CASES_MAT], + ['zero_dispcat', DISPCAT], + ['zero_opaque', OPAQUE], + ['zero_nested_objects', NESTED], + ['zero_strings_mixed', STR_MIXED], + ['zero_strings', STRINGS], + ['zero_sparse', SPARSE], + ['zero_sparse_cases', SPARSE_CASES], + ['zero_complex_inf', COMPLEX_INF], + ['zero_dag', DAG], + ['zero_v6_handles', V6_HANDLES], + ['zero_v6_hexobj', V6_HEXOBJ], +]) { + zero(id, file, 'a save with no edit is the file'); +} + +// ---- cases.mat: a value of every kind phase 1 writes fresh --------------------------- +add('scalar_value', CASES_MAT, 'a double scalar', (f) => f.set(['kp'], '7', 'double', '7'), ['S.kp = 7;']); +add('typed_scalar', CASES_MAT, 'an int16 scalar typed into keeps its class', (f) => f.set(['s_int16'], '9', 'int16', '9'), [ + 'S.s_int16 = int16(9);', +]); +add('single_scalar', CASES_MAT, 'a single keeps its class', (f) => f.set(['scalarS'], '2.5', 'single', '2.5'), [ + 'S.scalarS = single(2.5);', +]); +add( + 'uint64_exact', + CASES_MAT, + 'a uint64 past 2^53, exactly', + (f) => f.set(['maxU64'], '18446744073709551614', 'uint64', '18446744073709551614'), + ["S.maxU64 = intmax('uint64') - 1;"], +); +add( + 'int64_exact', + CASES_MAT, + 'an int64 past 2^53, exactly', + (f) => f.set(['i64Unsafe'], '9007199254740995', 'int64', '9007199254740995'), + ['S.i64Unsafe = int64(9007199254740992) + 3;'], +); +add('logical_scalar', CASES_MAT, 'a logical', (f) => f.set(['boolT'], 'false', 'logical', 'false'), ['S.boolT = false;']); +add('char_value', CASES_MAT, 'a char row', (f) => f.set(['charStr'], "'new text'", 'char', "'new text'"), [ + "S.charStr = 'new text';", +]); +add('matrix_element', CASES_MAT, 'one element of a 2x3', (f) => f.set(['mat2x3', 'mat2x3(1,2)'], '99', 'double', '99'), [ + 'S.mat2x3(1,2) = 99;', +]); +add( + 'int16_elements', + CASES_MAT, + 'elements of an int16 vector stay int16, a fraction rounded as MATLAB rounds it', + (f) => { + f.set(['i16Vec', 'i16Vec(2)'], '99', 'int16', '99'); + f.set(['i16Vec', 'i16Vec(3)'], '1.5', 'int16', '2'); + }, + ['S.i16Vec(2) = 99;', 'S.i16Vec(3) = 1.5;'], +); +add('logical_element', CASES_MAT, 'an element of a logical vector', (f) => f.set(['boolVec', 'boolVec(2)'], 'true', 'logical', 'true'), [ + 'S.boolVec(2) = true;', +]); +add('nd_element', CASES_MAT, 'an element of a 2x3x2', (f) => f.set(['nd2x3x2', 'nd2x3x2(2,1,2)'], '99', 'double', '99'), [ + 'S.nd2x3x2(2,1,2) = 99;', +]); +add('nonfinite_element', CASES_MAT, 'a non-finite typed into a vector', (f) => f.set(['nonFinVec', 'nonFinVec(1)'], '-Inf', 'double', '-Inf'), [ + 'S.nonFinVec(1) = -Inf;', +]); +add('reshape', CASES_MAT, 'a row typed as a 2x2', (f) => f.set(['rowVec'], '[1 2; 3 4]', 'double', '[1 2; 3 4]'), [ + 'S.rowVec = [1 2; 3 4];', +]); +add('column_to_row', CASES_MAT, 'a column typed as a row', (f) => f.set(['colVec'], '[7 8 9]', 'double', '[7 8 9]'), [ + 'S.colVec = [7 8 9];', +]); +add('to_empty', CASES_MAT, 'a scalar typed as []', (f) => f.set(['negD'], '[]', 'double', '[ ]'), ['S.negD = [];']); +add('struct_field', CASES_MAT, 'a field of a struct', (f) => f.set(['structScalar', 'a'], '9', 'double', '9'), [ + 'S.structScalar.a = 9;', +]); +add('nested_struct_field', CASES_MAT, 'a field of a struct in a struct', (f) => f.set(['structNest', 'a', 'b'], '20', 'double', '20'), [ + 'S.structNest.a.b = 20;', +]); +add( + 'struct_array_field', + CASES_MAT, + "a field of a 1x3 struct array's second element", + (f) => f.set(['struct1x3', 'struct1x3(2)', 'a'], '9', 'double', '9'), + ['S.struct1x3(2).a = 9;'], +); +add( + 'struct_2d_field', + CASES_MAT, + "a field of a 2x3 struct array's (1,2) element", + (f) => f.set(['struct2x3', 'struct2x3(1,2)', 'a'], '33', 'double', '33'), + ['S.struct2x3(1,2).a = 33;'], +); +add( + 'struct_nd_field', + CASES_MAT, + "a field of a 2x3x2 struct array's (1,2,1) element", + (f) => f.set(['structNd', 'structNd(1,2,1)', 'a'], '33', 'double', '33'), + ['S.structNd(1,2,1).a = 33;'], +); +add('cell_member', CASES_MAT, 'a member of a cell', (f) => f.set(['cellFlat', 'cellFlat{1}'], '9', 'double', '9'), [ + 'S.cellFlat{1} = 9;', +]); +add('cell_member_class', CASES_MAT, "a cell's char member typed as a double row", (f) => f.set(['cellFlat', 'cellFlat{2}'], '[1 2]', 'double', '[1 2]'), [ + 'S.cellFlat{2} = [1 2];', +]); +add( + 'cell_nested_member', + CASES_MAT, + 'a member of a cell in a cell in a cell', + (f) => f.set(['cellNest', 'cellNest{2}', 'cellNest{2}{2}', 'cellNest{2}{2}{1}'], '30', 'double', '30'), + ['S.cellNest{2}{2}{1} = 30;'], +); +add('cell_nd_member', CASES_MAT, 'a member of a 2x3x2 cell', (f) => f.set(['cellNd', 'cellNd{1,2,1}'], '33', 'double', '33'), [ + 'S.cellNd{1,2,1} = 33;', +]); +add('add_struct_field', CASES_MAT, 'a field added to a struct, last', (f) => f.addField(['structScalar'], 'field'), [ + 'S.structScalar.field = 0;', +]); +add('class_double_to_char', CASES_MAT, 'a double typed as text', (f) => f.set(['kp'], "'abc'", 'char', "'abc'"), ["S.kp = 'abc';"]); +add('class_char_to_double', CASES_MAT, 'text typed as numbers', (f) => f.set(['charStr'], '[1 2]', 'double', '[1 2]'), [ + 'S.charStr = [1 2];', +]); +add('class_to_cell', CASES_MAT, 'a double typed as a cell', (f) => f.set(['infN'], "{1, 'a'}", 'cell', "{1, 'a'}"), [ + "S.infN = {1, 'a'};", +]); +add('complex_scalar', CASES_MAT, 'a complex scalar', (f) => f.set(['cplxScalar'], '1-2i', 'double', '1-2i'), ['S.cplxScalar = 1-2i;']); +add( + 'complex_element', + CASES_MAT, + 'a real typed into a complex vector, which stays complex', + (f) => { + f.set(['cplxVec', 'cplxVec(1)'], '5', 'double', '5'); + if (f.at('cplxVec').displayValue !== '[5 3-4i]') { + throw new Error('cplxVec shows ' + f.at('cplxVec').displayValue); + } + }, + ['S.cplxVec(1) = 5;'], +); +add('real_to_complex', CASES_MAT, 'a real scalar typed as a complex one', (f) => f.set(['scalarD'], '2+3i', 'double', '2+3i'), [ + 'S.scalarD = 2+3i;', +]); + +// ---- cases.mat: renames, deletes and adds ------------------------------------------- +add('rename_plain', CASES_MAT, 'a plain variable renamed', (f) => f.rename('kp', 'kpRenamed'), [ + "S = renameStructField(S, 'kp', 'kpRenamed');", +]); +add('rename_long', CASES_MAT, 'a struct renamed to 63 characters', (f) => f.rename('structNest', LONG_NAME), [ + `S = renameStructField(S, 'structNest', '${LONG_NAME}');`, +]); +add( + 'rename_swap', + CASES_MAT, + 'two variables trading names through a third', + (f) => { + f.rename('kp', 'tmpName'); + f.rename('scalarD', 'kp'); + f.rename('tmpName', 'scalarD'); + }, + ["S = renameStructField(S, 'kp', 'tmpName');", "S = renameStructField(S, 'scalarD', 'kp');", "S = renameStructField(S, 'tmpName', 'scalarD');"], +); +add('rename_param', CASES_MAT, 'a Simulink.Parameter renamed', (f) => f.rename('aParam', 'renamedParam'), [ + "S = renameStructField(S, 'aParam', 'renamedParam');", +]); +add('rename_string', CASES_MAT, 'a string renamed', (f) => f.rename('strScalar', 'str2'), ["S = renameStructField(S, 'strScalar', 'str2');"]); +const CASES_OBJECTS = ['strScalar', 'strArray', 'strMat', 'aParam', 'aSignal', 'aBus', 'aLookup', 'aVariant', 'objRow', 'objCol', 'obj2x3', 'obj2x3x2']; +add( + 'rename_objects_all', + CASES_MAT, + 'every variable the subsystem holds renamed: strings, a Parameter, Signal, Bus, LookupTable, VariantVariable and Parameter arrays', + (f) => CASES_OBJECTS.forEach((n) => f.rename(n, n + 'R')), + CASES_OBJECTS.map((n) => `S = renameStructField(S, '${n}', '${n}R');`), +); +add('delete_plain', CASES_MAT, 'a plain variable deleted', (f) => f.remove('infP'), ["S = rmfield(S, 'infP');"]); +add('delete_param', CASES_MAT, 'a Simulink.Parameter deleted: its object stays in the subsystem, held by nothing', (f) => f.remove('aParam'), [ + "S = rmfield(S, 'aParam');", +]); +add( + 'delete_objects_all', + CASES_MAT, + 'every variable the subsystem holds deleted: the subsystem stays, held by nothing', + (f) => CASES_OBJECTS.forEach((n) => f.remove(n)), + [`S = rmfield(S, {${CASES_OBJECTS.map((n) => `'${n}'`).join(', ')}});`], +); +add( + 'delete_all', + CASES_MAT, + 'every variable deleted: the file holds only the subsystem', + (f) => [...f.root.children].forEach((n) => f.remove(n.name)), + ['S = struct();'], +); +add('add_variable', CASES_MAT, 'a variable added, before the subsystem', (f) => f.add('var'), ['S.var = 0;']); +add( + 'add_and_edit', + CASES_MAT, + 'a variable added, then its value typed', + (f) => { + f.add('added'); + f.set(['added'], '[1 2 3]', 'double', '[1 2 3]'); + }, + ['S.added = [1 2 3];'], +); +add( + 'several_at_once', + CASES_MAT, + 'a value, a cell member, two renames (one an object), two deletes (one an object) and an add, in one save', + (f) => { + f.set(['kp'], '[7 8]', 'double', '[7 8]'); + f.rename('scalarD', 'renamedD'); + f.set(['cellFlat', 'cellFlat{3}'], "'x'", 'char', "'x'"); + f.rename('aSignal', 'sig2'); + f.remove('negD'); + f.remove('objRow'); + f.add('added'); + }, + [ + 'S.kp = [7 8];', + "S = renameStructField(S, 'scalarD', 'renamedD');", + "S.cellFlat{3} = 'x';", + "S = renameStructField(S, 'aSignal', 'sig2');", + "S = rmfield(S, {'negD', 'objRow'});", + 'S.added = 0;', + ], +); +add( + 'edit_undone', + CASES_MAT, + 'an element edited and the edit undone: written fresh, holding the value read', + (f) => { + f.set(['mat2x3', 'mat2x3(1,1)'], '9', 'double', '9'); + f.undo(); + }, + [], + 'unchanged', +); +add( + 'rename_undone', + CASES_MAT, + 'a rename undone: the file as it was', + (f) => { + f.rename('kp', 'kp2'); + f.undo(); + }, + [], + 'identical', +); + +// ---- every plain variable written fresh, holding what it was read as ----------------- +for (const [id, file] of [ + ['fresh_cases', CASES_MAT], + ['fresh_dispcat', DISPCAT], + ['fresh_sparse', SPARSE], + ['fresh_sparse_cases', SPARSE_CASES], + ['fresh_complex_inf', COMPLEX_INF], +]) { + add(id, file, 'every plain variable written fresh by core', (f) => f.freshAll(), [], 'unchanged'); +} + +// ---- sparse --------------------------------------------------------------------------- +add('sparse_element', SPARSE, 'a non-zero of a sparse double', (f) => f.set(['spDiag', 'spDiag(3,3)'], '99', 'double', '99'), [ + 'S.spDiag(3,3) = 99;', +]); +add( + 'sparse_complex_element', + SPARSE, + 'a real typed into a complex sparse, which stays complex', + (f) => f.set(['spComplex', 'spComplex(1,1)'], '5', 'double', '5'), + ['S.spComplex(1,1) = 5;'], +); +add('sparse_in_struct', SPARSE, 'a non-zero of a sparse in a struct field', (f) => f.set(['st', 'sp', 'sp(2,1)'], '1', 'double', '1'), [ + 'S.st.sp(2,1) = 1;', +]); +add('sparse_in_cell', SPARSE, 'a non-zero of a sparse in a cell', (f) => f.set(['c', 'c{1}', 'c{1}(1,3)'], '10', 'double', '10'), [ + 'S.c{1}(1,3) = 10;', +]); +add('sparse_rename_delete_add', SPARSE, 'a sparse renamed, a sparse Parameter deleted, a variable added', (f) => { + f.rename('spTall', 'spTallR'); + f.remove('pSp'); + f.add('var'); +}, ["S = renameStructField(S, 'spTall', 'spTallR');", "S = rmfield(S, 'pSp');", 'S.var = 0;']); + +// ---- a file with no subsystem --------------------------------------------------------- +add( + 'nosubsystem_edit_add', + COMPLEX_INF, + 'a file with no subsystem: an element edited, a variable renamed, one added after the last', + (f) => { + f.set(['zInfRow', 'zInfRow(2)'], 'Inf', 'double', 'Inf'); + f.rename('zInf', 'zInfR'); + f.add('var'); + }, + ['S.zInfRow(2) = Inf;', "S = renameStructField(S, 'zInf', 'zInfR');", 'S.var = 0;'], +); + +// ---- an edit beside an empty, which the save writes fresh without its being touched --- +crafted.set(NESTED_EMPTIES, nestedEmpties()); +zero('zero_nested_empties', NESTED_EMPTIES, 'a save with no edit is the file (and MATLAB loads the assembled file)'); +add( + 'sibling_struct_field', + NESTED_EMPTIES, + 'a struct field edited beside an empty complex and an empty struct with a field, both written fresh with it', + (f) => f.set(['s', 'x'], '2', 'double', '2'), + ['S.s.x = 2;'], +); +add( + 'sibling_cell_member', + NESTED_EMPTIES, + 'a cell member edited beside an empty complex and an empty struct with a field, both written fresh with it', + (f) => f.set(['c', 'c{3}'], '9', 'double', '9'), + ['S.c{3} = 9;'], +); + +// ---- function handles, enumerations, fi, categorical, table ------------------------- +add( + 'rename_fhandles', + OPAQUE, + 'a named and an anonymous function handle renamed', + (f) => { + f.rename('fh_sin', 'sinHandle'); + f.rename('fh_anon', 'anonHandle'); + }, + ["S = renameStructField(S, 'fh_sin', 'sinHandle');", "S = renameStructField(S, 'fh_anon', 'anonHandle');"], +); +add( + 'delete_fhandles', + OPAQUE, + 'an anonymous and an empty function handle deleted', + (f) => { + f.remove('fh_anon'); + f.remove('e_func_handle_none'); + }, + ["S = rmfield(S, {'fh_anon', 'e_func_handle_none'});"], +); +add( + 'rename_opaque_objects', + OPAQUE, + 'an enumeration, a Parameter holding one, a fi, a categorical and a table renamed', + (f) => ['en_on', 'p_enum', 'fi_vec', 'cat_ab', 'tbl_2x2'].forEach((n) => f.rename(n, n + 'R')), + ['en_on', 'p_enum', 'fi_vec', 'cat_ab', 'tbl_2x2'].map((n) => `S = renameStructField(S, '${n}', '${n}R');`), +); +add( + 'delete_opaque_objects_add', + OPAQUE, + 'an enumeration vector, a categorical and a table deleted, a variable added', + (f) => { + f.remove('en_sl_vec'); + f.remove('cat_ab'); + f.remove('tbl_2x2'); + f.add('var'); + }, + ["S = rmfield(S, {'en_sl_vec', 'cat_ab', 'tbl_2x2'});", 'S.var = 0;'], +); + +// ---- objects and strings held in the subsystem --------------------------------------- +add( + 'nested_objects_rename', + NESTED, + 'Parameters, strings, a missing string and structs and cells holding objects, renamed', + (f) => ['s', 'c', 'pTop', 'strTop', 'missTop', 'busTop', 'cArr'].forEach((n) => f.rename(n, n + 'R')), + ['s', 'c', 'pTop', 'strTop', 'missTop', 'busTop', 'cArr'].map((n) => `S = renameStructField(S, '${n}', '${n}R');`), +); +add( + 'nested_objects_delete_add', + NESTED, + 'a Parameter, a Bus, a string matrix and a cell of objects deleted, a variable added', + (f) => { + ['qTop', 'busTop', 'strsTop', 'cArr'].forEach((n) => f.remove(n)); + f.add('var'); + }, + ["S = rmfield(S, {'qTop', 'busTop', 'strsTop', 'cArr'});", 'S.var = 0;'], +); +add( + 'strings_mixed_rename', + STR_MIXED, + 'a string and a Parameter beside it renamed', + (f) => { + f.rename('mixStr', 'mixStr2'); + f.rename('mixParam', 'mixParam2'); + }, + ["S = renameStructField(S, 'mixStr', 'mixStr2');", "S = renameStructField(S, 'mixParam', 'mixParam2');"], +); +add('strings_mixed_delete', STR_MIXED, 'the Parameter before a string deleted', (f) => f.remove('mixParam'), [ + "S = rmfield(S, 'mixParam');", +]); +add( + 'strings_rename_delete', + STRINGS, + 'strings of astral and non-ASCII text renamed, another deleted', + (f) => { + f.rename('sAstral', 'sAstralR'); + f.rename('sUnicode', 'sUnicodeR'); + f.remove('sScalar'); + }, + ["S = renameStructField(S, 'sAstral', 'sAstralR');", "S = renameStructField(S, 'sUnicode', 'sUnicodeR');", "S = rmfield(S, 'sScalar');"], +); +add( + 'dag_rename_add', + DAG, + 'a handle DAG, one object held twice at every level, renamed; a variable added', + (f) => { + f.rename('root', 'rootR'); + f.add('var'); + }, + ["S = renameStructField(S, 'root', 'rootR');", 'S.var = 0;'], +); + +// ---- -v6 files: no compressed record, before or after --------------------------------- +add( + 'v6_handles_edit', + V6_HANDLES, + 'a -v6 file of function handles: one renamed, one deleted, a variable added', + (f) => { + f.rename('s_fh', 's_fh2'); + f.remove('c_fh'); + f.add('var'); + }, + ["S = renameStructField(S, 's_fh', 's_fh2');", "S = rmfield(S, 'c_fh');", 'S.var = 0;'], +); +add( + 'v6_hexobj_edit', + V6_HEXOBJ, + 'a -v6 file of objects: a value and a cell member beside a 10000000x2 sparse edited, an object renamed, another deleted, a variable added', + (f) => { + f.set(['control'], '[1 2 3]', 'double', '[1 2 3]'); + f.set(['cTall', 'cTall{2}'], '3', 'double', '3'); + f.rename('anonAlias', 'anonAliasR'); + f.remove('holder'); + f.add('var'); + }, + [ + 'S.control = [1 2 3];', + 'S.cTall{2} = 3;', + "S = renameStructField(S, 'anonAlias', 'anonAliasR');", + "S = rmfield(S, 'holder');", + 'S.var = 0;', + ], +); + +// ---- negative controls: the comparison must see each of these ------------------------ +control('control_value', CASES_MAT, 'a value the save did not write', (f) => f.set(['kp'], '7', 'double', '7'), ['S.kp = 8;'], 'kp: 8 vs 7'); +control('control_class', CASES_MAT, 'the same number in another class', (f) => f.set(['s_int16'], '9', 'int16', '9'), ['S.s_int16 = 9;'], 's_int16: class double vs int16'); +control('control_complexity', CASES_MAT, 'the same number, complex', (f) => f.set(['scalarD'], '2', 'double', '2'), ['S.scalarD = complex(2, 0);'], 'scalarD: real 0 vs 1'); +control( + 'control_object_property', + CASES_MAT, + "a Parameter's Value, two levels into the comparison", + (f) => f.rename('aParam', 'renamedParam'), + ["S = renameStructField(S, 'aParam', 'renamedParam');", 'S.renamedParam.Value = 6;'], + 'renamedParam(1).Value', +); +control( + 'control_nested_property', + CASES_MAT, + "a Parameter's CoderInfo.StorageClass, three levels in", + (f) => f.rename('aParam', 'renamedParam'), + ["S = renameStructField(S, 'aParam', 'renamedParam');", "S.renamedParam.CoderInfo.StorageClass = 'ExportedGlobal';"], + 'renamedParam(1).CoderInfo(1).StorageClass', +); +control( + 'control_string', + CASES_MAT, + 'a string the save did not write', + (f) => f.rename('strScalar', 'str2'), + ["S = renameStructField(S, 'strScalar', 'str2');", 'S.str2 = "other";'], + 'str2: "other" vs "world"', +); +control( + 'control_order', + CASES_MAT, + 'the variables in another order', + (f) => f.rename('kp', 'kpR'), + ["S = renameStructField(S, 'kp', 'kpR');", 'S = orderfields(S);'], + 'variables [', +); +control( + 'control_field_order', + CASES_MAT, + "a struct's fields in another order", + (f) => f.addField(['structScalar'], 'field'), + ['S.structScalar.field = 0;', 'S.structScalar = orderfields(S.structScalar, [3 1 2]);'], + 'structScalar: fields [field,a,b] vs [a,b,field]', +); +control( + 'control_handle_sharing', + DAG, + "one object held twice made two equal objects: the values agree, the sharing does not", + (f) => f.rename('root', 'rootR'), + ["S = renameStructField(S, 'root', 'rootR');", 'k = S.rootR.Kids(1); n = DagNode; n.Tag = k.Tag; n.Kids = k.Kids; S.rootR.Kids = [k n];'], + 'handle sharing differs', +); +control( + 'control_anonymous_handle', + OPAQUE, + "an anonymous function handle's text", + (f) => f.rename('fh_anon', 'anonHandle'), + ["S = renameStructField(S, 'fh_anon', 'anonHandle');", 'S.anonHandle = @(x)x.^2+2;'], + 'anonHandle: @(x)x.^2+2 vs @(x)x.^2+1', +); +control( + 'control_enum', + OPAQUE, + 'an enumeration member', + (f) => f.rename('en_on', 'en_onR'), + ["S = renameStructField(S, 'en_on', 'en_onR');", 'S.en_onR = matlab.lang.OnOffSwitchState.off;'], + 'en_onR: off vs on', +); +control( + 'control_categorical', + OPAQUE, + 'a categorical, which has no public property, so only isequaln sees it', + (f) => f.rename('cat_ab', 'cat_abR'), + ["S = renameStructField(S, 'cat_ab', 'cat_abR');", 'S.cat_abR(1) = S.cat_abR(2);'], + 'cat_abR: isequaln false', +); + +// ---- run ------------------------------------------------------------------------------ +const originals = new Map(); +function original(rel) { + let dest = originals.get(rel); + if (!dest) { + // A copy, so nothing MATLAB does can touch a tracked fixture. + dest = OUT + '/orig_' + rel.replace(/[\\/]/g, '_'); + if (crafted.has(rel)) { + writeFileSync(dest, crafted.get(rel)); + } else { + copyFileSync(REPO + rel, dest); + } + originals.set(rel, dest); + } + return dest; +} + +const manifest = []; +let saved = 0; +let refused = 0; +let jsFailed = 0; +for (const c of CASES) { + const rec = { + id: c.id, + fixture: c.file, + original: original(c.file), + saved: '', + statements: c.matlab, + expect: c.expect, + differs: c.differs, + plain: false, + why: c.why, + refused: '', + js: '', + notes: '', + }; + manifest.push(rec); + const input = new Uint8Array(bytesOf(c.file)); + const plainBefore = parseMat(input.buffer.slice(0)).records.every((r) => !r.compressed); + rec.plain = plainBefore; + let f; + try { + // So that "stays uncompressed" below is asked of the files it is about. + if ((c.file === V6_HANDLES || c.file === V6_HEXOBJ) && !plainBefore) { + throw new Error(c.file + ' holds a compressed record: it is not the -v6 file this case needs'); + } + f = opened(c.file); + c.edit(f); + } catch (e) { + rec.js = 'the edit: ' + e.message; + jsFailed++; + continue; + } + let out; + try { + out = f.session.serializeSource(f.name); + } catch (e) { + rec.refused = e.message; + refused++; + continue; + } + const problems = []; + if (!out || out.kind !== 'binary' || out.sourceFormat !== 'mat') { + rec.js = 'serializeSource answered ' + JSON.stringify(out && { kind: out.kind, sourceFormat: out.sourceFormat }); + jsFailed++; + continue; + } + const bytes = out.bytes; + rec.saved = OUT + '/saved_' + c.id + '.mat'; + writeFileSync(rec.saved, bytes); + saved++; + if (c.expect === 'identical' && !sameBytes(bytes, input)) { + problems.push('a save with no edit is not the file, byte for byte'); + } + if (c.expect !== 'identical' && sameBytes(bytes, input)) { + problems.push('a save with an edit is the file, byte for byte'); + } + const after = parseMat(bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength)); + if (plainBefore && !after.records.every((r) => !r.compressed)) { + problems.push('a file of no compressed record saved with one: ' + after.records.filter((r) => r.compressed).map((r) => r.name).join(',')); + } + const before = checkMatFile(input); + const added = before.length === 0 ? checkMatFile(bytes) : violationsAdded(before, checkMatFile(bytes)); + if (added.length > 0) { + problems.push('the checker finds what the file did not have: ' + added.map((v) => v.code + ' ' + v.message).join('; ')); + } + rec.js = problems.join('; '); + if (problems.length > 0) { + jsFailed++; + } + rec.notes = [...f.notes, bytes.byteLength + ' bytes (' + input.byteLength + ' read)'].join('; '); +} + +writeFileSync(OUT + '/manifest.json', JSON.stringify(manifest, null, 2)); +for (const r of manifest) { + const verdict = r.js ? 'JSFAIL ' + r.js : r.refused ? 'REFUSED ' + r.refused : 'saved'; + console.log(r.id.padEnd(28) + ' ' + verdict); +} +console.log(`PROBE_MAT_WRITEBACK_JS cases=${manifest.length} saved=${saved} refused=${refused} jsfail=${jsFailed} out=${OUT}`); From d052b7a638e2d83520b9796fe8ac4a43720de22c Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Tue, 20 Oct 2026 18:08:18 -0400 Subject: [PATCH 07/13] [wip] Offer only the MAT-file edits a save can write A .mat save writes an object, a string, a function handle or a value the reader did not decode only as it was read, or renamed, and refuses everything else of them; the editor offered those edits anyway, so a user could make one that only failed at the save. Now one rule decides what a .mat takes, MatNode._editRefusal, built of the writer's own refusals (freshRefusal, structureRefusal, unsavableRefusal, renameWhy, PAST_SUBSYSTEM, duplicateWhy), and every path an edit takes asks it through BaseNode.sourceEditRefusal: getPropInfo and the editability getters, the structural gates, each setter and the session's editProperty. A dictionary's and a model's sources do not answer it, so they take every edit they took. An object, a string, a function handle and a value not decoded, and a plain variable holding one at any depth, take a rename and a delete and nothing else; so does either of two variables of one name. A value typed in that would make a string is refused before it is made, as is a rename into a record whose element cannot be renamed. A variable stored after the subsystem takes no edit, not even a rename, and can be deleted. Add is not offered on a struct array or an element of one, where the save writes a field into every element or none. A file no save of which can be written is readOnly and takes no edit at all; any other is not readOnly. addEntry adds the double 0 named var to a .mat, and a rename into a name the file holds names the file. A sweep over every Level-5 fixture and MATLAB's verdict corpus holds the gate to the writer both ways: an edit forced around the gate is refused by the save exactly where the gate refuses it, every cell, Add and Delete the editor offers saves and reads back as the tree shows it, and every cell it does not offer is refused on every path. It found a cell of function handles built without its rows by the node ceiling, which the writer's check of its rows passed and MatWriter then refused; such a container is now judged by the variable it was read as. --- README.md | 51 +- dist/core/DataModel.d.ts.map | 2 +- dist/core/DataModel.js | 25 +- dist/core/DataModel.js.map | 2 +- dist/datamodel/node/BaseNode.d.ts | 16 + dist/datamodel/node/BaseNode.d.ts.map | 2 +- dist/datamodel/node/BaseNode.js | 37 +- dist/datamodel/node/BaseNode.js.map | 2 +- dist/datamodel/node/DataNode.d.ts | 14 +- dist/datamodel/node/DataNode.d.ts.map | 2 +- dist/datamodel/node/DataNode.js | 54 +- dist/datamodel/node/DataNode.js.map | 2 +- dist/datamodel/node/container/MatNode.d.ts | 66 +- .../datamodel/node/container/MatNode.d.ts.map | 2 +- dist/datamodel/node/container/MatNode.js | 197 +++++- dist/datamodel/node/container/MatNode.js.map | 2 +- .../node/data/MatlabVariableNode.d.ts | 11 + .../node/data/MatlabVariableNode.d.ts.map | 2 +- .../datamodel/node/data/MatlabVariableNode.js | 48 +- .../node/data/MatlabVariableNode.js.map | 2 +- dist/datamodel/parser/MatFileWriter.d.ts | 59 ++ dist/datamodel/parser/MatFileWriter.d.ts.map | 2 +- dist/datamodel/parser/MatFileWriter.js | 257 +++++-- dist/datamodel/parser/MatFileWriter.js.map | 2 +- src/core/DataModel.ts | 25 +- src/datamodel/node/BaseNode.ts | 41 +- src/datamodel/node/DataNode.ts | 56 +- src/datamodel/node/container/MatNode.ts | 235 ++++++- src/datamodel/node/data/MatlabVariableNode.ts | 49 +- src/datamodel/parser/MatFileWriter.ts | 270 ++++++-- test/complexMcosFixtures.test.ts | 20 +- test/complexTextWriteBack.test.ts | 7 +- test/matEditGate.test.ts | 637 ++++++++++++++++++ test/matFileSave.test.ts | 49 +- test/matNoPayload.test.ts | 10 +- test/matNode.test.ts | 7 +- test/matRecords.test.ts | 7 +- test/matStructArray.test.ts | 11 +- test/mcosShortValues.test.ts | 18 +- test/sparseDamaged.test.ts | 14 +- test/sparseFixtures.test.ts | 6 +- test/unbackedBudgetVenues.test.ts | 8 +- test/unmodelledClassVariable.test.ts | 7 +- 43 files changed, 2075 insertions(+), 261 deletions(-) create mode 100644 test/matEditGate.test.ts diff --git a/README.md b/README.md index c940d034..1e2f2bc1 100644 --- a/README.md +++ b/README.md @@ -55,9 +55,12 @@ import { createSession, loadFromPath, loadDirectory } from 'data-explorer-core/n ## Saving a file -`session.serializeSource(srcId)` answers a `.sldd` in the form it arrived in: -`{ kind: 'binary', bytes }` for a compressed-binary package, `{ kind: 'text', text }` -for a text dictionary. The other formats are read-only and answer `null`. +`session.serializeSource(srcId)` answers a file in the form it arrived in: a +`.sldd` as `{ kind: 'binary', bytes }` for a compressed-binary package and +`{ kind: 'text', text }` for a text dictionary, a `.mat` as +`{ kind: 'binary', sourceFormat: 'mat', bytes }`. Models and projects are +read-only and answer `null`. A save does not reset the source's `dirty` flag: +the host writes the bytes and registers the file again. A binary dictionary's save writes each entry nobody edited as the bytes it was read from, in its own place, and writes from the model only what was edited or @@ -105,6 +108,48 @@ save gate has to check for itself. `readEntryFragment(fragment, bytes it came from, so an entry rebuilt from text by an undo is still written as those bytes, and merged with them when it is edited again. +### A MAT-file + +A MAT-file is saved as the file it was read from, with what was edited written +fresh. That is a Level-5 file, as `-v6` and `-v7` write it; a `-v7.3` file (HDF5) +and a big-endian one are not opened. Every variable nobody edited is written as +the bytes it was read from, compressed or not as it was, in its own place, and so +are the file's objects (the unnamed record MATLAB keeps them in, last) and every +record the reader could not read; the header keeps its text. A variable only +renamed is its own bytes with the new name in them. One whose value was edited, +and one added, is written from the model, after the last variable and before the +objects, and compressed only if the file already holds a compressed record, so a +`-v6` file stays one. Before the bytes are handed back they are read again, and +held to the rules MATLAB loads a file by: a save that breaks one the file as read +did not break is refused, with a `MatWriteError` naming the variable, and nothing +is written. + +What such a save cannot write, the editor does not offer. A host that honours the +editability core hands it (`getPropInfo(...).editable`, a row's `Name.editable`, +`_valueEditable` and `_descriptionEditable`, `nameEditable`, `valueEditable`, +`canAddChild`, `canRemoveChild`) offers no edit a save then refuses, and every +setter and `editProperty` refuse the same edits, naming the variable and why. +These take a rename and a delete and nothing else: + +- an object, of any class (a `Simulink.Parameter`, a bus, a signal, a class of + your own): none of its properties and none of the rows under it; +- a string, a function handle, and a value the reader could not decode; +- a plain variable holding any of these, at any depth: neither its value nor any + row under it; +- either of two variables of one name, until one is renamed: MATLAB loads only + one of them. + +A value typed in that would make a string (`"abc"`, `{1, "a"}`) is refused, and +Add is not offered on a struct array or on an element of one. A variable stored +after the objects, which MATLAB does not load, takes no edit, not even a rename, +and can be deleted. A file no save of which can be written is `readOnly` and takes +no edit, addition or delete at all: one whose records do not tile it, one opened +from a parse without its records (an older host's, through +`addMatSourceParsed`), one whose bytes the host has since handed away. +`addEntry` adds a variable named `var` (then `var1`, and so on) holding the +double `0`. A save can still refuse what only a value's bytes say, one past the +unbacked-bytes budget, say, in the same words. + ## Usage across a folder `session.findUsages(nodeId)` answers "what refers to this?" off the trees a diff --git a/dist/core/DataModel.d.ts.map b/dist/core/DataModel.d.ts.map index 1503e1d8..1899489d 100644 --- a/dist/core/DataModel.d.ts.map +++ b/dist/core/DataModel.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"DataModel.d.ts","sourceRoot":"","sources":["../../src/core/DataModel.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"DataModel.d.ts","sourceRoot":"","sources":["../../src/core/DataModel.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,KAAK,EAAkB,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACpG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAIxE,OAAO,KAAK,EAAE,OAAO,EAAmC,MAAM,+BAA+B,CAAC;AAa9F,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,SAAS,EACT,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAW3B,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC7D,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AA6BvH,wBAAgB,aAAa,CAAC,IAAI,GAAE,oBAAyB;;2BAucpD,MAAM,WACJ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,SACzB,OAAO,CAAC,UAAU,CAAC,aACf,YAAY,EAAE,KACxB,WAAW;6BAYL,MAAM,YACH,WAAW,SACd,OAAO,CAAC,UAAU,CAAC,aACf,YAAY,EAAE,KACxB,WAAW;4BAIiB,MAAM,UAAU,WAAW,SAAS,OAAO,CAAC,UAAU,CAAC,KAAG,WAAW;kCAoD/D,MAAM,UAAU,OAAO,SAAS,OAAO,CAAC,UAAU,CAAC,KAAG,WAAW;0BAzCzE,MAAM,UAAU,WAAW,SAAS,OAAO,CAAC,UAAU,CAAC,KAAG,WAAW;gCAoD/D,MAAM,UAAU,OAAO,SAAS,OAAO,CAAC,UAAU,CAAC,KAAG,WAAW;8BAzC3F,MAAM,SACN,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,SACtB,OAAO,CAAC,UAAU,CAAC,aACf,YAAY,EAAE,KACxB,WAAW;8BA0HmB,MAAM,KAAG,IAAI;qBAiBxB,IAAI;2BAQI,MAAM,KAAG,WAAW,GAAG,IAAI;2BAI3B,MAAM,KAAG,OAAO;4BAIjB,MAAM,EAAE;8BAIN,MAAM;6BAg/CL,MAAM,KAAG,gBAAgB,GAAG,IAAI;sBA5+CzC,OAAO;6BA3QE,KAAK,GAAG,QAAQ,KAAG,IAAI;4BAMxB,KAAK,GAAG,KAAK,EAAE,GAAG,IAAI,KAAG,IAAI;yBAWhC,KAAK,GAAG,QAAQ,GAAG,IAAI,SAAS,KAAK,GAAG,KAAK,EAAE,GAAG,IAAI,KAAG,IAAI;0BAY9D,KAAK,GAAG,QAAQ,GAAG,IAAI;wBAIzB,KAAK,GAAG,IAAI;yBAIX,KAAK,EAAE;yBAIP,KAAK,GAAG,QAAQ,GAAG,IAAI;6BAirDnB,WAAW,GAAG,IAAI;+BAqEhB,WAAW,GAAG,IAAI;2BAtGpB,KAAK,GAAG,IAAI,KAAG,IAAI;0BAKtB,KAAK,GAAG,IAAI;4BAIV,IAAI;2BA/6CH,MAAM,KAAG,KAAK,GAAG,IAAI;uBAgEzB,cAAc,KAAG,KAAK,EAAE;sBA+DzB,cAAc,KAAG,KAAK,GAAG,IAAI;0BA+JzB,MAAM,KAAG,cAAc;yBAsQxB,MAAM,KAAG,SAAS,EAAE;yCA+RJ,MAAM,KAAG,mBAAmB,EAAE;wBAlD/C,KAAK,KAAG,OAAO,EAAE;sBAvjCrB,IAAI;oBAIN,IAAI;2BAotCf,MAAM,gBACA,MAAM,YACV,OAAO,aACN,OAAO,KACjB,IAAI,GAAG,KAAK,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;2BA+GhE,MAAM,aAAa,MAAM,cAAc,MAAM,KAAG,KAAK,GAAG,IAAI;oBAqQrE,KAAK,GAAG,IAAI;sBAsBV,OAAO;yBARF,MAAM,KAAG,KAAK,GAAG,IAAI;6BA8BjB,MAAM,KAAG,OAAO;+BAgBd,MAAM,EAAE,KAAG,OAAO;oBAhuD7B,CAAC,QAAQ,KAAK,UAAU,MAAM,CAAC,KAAG,CAAC;yBA0C9B,KAAK,KAAG,IAAI;2BAoBV,KAAK,WAAW,MAAM,IAAI,KAAG,IAAI;gBAwsDxC,IAAI;gBAQJ,IAAI;mBAQD,OAAO;mBAKP,OAAO;;EAuLhC;AAED,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AAEvD,QAAA,MAAM,SAAS;;2BAzzDN,MAAM,WACJ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,SACzB,OAAO,CAAC,UAAU,CAAC,aACf,YAAY,EAAE,KACxB,WAAW;6BAYL,MAAM,YACH,WAAW,SACd,OAAO,CAAC,UAAU,CAAC,aACf,YAAY,EAAE,KACxB,WAAW;4BAIiB,MAAM,UAAU,WAAW,SAAS,OAAO,CAAC,UAAU,CAAC,KAAG,WAAW;kCAoD/D,MAAM,UAAU,OAAO,SAAS,OAAO,CAAC,UAAU,CAAC,KAAG,WAAW;0BAzCzE,MAAM,UAAU,WAAW,SAAS,OAAO,CAAC,UAAU,CAAC,KAAG,WAAW;gCAoD/D,MAAM,UAAU,OAAO,SAAS,OAAO,CAAC,UAAU,CAAC,KAAG,WAAW;8BAzC3F,MAAM,SACN,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,SACtB,OAAO,CAAC,UAAU,CAAC,aACf,YAAY,EAAE,KACxB,WAAW;8BA0HmB,MAAM,KAAG,IAAI;qBAiBxB,IAAI;2BAQI,MAAM,KAAG,WAAW,GAAG,IAAI;2BAI3B,MAAM,KAAG,OAAO;4BAIjB,MAAM,EAAE;8BAIN,MAAM;6BAg/CL,MAAM,KAAG,gBAAgB,GAAG,IAAI;sBA5+CzC,OAAO;6BA3QE,KAAK,GAAG,QAAQ,KAAG,IAAI;4BAMxB,KAAK,GAAG,KAAK,EAAE,GAAG,IAAI,KAAG,IAAI;yBAWhC,KAAK,GAAG,QAAQ,GAAG,IAAI,SAAS,KAAK,GAAG,KAAK,EAAE,GAAG,IAAI,KAAG,IAAI;0BAY9D,KAAK,GAAG,QAAQ,GAAG,IAAI;wBAIzB,KAAK,GAAG,IAAI;yBAIX,KAAK,EAAE;yBAIP,KAAK,GAAG,QAAQ,GAAG,IAAI;6BAirDnB,WAAW,GAAG,IAAI;+BAqEhB,WAAW,GAAG,IAAI;2BAtGpB,KAAK,GAAG,IAAI,KAAG,IAAI;0BAKtB,KAAK,GAAG,IAAI;4BAIV,IAAI;2BA/6CH,MAAM,KAAG,KAAK,GAAG,IAAI;uBAgEzB,cAAc,KAAG,KAAK,EAAE;sBA+DzB,cAAc,KAAG,KAAK,GAAG,IAAI;0BA+JzB,MAAM,KAAG,cAAc;yBAsQxB,MAAM,KAAG,SAAS,EAAE;yCA+RJ,MAAM,KAAG,mBAAmB,EAAE;wBAlD/C,KAAK,KAAG,OAAO,EAAE;sBAvjCrB,IAAI;oBAIN,IAAI;2BAotCf,MAAM,gBACA,MAAM,YACV,OAAO,aACN,OAAO,KACjB,IAAI,GAAG,KAAK,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;2BA+GhE,MAAM,aAAa,MAAM,cAAc,MAAM,KAAG,KAAK,GAAG,IAAI;oBAqQrE,KAAK,GAAG,IAAI;sBAsBV,OAAO;yBARF,MAAM,KAAG,KAAK,GAAG,IAAI;6BA8BjB,MAAM,KAAG,OAAO;+BAgBd,MAAM,EAAE,KAAG,OAAO;oBAhuD7B,CAAC,QAAQ,KAAK,UAAU,MAAM,CAAC,KAAG,CAAC;yBA0C9B,KAAK,KAAG,IAAI;2BAoBV,KAAK,WAAW,MAAM,IAAI,KAAG,IAAI;gBAwsDxC,IAAI;gBAQJ,IAAI;mBAQD,OAAO;mBAKP,OAAO;;CA2LmB,CAAC;AAErD,eAAe,SAAS,CAAC"} \ No newline at end of file diff --git a/dist/core/DataModel.js b/dist/core/DataModel.js index 92333c09..48668e5e 100644 --- a/dist/core/DataModel.js +++ b/dist/core/DataModel.js @@ -20,7 +20,7 @@ import { blockKey, blockLabel, joinBlockPath } from '../datamodel/blockIdentity. import { maskDefining } from '../datamodel/maskScope.js'; import { normalizeRefNames } from '../datamodel/parser/SlddContent.js'; import RowCellPool from '../datamodel/node/RowCellPool.js'; -import { propNamed } from '../datamodel/node/BaseNode.js'; +import { propNamed, sourceEditRefusal } from '../datamodel/node/BaseNode.js'; import { holdersRestorer } from '../datamodel/node/childEdit.js'; // The session's own vocabulary — what a caller passes in and what these functions hand // back — and the compiler that turns one of those types, FindNodesQuery, into the tests @@ -1615,6 +1615,21 @@ export function createSession(opts = {}) { if (typeof newValue === 'string' && newValue === priorValue) { return true; } + // An edit the node's source would not write is refused before any setter is asked + // (BaseNode.sourceEditRefusal): a MAT-file's object, say, takes a rename and nothing else. + // Every setter asks the same rule (DataNode._refuseEncodedEdit); this is for one that does + // not, of a class a file can hold. + const prop = propNamed(node.getProperties(), propertyName); + const isName = propertyName === 'Name' || prop?.key === 'Name'; + const refused = sourceEditRefusal(node, isName ? 'Name' : prop?.key ?? propertyName); + if (refused) { + return { + error: true, + reason: refused, + invalidValue: String(newValue), + validValue: isName ? node.name : typeof priorValue === 'string' ? priorValue : node.displayValue, + }; + } // Unless the node can put the value back itself, which the undo then has it do: the text // it shows is not always its value (an empty's `[ ]` is a 0x0 double, whatever it was). const restore = propertyRestorer(node, propertyName); @@ -1670,13 +1685,17 @@ export function createSession(opts = {}) { // entry is named `entryName`, or the class's default name, with a counter appended if // that name is taken. Returns null, and adds nothing and records no undo step, when // there is no active dictionary, no section takes the class, or the name is not one - // MATLAB can load (see SectionNode.addEntry): the same rule a rename applies. + // MATLAB can load (see SectionNode.addEntry): the same rule a rename applies. A MAT-file + // takes a plain variable, the double 0 named `var` (MatNode.execAddEntry), and nothing its + // save could not write. function addEntry(sectionKey, className, entryName) { const slddNode = getActiveSlddNode(); if (!slddNode) { return null; } - let section = slddNode.getSection(sectionKey); + // A MAT-file has no sections: its variables are its own children, so it takes the entry + // itself, whatever `sectionKey` says (MatNode.execAddEntry: a plain variable, `0`). + let section = slddNode instanceof MatNode ? slddNode : slddNode.getSection(sectionKey); if (!section) { // When at root (sectionKey='sldd'), find the section that accepts this className for (const child of slddNode.children) { diff --git a/dist/core/DataModel.js.map b/dist/core/DataModel.js.map index 0d75900a..75d27049 100644 --- a/dist/core/DataModel.js.map +++ b/dist/core/DataModel.js.map @@ -1 +1 @@ -{"version":3,"file":"DataModel.js","sourceRoot":"","sources":["../../src/core/DataModel.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"DataModel.js","sourceRoot":"","sources":["../../src/core/DataModel.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/node/BaseNode.d.ts b/dist/datamodel/node/BaseNode.d.ts index afa3c07a..f0617148 100644 --- a/dist/datamodel/node/BaseNode.d.ts +++ b/dist/datamodel/node/BaseNode.d.ts @@ -128,6 +128,22 @@ export type ElementSubscript = { * `_encoded`, so the walk stops at the first container and answers null for them. */ export declare function encodedHolderOf(node: BaseNode | null | undefined): BaseNode | null; +/** + * Why the source `node` is in refuses an edit of `key` at `node`, in words, or null where it + * takes it. `key` is 'Name' for the node's own name, and the property's key for anything else, + * 'Value' for a child added or removed. + * + * A source answers for itself, through the first container above the node, which an entry is a + * child of: a MAT-file, whose save writes only some edits (MatNode._editRefusal). A dictionary's + * section and a model's do not answer, and take every edit their nodes take. Asked by every + * editability getter below, by the structural gates (DataNode._encodedReadOnly), by the setters + * (DataNode._refuseEncodedEdit, the rename) and by the session's editProperty, so that what the + * table offers and what an edit is taken for are one answer. Duck-typed, as encodedHolderOf is: + * this class imports no container. + */ +export declare function sourceEditRefusal(node: BaseNode, key: string): string | null; +/** A source's answer to sourceEditRefusal, for `node`, which is `entry` or a node under it. */ +export type SourceEditRefusal = (entry: BaseNode, node: BaseNode, key: string) => string | null; /** * The prop in `props` that an edit naming `name` is an edit of: the one whose key or column is * `name`, which is how an edit committed in the 'Value' column reaches the atom that owns it (a diff --git a/dist/datamodel/node/BaseNode.d.ts.map b/dist/datamodel/node/BaseNode.d.ts.map index 3351da2a..3e9984b0 100644 --- a/dist/datamodel/node/BaseNode.d.ts.map +++ b/dist/datamodel/node/BaseNode.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"BaseNode.d.ts","sourceRoot":"","sources":["../../../src/datamodel/node/BaseNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"BaseNode.d.ts","sourceRoot":"","sources":["../../../src/datamodel/node/BaseNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/node/BaseNode.js b/dist/datamodel/node/BaseNode.js index e133961e..cab665cc 100644 --- a/dist/datamodel/node/BaseNode.js +++ b/dist/datamodel/node/BaseNode.js @@ -28,6 +28,29 @@ export function encodedHolderOf(node) { } return null; } +/** + * Why the source `node` is in refuses an edit of `key` at `node`, in words, or null where it + * takes it. `key` is 'Name' for the node's own name, and the property's key for anything else, + * 'Value' for a child added or removed. + * + * A source answers for itself, through the first container above the node, which an entry is a + * child of: a MAT-file, whose save writes only some edits (MatNode._editRefusal). A dictionary's + * section and a model's do not answer, and take every edit their nodes take. Asked by every + * editability getter below, by the structural gates (DataNode._encodedReadOnly), by the setters + * (DataNode._refuseEncodedEdit, the rename) and by the session's editProperty, so that what the + * table offers and what an edit is taken for are one answer. Duck-typed, as encodedHolderOf is: + * this class imports no container. + */ +export function sourceEditRefusal(node, key) { + let entry = null; + let n = node; + while (n && !n.isContainer) { + entry = n; + n = n.parent; + } + const refuse = n?._editRefusal; + return entry && typeof refuse === 'function' ? refuse.call(n, entry, node, key) : null; +} /** * The prop in `props` that an edit naming `name` is an edit of: the one whose key or column is * `name`, which is how an edit committed in the 'Value' column reaches the atom that owns it (a @@ -133,7 +156,8 @@ export default class BaseNode { if (this.parent?.fixesChildNames) { return false; } - return true; + // Nor a name its source would not write (sourceEditRefusal). + return !sourceEditRefusal(this, 'Name'); } // Called on a node after a structural edit added or removed a child of `child` // — i.e. one of ITS children changed shape, not this node's own list. Every node @@ -416,7 +440,8 @@ export default class BaseNode { if (v && v.charAt(0) === '<' && v.charAt(v.length - 1) === '>') { return false; } - return true; + // Nor a value its source would not write (sourceEditRefusal). + return !sourceEditRefusal(this, 'Value'); } // Whether a Description typed onto this row could be SAVED — the third member of the // nameEditable/valueEditable family, and one for the same reason: the Description @@ -433,7 +458,7 @@ export default class BaseNode { // Parameter whose value displays as a `<1x12 double>` summary takes no value editor // and can still be described. get descriptionEditable() { - return !encodedHolderOf(this); + return !encodedHolderOf(this) && !sourceEditRefusal(this, 'Description'); } getPropInfo(PropClassRef) { const key = PropClassRef.key; @@ -466,6 +491,12 @@ export default class BaseNode { if (key !== 'Name' && encodedHolderOf(this)) { editable = false; } + // And any its source would not write (sourceEditRefusal), the Name included: asked last, + // and only of a property every rule above leaves editable, as it is the one that walks to + // the source. + if (editable && sourceEditRefusal(this, key)) { + editable = false; + } return { key, displayName: PropClassRef.displayName, diff --git a/dist/datamodel/node/BaseNode.js.map b/dist/datamodel/node/BaseNode.js.map index c9476bb3..f9d33cdd 100644 --- a/dist/datamodel/node/BaseNode.js.map +++ b/dist/datamodel/node/BaseNode.js.map @@ -1 +1 @@ -{"version":3,"file":"BaseNode.js","sourceRoot":"","sources":["../../../src/datamodel/node/BaseNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"BaseNode.js","sourceRoot":"","sources":["../../../src/datamodel/node/BaseNode.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG1E,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AA0HlE,gFAAgF;AAChF,yEAAyE;AACzE,gFAAgF;AAChF,6DAA6D;AAC7D,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AAmCrH;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAAC,IAAiC;IAC/D,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAE,CAA0C,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;QAC/F,IAAK,CAAuC,CAAC,QAAQ,EAAE,CAAC;YACtD,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAc,EAAE,GAAW;IAC3D,IAAI,KAAK,GAAoB,IAAI,CAAC;IAClC,IAAI,CAAC,GAAoB,IAAI,CAAC;IAC9B,OAAO,CAAC,IAAI,CAAE,CAA0C,CAAC,WAAW,EAAE,CAAC;QACrE,KAAK,GAAG,CAAC,CAAC;QACV,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACf,CAAC;IACD,MAAM,MAAM,GAAI,CAA4D,EAAE,YAAY,CAAC;IAC3F,OAAO,KAAK,IAAI,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACzF,CAAC;AAKD;;;;;;;;;GASG;AACH,MAAM,UAAU,SAAS,CAAC,KAAkB,EAAE,IAAY;IACxD,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC;AAC9G,CAAC;AAED,MAAM,CAAC,OAAO,OAAO,QAAQ;IAa3B,YAAY,IAAY,EAAE,MAAuB;QAC/C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IACpE,CAAC;IAED,IAAI,IAAI;QACN,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,6EAA6E;IAC7E,UAAU;IACV,IAAI,SAAS;QACX,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,8FAA8F;IAC9F,0FAA0F;IAC1F,wEAAwE;IACxE,YAAY;QACV,OAAO,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;IAED,0EAA0E;IAC1E,8EAA8E;IAC9E,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,6EAA6E;IAC7E,6EAA6E;IAC7E,gDAAgD;IAChD,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,YAAY;QACd,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gFAAgF;IAChF,kEAAkE;IAClE,IAAI,aAAa;QACf,OAAO,CAAC,CAAC,CACP,IAAI,CAAC,MAAM;YACX,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAClG,CAAC;IACJ,CAAC;IAED,2EAA2E;IAC3E,8EAA8E;IAC9E,iFAAiF;IACjF,iFAAiF;IACjF,kFAAkF;IAClF,qCAAqC;IACrC,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;IACxE,CAAC;IAED,6EAA6E;IAC7E,2EAA2E;IAC3E,6EAA6E;IAC7E,+EAA+E;IAC/E,iFAAiF;IACjF,0CAA0C;IAC1C,IAAI,mBAAmB;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,mFAAmF;IACnF,sFAAsF;IACtF,kFAAkF;IAClF,uFAAuF;IACvF,gDAAgD;IAChD,IAAI,eAAe;QACjB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,YAAY;QACd,oFAAoF;QACpF,0EAA0E;QAC1E,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,MAAM,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACzC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,0DAA0D;QAC1D,IAAI,IAAI,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC;YACrC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,6DAA6D;QAC7D,OAAO,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,+EAA+E;IAC/E,iFAAiF;IACjF,8EAA8E;IAC9E,+EAA+E;IAC/E,6EAA6E;IAC7E,0CAA0C;IAC1C,qBAAqB,CAAC,MAAgB,IAAS,CAAC;IAEhD,6FAA6F;IAC7F,2FAA2F;IAC3F,kFAAkF;IAClF,8FAA8F;IAC9F,0FAA0F;IAC1F,sBAAsB,CAAC,MAAgB;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW;QACT,OAAO,KAAK,CAAC;IACf,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,KAAe,EAAE,KAAc;QACtC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QACD,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;QACpB,uFAAuF;QACvF,8EAA8E;QAC9E,qFAAqF;QACrF,yFAAyF;QACzF,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,WAAW,CAAC,KAAe;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC7B,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;YACpB,yEAAyE;YACzE,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAClC,CAAC;IACH,CAAC;IAED,YAAY,CAAC,OAAiB;QAC5B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YACZ,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;QACpC,2FAA2F;QAC3F,4FAA4F;QAC5F,MAAM,MAAM,GAAG,IAAI,CAAC,MAAiD,CAAC;QACtE,IAAI,OAAO,MAAM,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC;YAC/C,MAAM,CAAC,eAAe,EAAE,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8EAA8E;IAC9E,EAAE;IACF,wFAAwF;IACxF,sFAAsF;IACtF,uFAAuF;IACvF,6EAA6E;IAC7E,0CAA0C;IAC1C,EAAE;IACF,uFAAuF;IACvF,wFAAwF;IACxF,mBAAmB;IACnB,wBAAwB;QACtB,IAAI,IAAI,GAAa,IAAI,CAAC;QAC1B,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;QACA,IAAgD,CAAC,cAAc,GAAG,IAAI,CAAC;IAC1E,CAAC;IAED,gFAAgF;IAChF,gFAAgF;IAChF,4EAA4E;IAC5E,gFAAgF;IAChF,gFAAgF;IAChF,sCAAsC;IACtC,gBAAgB;QACd,IAAI,IAAI,GAAa,IAAI,CAAC;QAC1B,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;QACD,MAAM,MAAM,GAAG,IAAsC,CAAC;QACtD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;QACtB,CAAC;QACD,wFAAwF;QACxF,sFAAsF;QACtF,sDAAsD;QACtD,IAAI,CAAC,wBAAwB,EAAE,CAAC;IAClC,CAAC;IAED,8EAA8E;IAC9E,EAAE;IACF,qFAAqF;IACrF,gFAAgF;IAChF,sFAAsF;IACtF,oFAAoF;IACpF,6EAA6E;IAC7E,kFAAkF;IAClF,oFAAoF;IACpF,mFAAmF;IACnF,uFAAuF;IACvF,uEAAuE;IACvE,EAAE;IACF,sFAAsF;IACtF,wFAAwF;IACxF,sFAAsF;IACtF,wFAAwF;IACxF,uFAAuF;IACvF,iFAAiF;IACjF,wFAAwF;IACxF,uFAAuF;IACvF,sFAAsF;IACtF,cAAc;IACd,EAAE;IACF,mFAAmF;IACnF,qFAAqF;IACrF,wBAAwB;IACxB,WAAW;QACT,IAAI,IAAI,GAAa,IAAI,CAAC;QAC1B,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;QACD,MAAM,OAAO,GAAI,IAAsD,CAAC,cAAc,CAAC;QACvF,oFAAoF;QACpF,oFAAoF;QACpF,+EAA+E;QAC/E,8EAA8E;QAC9E,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;YAClC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,qFAAqF;QACrF,sFAAsF;QACtF,sFAAsF;QACtF,8CAA8C;QAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC;IACzF,CAAC;IAED,kFAAkF;IAClF,yFAAyF;IACzF,uFAAuF;IACvF,gEAAgE;IAChE,EAAE;IACF,uFAAuF;IACvF,wFAAwF;IACxF,uFAAuF;IACvF,oFAAoF;IACpF,6EAA6E;IAC7E,aAAa,CAAC,QAAiB;QAC7B,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;YACpD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,IAAI,GAAa,IAAI,CAAC;QAC1B,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;QACD,MAAM,OAAO,GAAI,IAA4D,CAAC,iBAAiB,CAAC;QAChG,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;YAClC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,SAAS,CAAC;IACtD,CAAC;IAED,OAAO;QACL,MAAM,MAAM,GAAe,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAe,CAAC,IAAI,CAAC,CAAC;QACjC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,oFAAoF;IACpF,+CAA+C;IAC/C,EAAE;IACF,qFAAqF;IACrF,sFAAsF;IACtF,oFAAoF;IACpF,iFAAiF;IACjF,oFAAoF;IACpF,qFAAqF;IACrF,0CAA0C;IAC1C,EAAE;IACF,kFAAkF;IAClF,mFAAmF;IACnF,kFAAkF;IAClF,0EAA0E;IAC1E,qEAAqE;IACrE,4EAA4E;IAC5E,+DAA+D;IACvD,kBAAkB;QACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAO,CAAC,QAAQ,CAAC;QACvC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;YACtE,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,WAAW;QACb,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC;IAClG,CAAC;IAED;;;;;OAKG;IACH,IAAI,UAAU;QACZ,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAC9B,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM,IAAK,MAA+C,CAAC,WAAW,EAAE,CAAC;YAC5E,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,UAAU,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;IAC1F,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,WAAyB;QACnC,iFAAiF;QACjF,oFAAoF;QACpF,oFAAoF;QACpF,mFAAmF;QACnF,SAAS;QACT,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACnC,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;YAC1B,OAAO,IAAI,IAAI,CAAC;gBACd,CAAC,CAAC,eAAe,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC;gBACjD,CAAC,CAAC,cAAc,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QACzE,CAAC;QACD,IACE,IAAI,CAAC,MAAM;YACX,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,EACjG,CAAC;YACD,yEAAyE;YACzE,sEAAsE;YACtE,EAAE;YACF,sEAAsE;YACtE,8DAA8D;YAC9D,qEAAqE;YACrE,2EAA2E;YAC3E,2EAA2E;YAC3E,2EAA2E;YAC3E,uEAAuE;YACvE,EAAE;YACF,wEAAwE;YACxE,4EAA4E;YAC5E,uEAAuE;YACvE,iCAAiC;YACjC,OAAO,cAAc,CACnB,WAAW,EAAE,EACb,IAAI,CAAC,kBAAkB,EAAE,EACzB,IAAI,CAAC,MAAM,CAAC,KAAK,EACjB,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,EAC5D,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAC3C,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,aAAa;QACf,kFAAkF;QAClF,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAC/D,OAAO,KAAK,CAAC;QACf,CAAC;QACD,8DAA8D;QAC9D,OAAO,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,qFAAqF;IACrF,kFAAkF;IAClF,qFAAqF;IACrF,uEAAuE;IACvE,mFAAmF;IACnF,qCAAqC;IACrC,EAAE;IACF,sFAAsF;IACtF,oFAAoF;IACpF,uFAAuF;IACvF,EAAE;IACF,8EAA8E;IAC9E,oFAAoF;IACpF,8BAA8B;IAC9B,IAAI,mBAAmB;QACrB,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC3E,CAAC;IAED,WAAW,CAAC,YAAuB;QACjC,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC;QAC7B,IAAI,YAAoB,CAAC;QACzB,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;YAC3B,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,YAAY,GAAG,YAAY,CAAC,MAAM,CAAE,IAA2C,CAAC,GAAG,CAAC,CAAC,CAAC;QACxF,CAAC;QAED,IAAI,QAAQ,GAAG,YAAY,CAAC,MAAM,KAAK,OAAO,CAAC;QAC/C,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YACnB,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC;QAC3C,CAAC;QACD,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YACpB,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC;QAC5C,CAAC;QACD,oFAAoF;QACpF,qFAAqF;QACrF,iBAAiB;QACjB,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;YAC1B,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC,mBAAmB,CAAC;QAClD,CAAC;QACD,IAAI,QAAQ,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC;YACzC,QAAQ,GAAG,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC;QACD,wFAAwF;QACxF,sFAAsF;QACtF,uCAAuC;QACvC,IAAI,GAAG,KAAK,MAAM,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5C,QAAQ,GAAG,KAAK,CAAC;QACnB,CAAC;QACD,yFAAyF;QACzF,0FAA0F;QAC1F,cAAc;QACd,IAAI,QAAQ,IAAI,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;YAC7C,QAAQ,GAAG,KAAK,CAAC;QACnB,CAAC;QAED,OAAO;YACL,GAAG;YACH,WAAW,EAAE,YAAY,CAAC,WAAW;YACrC,KAAK,EAAG,IAA2C,CAAC,YAAY,CAAC,YAAY,IAAI,GAAG,CAAC;YACrF,YAAY;YACZ,QAAQ;YACR,MAAM,EAAE,YAAY,CAAC,MAAM;YAC3B,OAAO,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SAC/E,CAAC;IACJ,CAAC;IAED,sFAAsF;IACtF,8EAA8E;IAC9E,mFAAmF;IACnF,uFAAuF;IACvF,kFAAkF;IAClF,KAAK,CAAC,IAAkB;QACtB,MAAM,QAAQ,GACZ,IAAI,CAAC,MAAM,IAAI,CAAE,IAAI,CAAC,MAA+C,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5G,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACnC,MAAM,GAAG,GAAY;YACnB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAG,IAAuC,CAAC,MAAM,IAAI,EAAE;SAC9D,CAAC;QAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAC/B,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,SAAS;YACX,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC;YAElC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,GAAG,CAAC,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;YAC5I,CAAC;iBAAM,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBAC9B,oEAAoE;gBACpE,yDAAyD;gBACzD,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;oBAC7B,GAAG,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;gBAClH,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;gBAChC,CAAC;gBACD,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC;YACrC,CAAC;iBAAM,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3D,wEAAwE;gBACxE,uEAAuE;gBACvE,0EAA0E;gBAC1E,0EAA0E;gBAC1E,+DAA+D;gBAC/D,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;YACxG,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;YAClC,CAAC;QACH,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACd,GAAG,CAAC,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;QAC/I,CAAC;QACD,IAAI,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC,EAAE,CAAC;YACtB,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;YAC9B,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC;QAC1C,CAAC;QACD,IAAI,CAAC,CAAC,UAAU,IAAI,GAAG,CAAC,EAAE,CAAC;YACzB,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC,EAAE,CAAC;YACtB,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC;YACrB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,CAAC;QACD,IAAI,CAAC,CAAC,aAAa,IAAI,GAAG,CAAC,EAAE,CAAC;YAC5B,GAAG,CAAC,WAAW,GAAI,IAA4C,CAAC,WAAW,IAAI,EAAE,CAAC;QACpF,CAAC;QACD,gFAAgF;QAChF,uEAAuE;QACvE,iFAAiF;QACjF,qEAAqE;QACrE,GAAG,CAAC,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAEpD,mFAAmF;QACnF,mFAAmF;QACnF,mFAAmF;QACnF,qFAAqF;QACrF,qFAAqF;QACrF,sEAAsE;QACtE,mFAAmF;QACnF,oFAAoF;QACpF,0EAA0E;QAC1E,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAClC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;QACtB,CAAC;QAED,sFAAsF;QACtF,+EAA+E;QAC/E,sFAAsF;QACtF,oFAAoF;QACpF,uFAAuF;QACvF,qFAAqF;QACrF,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC1B,CAAC;QAED,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACtC,CAAC;IAED,aAAa;QACX,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,uEAAuE;IACvE,wEAAwE;IACxE,2EAA2E;IAC3E,4EAA4E;IAC5E,gFAAgF;IAChF,8EAA8E;IAC9E,iCAAiC;IACjC,WAAW;QACT,OAAO,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAED,UAAU;QACR,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAClC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,UAAU,GAAc,EAAE,CAAC;QACjC,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,MAAM,GAAG,GAA4B,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;QAElE,+EAA+E;QAC/E,6EAA6E;QAC7E,yEAAyE;QACzE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QAEpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,UAAU,GAAc,EAAE,CAAC;YACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/C,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACvC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;gBAC5C,0EAA0E;gBAC1E,+EAA+E;gBAC/E,0CAA0C;gBAC1C,EAAE;gBACF,iFAAiF;gBACjF,kFAAkF;gBAClF,gFAAgF;gBAChF,kFAAkF;gBAClF,sDAAsD;gBACtD,EAAE;gBACF,kFAAkF;gBAClF,oFAAoF;gBACpF,qFAAqF;gBACrF,mFAAmF;gBACnF,mFAAmF;gBACnF,8DAA8D;gBAC9D,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC;gBACrC,MAAM,MAAM,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC;gBAC/D,MAAM,QAAQ,GAAG,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC3F,MAAM,SAAS,GACb,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,QAAQ,CAAC,UAAU,KAAK,QAAQ;oBACjF,CAAC,CAAC,QAAQ,CAAC,UAAU;oBACrB,CAAC,CAAC,SAAS,CAAC;gBAChB,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,IAAI,CAAC,GAAG;oBACd,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,QAAQ,EAAE,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;oBACrD,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,sCAAsC;oBAC3G,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,IAAI;oBAC9E,MAAM,EAAE,IAAI;oBACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,KAAK,EAAE,IAAI;oBACX,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;iBAClD,CAAC,CAAC;gBACH,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;gBACtD,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;gBAClC,MAAM,IAAI,GAAG,YAAY,CAAC,UAAU,IAAI,CAAC,YAAY,CAAC,YAAY,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;gBACxF,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;oBACrB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnB,CAAC;YACH,CAAC;YACD,6EAA6E;YAC7E,8EAA8E;YAC9E,8EAA8E;YAC9E,gFAAgF;YAChF,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YACvE,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,GAAG,OAAO;gBACzD,IAAI,EAAE,OAAO;gBACb,WAAW;gBACX,KAAK,EAAE,UAAU;gBACjB,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC;QACL,CAAC;QAED,4EAA4E;QAC5E,+EAA+E;QAC/E,4DAA4D;QAC5D,MAAM,QAAQ,GAAI,IAA0D,CAAC,MAAM,EAAE,WAAW,CAAC;QACjG,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACtD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,UAAU,GAAc,EAAE,CAAC;YACjC,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;gBAC5B,MAAM,QAAQ,GAAG,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC;gBACrC,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,GAAG,CAAC,IAAI;oBACrB,QAAQ,EAAE,MAAM;oBAChB,QAAQ,EAAE,sCAAsC;oBAChD,aAAa,EAAE,IAAI;oBACnB,MAAM,EAAE,IAAI;oBACZ,QAAQ,EAAE,KAAK;oBACf,KAAK,EAAE,IAAI;iBACZ,CAAC,CAAC;gBACH,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;gBACtD,GAAG,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;YAC5B,CAAC;YACD,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,OAAO;gBACb,WAAW,EAAE,OAAO;gBACpB,KAAK,EAAE,UAAU;gBACjB,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,aAAa,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE;YACrC,OAAO,EAAE,CAAC,GAAG,CAAC;YACd,UAAU,EAAE,IAAI;YAChB,gBAAgB,EAAE,KAAK;SACxB,CAAC;IACJ,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC;IACd,CAAC;CACF"} \ No newline at end of file diff --git a/dist/datamodel/node/DataNode.d.ts b/dist/datamodel/node/DataNode.d.ts index 1fc5e669..0c5dc3fd 100644 --- a/dist/datamodel/node/DataNode.d.ts +++ b/dist/datamodel/node/DataNode.d.ts @@ -363,11 +363,19 @@ export default class DataNode extends BaseNode { */ _shapeAfterChildEdit(_op: 'add' | 'remove'): ValueShape | null; /** - * Is this node at or under one whose value is still an encoded stream? The structural - * gates (canAddChild, canRemoveChild) of every class that has them ask this, for the - * reason _refuseEncodedEdit gives: a child added or removed there could not reach the file. + * Is this node at or under one whose value is still an encoded stream, or one whose source + * would not write a change to it (BaseNode.sourceEditRefusal: a MAT-file's object, say)? The + * structural gates (canAddChild, canRemoveChild) of every class that has them ask this, for + * the reason _refuseEncodedEdit gives: a child added or removed there could not reach the file. */ get _encodedReadOnly(): boolean; + /** + * The refusal of an edit of `propName` at or under a value still in the encoded stream it was + * read from, but for the holder's own name, or of one this node's source would not write + * (BaseNode.sourceEditRefusal), in its words; null where the edit may go ahead. Asked first by + * the setter of every class that has one, so that no setter takes what the table offers no + * editor for. + */ _refuseEncodedEdit(propName: string, stringValue: string): SetPropertyResult | null; /** * Does this object's value hold its properties beside its class, with no element (SER-TE)? diff --git a/dist/datamodel/node/DataNode.d.ts.map b/dist/datamodel/node/DataNode.d.ts.map index 87949779..9e1750ca 100644 --- a/dist/datamodel/node/DataNode.d.ts.map +++ b/dist/datamodel/node/DataNode.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"DataNode.d.ts","sourceRoot":"","sources":["../../../src/datamodel/node/DataNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"DataNode.d.ts","sourceRoot":"","sources":["../../../src/datamodel/node/DataNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/node/DataNode.js b/dist/datamodel/node/DataNode.js index 6d2ad69f..f1bd3850 100644 --- a/dist/datamodel/node/DataNode.js +++ b/dist/datamodel/node/DataNode.js @@ -1,5 +1,5 @@ // Copyright 2026 The MathWorks, Inc. -import BaseNode, { encodedHolderOf, propNamed } from './BaseNode.js'; +import BaseNode, { encodedHolderOf, propNamed, sourceEditRefusal } from './BaseNode.js'; import { trySetSchemaProperty } from './schemaBridge.js'; import NodeRegistry from './NodeRegistry.js'; import { isMatCdata } from '../parser/CdataCodec.js'; @@ -422,14 +422,24 @@ export default class DataNode extends BaseNode { const duplicate = typeof nsHolds === 'function' ? stringValue !== this.name && nsHolds.call(this.parent, stringValue) > 0 : this.parent.children.some((sibling) => sibling !== this && sibling.name === stringValue); + // Said of where the names are one namespace: a dictionary's Design and Architectural + // Data, or a MAT-file, which names itself (MatNode._namespaceLabel). if (duplicate) { + const where = this.parent._namespaceLabel ?? 'Design or Architectural Data'; return { error: true, - reason: "'" + stringValue + "' already exists in Design or Architectural Data", + reason: "'" + stringValue + "' already exists in " + where, invalidValue: stringValue, validValue: this.name, }; } + // And a name the parent could not write: a MAT-file's variable whose record is not one + // whole element, whose name its save has nowhere to put (MatNode._renameRefusal). + const renameRefusal = this.parent._renameRefusal; + const refused = typeof renameRefusal === 'function' ? renameRefusal.call(this.parent, this) : null; + if (refused) { + return { error: true, reason: refused, invalidValue: stringValue, validValue: this.name }; + } } const oldName = this.name; this.name = stringValue; @@ -1110,28 +1120,38 @@ export default class DataNode extends BaseNode { return null; } /** - * Is this node at or under one whose value is still an encoded stream? The structural - * gates (canAddChild, canRemoveChild) of every class that has them ask this, for the - * reason _refuseEncodedEdit gives: a child added or removed there could not reach the file. + * Is this node at or under one whose value is still an encoded stream, or one whose source + * would not write a change to it (BaseNode.sourceEditRefusal: a MAT-file's object, say)? The + * structural gates (canAddChild, canRemoveChild) of every class that has them ask this, for + * the reason _refuseEncodedEdit gives: a child added or removed there could not reach the file. */ get _encodedReadOnly() { - return !!encodedHolderOf(this); + return !!encodedHolderOf(this) || !!sourceEditRefusal(this, 'Value'); } + /** + * The refusal of an edit of `propName` at or under a value still in the encoded stream it was + * read from, but for the holder's own name, or of one this node's source would not write + * (BaseNode.sourceEditRefusal), in its words; null where the edit may go ahead. Asked first by + * the setter of every class that has one, so that no setter takes what the table offers no + * editor for. + */ _refuseEncodedEdit(propName, stringValue) { + const isName = this._resolveProperty(propName) === 'name'; const holder = encodedHolderOf(this); - if (!holder) { - return null; + if (holder && !(holder === this && isName)) { + return { + error: true, + reason: `'${holder.displayName}' is stored as an encoded MATLAB value that this editor can show but not write, ` + + 'so it is read-only.', + invalidValue: stringValue, + validValue: isName ? this.name : this.displayValue, + }; } - if (holder === this && this._resolveProperty(propName) === 'name') { - return null; + const refused = sourceEditRefusal(this, isName ? 'Name' : this._propFor(propName)?.key ?? propName); + if (refused) { + return { error: true, reason: refused, invalidValue: stringValue, validValue: isName ? this.name : this.displayValue }; } - return { - error: true, - reason: `'${holder.displayName}' is stored as an encoded MATLAB value that this editor can show but not write, ` + - 'so it is read-only.', - invalidValue: stringValue, - validValue: this._resolveProperty(propName) === 'name' ? this.name : this.displayValue, - }; + return null; } /** * Does this object's value hold its properties beside its class, with no element (SER-TE)? diff --git a/dist/datamodel/node/DataNode.js.map b/dist/datamodel/node/DataNode.js.map index 1c7b96e9..b76aee84 100644 --- a/dist/datamodel/node/DataNode.js.map +++ b/dist/datamodel/node/DataNode.js.map @@ -1 +1 @@ -{"version":3,"file":"DataNode.js","sourceRoot":"","sources":["../../../src/datamodel/node/DataNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"DataNode.js","sourceRoot":"","sources":["../../../src/datamodel/node/DataNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/node/container/MatNode.d.ts b/dist/datamodel/node/container/MatNode.d.ts index ae47ea69..644cdd91 100644 --- a/dist/datamodel/node/container/MatNode.d.ts +++ b/dist/datamodel/node/container/MatNode.d.ts @@ -7,7 +7,7 @@ import type { MatRecord, ParsedMat } from '../../parser/MatParser.js'; export type MatParse = Pick & Partial>; export default class MatNode extends ContainerNode { header: string; - dirty: boolean; + _dirty: boolean; _anonymousElements: MatVariable[]; headerBytes: Uint8Array | null; records: MatRecord[] | null; @@ -19,6 +19,10 @@ export default class MatNode extends ContainerNode { } | null; _recordNodes: Map; _nodeRecords: Map; + _fileVerdict: string | null | undefined; + _subsystem: MatRecord | null | undefined; + _valueVerdicts: Map; + _nameCounts: Map | null; constructor(name: string); /** * The record `node` was read from, or null for a node no record became: a variable added @@ -33,17 +37,73 @@ export default class MatNode extends ContainerNode { nodeOf(record: MatRecord): BaseNode | null; get displayName(): string; get readOnly(): boolean; + get dirty(): boolean; + set dirty(value: boolean); + /** + * Why an edit of `key` at `node`, which is `entry` or a node under it, is refused, as a + * message naming the variable or the file, or null where a save of this file writes it. + * `key` is 'Name' for `node`'s own name, and a property's key for anything else: 'Value' + * for a value typed in, a child added or removed, and an element's or a field's edit. + * + * - every edit, of a file no save of which can be written (_fileRefusal), its variables' + * delete and the addition of one included (execRemoveEntry, execAddEntry); + * - every edit of a variable stored after the subsystem, its name included: MATLAB does + * not read it there, and moved, what MATLAB loads would change. It can be deleted; + * - a variable's own name: taken, and written as its record with the name replaced; + * - anything else, which writes the variable fresh: refused where the writer refuses that + * (freshRefusal: an object's typed node, a string, a function handle, a value not + * decoded, and a variable holding one at any depth), or where another variable of the + * file has its name; + * - and Add ('Add', MatlabVariableNode.canAddChild) on a struct that is not 1x1 or is an + * element of one, which is written, but not as the tree shows it. Add gives a struct a + * field row of its own: the rows of a struct array are its elements, so the row was an + * element of no fields the save did not write; a 0x0 struct's field was written with no + * element to hold it, which reads back as no field; and a field added to one element of + * a struct array is written into every element, as MATLAB adds one, `[]` in the others, + * which the tree did not show. + * + * Phase 2 of the MAT-file save widens the last of these, for the properties of an object it + * writes into the subsystem. + */ + _editRefusal(entry: BaseNode, node: BaseNode, key: string): string | null; + /** + * Why `value`, a node built of the text an edit typed in for `node`, of `entry`, cannot be + * written into this file, or null where it can: a string, which MatWriter has no MAT class + * for. Asked of the edit before it is made (MatlabVariableNode.setProperty), so that a value + * that would leave the variable one a save refuses (freshRefusal) is never taken. + */ + _valueRefusal(entry: BaseNode, node: BaseNode, value: BaseNode): string | null; + /** + * Why `node`, a variable of this file, cannot be renamed, or null where it can: its record is not + * one whole element whose name a save can replace (MatFileWriter.renameWhy), which only a damaged + * file holds. Asked by the rename itself (DataNode.setProperty) and not by the editability + * getters, as finding out inflates the record: a rename refused so is refused before it is made. + */ + _renameRefusal(node: BaseNode): string | null; + /** Why no edit of this file is taken, or null (unsavableRefusal, structureRefusal). */ + _fileRefusal(): string | null; + /** The subsystem's record (MatFileWriter.subsystemOf), found once: the records never change. */ + _subsystemRecord(): MatRecord | null; + /** + * How many variables of the file a save writes under `name`: the variables in the tree, and + * each record that became none (one the reader dropped) under its own name, as a save writes + * it (MatFileWriter.refuseDuplicates). A rename into a name another holds is refused for it + * (DataNode.setProperty), naming this file (_namespaceLabel). + */ + _namespaceHolds(name: string): number; + /** Where a rename into a name already held is said to collide (DataNode.setProperty): this file. */ + get _namespaceLabel(): string; get sourceFormat(): string; get icon(): string; get NumberOfEntries(): number; getProperties(): PropClass[]; getPILayout(): PIGroupDef[]; getSection(): null; - execAddEntry(_className?: string, entryName?: string): { + execAddEntry(className?: string, entryName?: string): { node: BaseNode; undo: () => void; redo: () => void; - }; + } | null; _uniqueName(baseName: string): string; execRemoveEntry(node: BaseNode): { undo: () => void; diff --git a/dist/datamodel/node/container/MatNode.d.ts.map b/dist/datamodel/node/container/MatNode.d.ts.map index 4cafe935..3ede3da9 100644 --- a/dist/datamodel/node/container/MatNode.d.ts.map +++ b/dist/datamodel/node/container/MatNode.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"MatNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/container/MatNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"MatNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/container/MatNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/node/container/MatNode.js b/dist/datamodel/node/container/MatNode.js index 16ced357..c5feaaf9 100644 --- a/dist/datamodel/node/container/MatNode.js +++ b/dist/datamodel/node/container/MatNode.js @@ -8,11 +8,16 @@ import { functionHandleOf } from '../../parser/MatParser.js'; import PropName from '../../prop/PropName.js'; import { MAT_NODE_CEILING } from '../../display/DisplayConvention.js'; import { buildUnderCeiling, buildUncut, chargeNodes } from '../data/matNodeCeiling.js'; +import { PAST_SUBSYSTEM, duplicateWhy, freshRefusal, renameWhy, structureRefusal, subsystemOf, unsavableRefusal, unwritableIn, } from '../../parser/MatFileWriter.js'; +import { validateMatlabName } from '../../matlabName.js'; +import { basenameOf } from '../../fileKinds.js'; export default class MatNode extends ContainerNode { constructor(name) { super(name, null); this.header = ''; - this.dirty = false; + this._dirty = false; + this._valueVerdicts = new Map(); + this._nameCounts = null; this._anonymousElements = []; this.headerBytes = null; this.records = null; @@ -40,8 +45,159 @@ export default class MatNode extends ContainerNode { get displayName() { return this.name; } + // Saved by serializeSource (MatFileWriter), so a file is read-only only when no save of it + // can be written: opened without its records, its bytes handed away since, its records not + // tiling it, or its subsystem not where its header says (_fileRefusal). get readOnly() { - return true; + return this._fileRefusal() !== null; + } + // Every edit sets it (BaseNode._markSourceDirty, and this class's own add and remove), so it + // is where what the gate found of the tree as it was is forgotten (_editRefusal). + get dirty() { + return this._dirty; + } + set dirty(value) { + this._dirty = value; + this._valueVerdicts.clear(); + this._nameCounts = null; + } + // ---- The edits a save of this file can write ---------------------------------------------- + // + // The editor takes no edit a save of this file would then refuse (MatFileWriter), so that none + // is made that cannot be kept: the baseline is that no edit taken is one a save then refuses, + // or writes as something else. One rule, this one, asked by every path an edit takes + // (BaseNode.sourceEditRefusal): the editors of the table and of the Property Inspector + // (BaseNode.getPropInfo, nameEditable, valueEditable, descriptionEditable), the gates of a + // child added or removed (DataNode._encodedReadOnly), each class's setter + // (DataNode._refuseEncodedEdit, DataNode's rename), and the session's editProperty. Built of the + // writer's own refusals (unsavableRefusal, structureRefusal, freshRefusal, PAST_SUBSYSTEM, + // duplicateWhy), so that the two cannot come to disagree. + /** + * Why an edit of `key` at `node`, which is `entry` or a node under it, is refused, as a + * message naming the variable or the file, or null where a save of this file writes it. + * `key` is 'Name' for `node`'s own name, and a property's key for anything else: 'Value' + * for a value typed in, a child added or removed, and an element's or a field's edit. + * + * - every edit, of a file no save of which can be written (_fileRefusal), its variables' + * delete and the addition of one included (execRemoveEntry, execAddEntry); + * - every edit of a variable stored after the subsystem, its name included: MATLAB does + * not read it there, and moved, what MATLAB loads would change. It can be deleted; + * - a variable's own name: taken, and written as its record with the name replaced; + * - anything else, which writes the variable fresh: refused where the writer refuses that + * (freshRefusal: an object's typed node, a string, a function handle, a value not + * decoded, and a variable holding one at any depth), or where another variable of the + * file has its name; + * - and Add ('Add', MatlabVariableNode.canAddChild) on a struct that is not 1x1 or is an + * element of one, which is written, but not as the tree shows it. Add gives a struct a + * field row of its own: the rows of a struct array are its elements, so the row was an + * element of no fields the save did not write; a 0x0 struct's field was written with no + * element to hold it, which reads back as no field; and a field added to one element of + * a struct array is written into every element, as MATLAB adds one, `[]` in the others, + * which the tree did not show. + * + * Phase 2 of the MAT-file save widens the last of these, for the properties of an object it + * writes into the subsystem. + */ + _editRefusal(entry, node, key) { + const file = this._fileRefusal(); + if (file) { + return file; + } + const record = this.recordOf(entry); + const subsystem = this._subsystemRecord(); + if (record && subsystem && record.offset > subsystem.offset) { + return cannotEdit(entry.name, PAST_SUBSYSTEM); + } + if (node === entry && (key === 'Name' || key === 'name')) { + return null; + } + let verdict = this._valueVerdicts.get(entry); + if (verdict === undefined) { + const refused = freshRefusal(entry, record); + verdict = refused + ? editRefusalOf(refused) + : this._namespaceHolds(entry.name) > 1 + ? cannotEdit(entry.name, duplicateWhy(entry.name)) + : null; + this._valueVerdicts.set(entry, verdict); + } + if (!verdict && key === 'Add') { + const array = [node, node.parent].find((n) => isStruct(n) && n._dims.reduce((a, b) => a * b, 1) !== 1); + if (array) { + return cannotEdit(entry.name, array.matlabPath + ' is a ' + array._dims.join('x') + ' struct, whose fields a save writes into every element of it or none, ' + + 'and Add gives one struct a field of its own'); + } + } + return verdict; + } + /** + * Why `value`, a node built of the text an edit typed in for `node`, of `entry`, cannot be + * written into this file, or null where it can: a string, which MatWriter has no MAT class + * for. Asked of the edit before it is made (MatlabVariableNode.setProperty), so that a value + * that would leave the variable one a save refuses (freshRefusal) is never taken. + */ + _valueRefusal(entry, node, value) { + const unwritable = unwritableIn(value); + if (!unwritable) { + return null; + } + const is = unwritable.path === value.matlabPath ? ' would be ' : ' would hold '; + return cannotEdit(entry.name, (node.matlabPath || entry.name) + is + unwritable.what + ', which this package cannot write into a MAT-file'); + } + /** + * Why `node`, a variable of this file, cannot be renamed, or null where it can: its record is not + * one whole element whose name a save can replace (MatFileWriter.renameWhy), which only a damaged + * file holds. Asked by the rename itself (DataNode.setProperty) and not by the editability + * getters, as finding out inflates the record: a rename refused so is refused before it is made. + */ + _renameRefusal(node) { + const record = this.recordOf(node); + const why = record ? renameWhy(record) : null; + return why ? cannotEdit(node.name, why) : null; + } + /** Why no edit of this file is taken, or null (unsavableRefusal, structureRefusal). */ + _fileRefusal() { + // A host that hands the bytes away empties every view of them at once, the header's + // first, so a verdict of none is asked again only once that happened. + const gone = this.headerBytes !== null && this.headerBytes.byteLength !== 128; + if (this._fileVerdict === undefined || (gone && this._fileVerdict === null)) { + const refused = unsavableRefusal(this) ?? structureRefusal(this, this.records, this._subsystemRecord()); + this._fileVerdict = refused ? editRefusalOf(refused) : null; + } + return this._fileVerdict; + } + /** The subsystem's record (MatFileWriter.subsystemOf), found once: the records never change. */ + _subsystemRecord() { + if (this._subsystem === undefined) { + this._subsystem = this.records ? subsystemOf(this, this.records) : null; + } + return this._subsystem; + } + /** + * How many variables of the file a save writes under `name`: the variables in the tree, and + * each record that became none (one the reader dropped) under its own name, as a save writes + * it (MatFileWriter.refuseDuplicates). A rename into a name another holds is refused for it + * (DataNode.setProperty), naming this file (_namespaceLabel). + */ + _namespaceHolds(name) { + if (!this._nameCounts) { + const counts = new Map(); + const add = (n) => counts.set(n, (counts.get(n) ?? 0) + 1); + for (const child of this.children) { + add(child.name); + } + for (const record of this.records ?? []) { + if (record.name && !this.nodeOf(record)) { + add(record.name); + } + } + this._nameCounts = counts; + } + return this._nameCounts.get(name) ?? 0; + } + /** Where a rename into a name already held is said to collide (DataNode.setProperty): this file. */ + get _namespaceLabel() { + return basenameOf(this.name) || this.name; } // The format an out-of-process host is told this source is, since SourceDTO carries // this field and nothing else in the projection names the format. One value, unlike @@ -70,7 +226,18 @@ export default class MatNode extends ContainerNode { getSection() { return null; } - execAddEntry(_className, entryName) { + // A new variable is the double 0, named `entryName`, or `var` with a counter appended if that + // is taken. The only class it takes is a plain variable's: a save writes no object (freshRefusal). + // Null, adding nothing, for a file no save of which can be written (_fileRefusal), for any other + // class, and for a name that is no MATLAB name or one the file holds already, by the rule a rename + // is held to: a save would refuse each. + execAddEntry(className, entryName) { + if (this._fileRefusal() || (className && !PLAIN_VARIABLE_CLASSES.has(className))) { + return null; + } + if (entryName && (validateMatlabName(entryName) || this._namespaceHolds(entryName) > 0)) { + return null; + } const name = entryName || this._uniqueName('var'); const node = MatlabVariableNode.createDefault(name, this); this.addChild(node); @@ -87,20 +254,22 @@ export default class MatNode extends ContainerNode { }, }; } + // Not a name any variable of the file holds, a record the reader dropped included (_namespaceHolds). _uniqueName(baseName) { - const names = new Set(this.children.map((c) => c.name)); - if (!names.has(baseName)) { + if (this._namespaceHolds(baseName) === 0) { return baseName; } let i = 1; - while (names.has(baseName + i)) { + while (this._namespaceHolds(baseName + i) > 0) { i++; } return baseName + i; } + // A delete is written by any save, of any variable, one stored after the subsystem and an object + // included; refused only in a file no save of which can be written (_fileRefusal). execRemoveEntry(node) { const index = this.children.indexOf(node); - if (index < 0) { + if (index < 0 || this._fileRefusal()) { return null; } this.removeChild(node); @@ -225,6 +394,20 @@ export default class MatNode extends ContainerNode { } } } +// The classes a variable added to a file may be asked for as (execAddEntry): none, the one a +// dictionary's plain variable is added as, and a double's. +const PLAIN_VARIABLE_CLASSES = new Set(['MatlabVariable', 'double']); +// A refusal of the writer's, `Cannot save "f.mat": …. Nothing was written.`, as the editor says +// it of an edit it does not take: `Cannot edit "f.mat": ….` +function editRefusalOf(e) { + return e.message.replace(/^Cannot (?:save|write) /, 'Cannot edit ').replace(/ Nothing was written\.$/, ''); +} +function isStruct(node) { + return node instanceof MatlabVariableNode && node._kind === 'scalar' && node._scalarType === 'struct'; +} +function cannotEdit(name, why) { + return 'Cannot edit "' + name + '": ' + why + '.'; +} // The records of `parsed` a save can splice, or null: none for a host's parse that carries // none, and none for one whose header or records are not byte views as long as they say, // which no reader of this package hands over. Views are told by ArrayBuffer.isView, which diff --git a/dist/datamodel/node/container/MatNode.js.map b/dist/datamodel/node/container/MatNode.js.map index 541f42a8..b4a9c999 100644 --- a/dist/datamodel/node/container/MatNode.js.map +++ b/dist/datamodel/node/container/MatNode.js.map @@ -1 +1 @@ -{"version":3,"file":"MatNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/container/MatNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"MatNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/container/MatNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/node/data/MatlabVariableNode.d.ts b/dist/datamodel/node/data/MatlabVariableNode.d.ts index 787c6fdd..4c449cdd 100644 --- a/dist/datamodel/node/data/MatlabVariableNode.d.ts +++ b/dist/datamodel/node/data/MatlabVariableNode.d.ts @@ -198,6 +198,17 @@ export default class MatlabVariableNode extends DataNode { _streamHolder(): MatlabVariableNode | null; /** The refusal of a Value edit at or under a value read from a MAT stream, or null (_streamHolder). */ _refuseStreamEdit(stringValue: string): SetPropertyResult | null; + /** + * The refusal of `parsed`, typed in as this node's value, by a source that could not write + * what it makes of it, or null. A MAT-file's save writes no string, and writes a variable + * holding one only as it was read (MatNode._valueRefusal, MatFileWriter.freshRefusal), so a + * `"abc"` typed in, or a `{1, "abc"}`, would make a variable no save could write: it is refused + * here, before the edit, which a source that writes it (a dictionary) never asks. + * + * Judged of a node made of the text alone (_applyParsed, as the edit applies it), so that a + * refused edit leaves this one, its entry and its file as they were. + */ + _refuseUnwritableValue(parsed: ParsedValue, stringValue: string): SetPropertyResult | null; /** * The refusal of a Value edit by the value this one is part of, or null. Asked of the nearest * node above this one that is not a struct, so that a field of a struct, at any depth and in diff --git a/dist/datamodel/node/data/MatlabVariableNode.d.ts.map b/dist/datamodel/node/data/MatlabVariableNode.d.ts.map index de451abc..15d34ef0 100644 --- a/dist/datamodel/node/data/MatlabVariableNode.d.ts.map +++ b/dist/datamodel/node/data/MatlabVariableNode.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"MatlabVariableNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/data/MatlabVariableNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"MatlabVariableNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/data/MatlabVariableNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/node/data/MatlabVariableNode.js b/dist/datamodel/node/data/MatlabVariableNode.js index 02686321..57432cb3 100644 --- a/dist/datamodel/node/data/MatlabVariableNode.js +++ b/dist/datamodel/node/data/MatlabVariableNode.js @@ -1,6 +1,7 @@ // Copyright 2026 The MathWorks, Inc. import DataNode, { newFieldName } from '../DataNode.js'; import { matlabVariableKind } from '../../kindMap.js'; +import { encodedHolderOf, sourceEditRefusal } from '../BaseNode.js'; import { addChildUndoable, removeChildUndoable } from '../childEdit.js'; import * as NodeRegistry from '../NodeRegistry.js'; import { OBJECT_ICON } from '../icons.js'; @@ -395,7 +396,8 @@ export default class MatlabVariableNode extends DataNode { get nameEditable() { // Inside a value still in its encoded stream, the names are part of the stream; the // node holding the stream keeps its own (BaseNode.nameEditable says the same). - if (this._encodedReadOnly && !this._encoded) { + const holder = encodedHolderOf(this); + if (holder && holder !== this) { return false; } if (this.parent && this.parent instanceof MatlabVariableNode) { @@ -405,7 +407,9 @@ export default class MatlabVariableNode extends DataNode { if (this.parent?.isObjectPropertyBag) { return false; } - return true; + // Nor a name its source would not write: a MAT-file's variable stored after its subsystem + // (BaseNode.sourceEditRefusal). + return !sourceEditRefusal(this, 'Name'); } get valueEditable() { if (this._isOpaque) { @@ -1031,6 +1035,12 @@ export default class MatlabVariableNode extends DataNode { if (holderRefusal) { return holderRefusal; } + // And the file it is in may have no way to write what the text makes: a MAT-file holds no + // string this package writes (_refuseUnwritableValue). + const unwritableRefusal = this._refuseUnwritableValue(parsed, stringValue); + if (unwritableRefusal) { + return unwritableRefusal; + } this._applyParsed(parsed); this._markModified(); // _applyParsed rebuilds this node's children from the text, so restating a @@ -1117,6 +1127,34 @@ export default class MatlabVariableNode extends DataNode { validValue: this.displayValue, }; } + /** + * The refusal of `parsed`, typed in as this node's value, by a source that could not write + * what it makes of it, or null. A MAT-file's save writes no string, and writes a variable + * holding one only as it was read (MatNode._valueRefusal, MatFileWriter.freshRefusal), so a + * `"abc"` typed in, or a `{1, "abc"}`, would make a variable no save could write: it is refused + * here, before the edit, which a source that writes it (a dictionary) never asks. + * + * Judged of a node made of the text alone (_applyParsed, as the edit applies it), so that a + * refused edit leaves this one, its entry and its file as they were. + */ + _refuseUnwritableValue(parsed, stringValue) { + let entry = this; + let source = this.parent; + while (source && !source.isContainer) { + entry = source; + source = source.parent; + } + const refuse = source + ?._valueRefusal; + if (typeof refuse !== 'function') { + return null; + } + const value = new MatlabVariableNode(this.name, null, {}); + value._scalarType = this._scalarType; + value._applyParsed(parsed); + const refused = refuse.call(source, entry, this, value); + return refused ? { error: true, reason: refused, invalidValue: stringValue, validValue: this.displayValue } : null; + } /** * The refusal of a Value edit by the value this one is part of, or null. Asked of the nearest * node above this one that is not a struct, so that a field of a struct, at any depth and in @@ -1667,9 +1705,11 @@ export default class MatlabVariableNode extends DataNode { return false; } // Nor where what holds the value refuses the one Add would leave: in a Simulink.Parameter's - // Value, MATLAB's rules for it (DataNode._structuralRefusal, the ruling A2). + // Value, MATLAB's rules for it (DataNode._structuralRefusal, the ruling A2). Nor where the + // file it is in would not write the row as it shows: a MAT-file's struct array + // (BaseNode.sourceEditRefusal, MatNode._editRefusal). if (this._kind === 'scalar' && this._scalarType === 'struct') { - return !this._structuralRefusal('add'); + return !this._structuralRefusal('add') && !sourceEditRefusal(this, 'Add'); } if (this._kind === 'scalar') { return false; diff --git a/dist/datamodel/node/data/MatlabVariableNode.js.map b/dist/datamodel/node/data/MatlabVariableNode.js.map index 7505cb6c..a029292c 100644 --- a/dist/datamodel/node/data/MatlabVariableNode.js.map +++ b/dist/datamodel/node/data/MatlabVariableNode.js.map @@ -1 +1 @@ -{"version":3,"file":"MatlabVariableNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/data/MatlabVariableNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"MatlabVariableNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/data/MatlabVariableNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/parser/MatFileWriter.d.ts b/dist/datamodel/parser/MatFileWriter.d.ts index 71ea55b5..43ee977c 100644 --- a/dist/datamodel/parser/MatFileWriter.d.ts +++ b/dist/datamodel/parser/MatFileWriter.d.ts @@ -1,3 +1,6 @@ +import type { MatRecord } from './MatParser.js'; +import { MatWriteError } from './MatWriter.js'; +import type BaseNode from '../node/BaseNode.js'; import type MatNode from '../node/container/MatNode.js'; /** * The bytes of the MAT-file `matNode` is, as it stands now: what was edited written fresh, @@ -6,4 +9,60 @@ import type MatNode from '../node/container/MatNode.js'; * never hands back bytes that did not read back as planned. */ export declare function serializeMatFile(matNode: MatNode): Uint8Array; +/** + * The refusal of every save of `matNode`, an unedited one included, or null: a tree opened + * without the records a save writes back, one whose bytes the host has since handed away, and + * a file whose records do not tile it. Asked first by serializeMatFile, and by the editor, which + * takes no edit of a file no save can write (MatNode._editRefusal). + */ +export declare function unsavableRefusal(matNode: MatNode): MatWriteError | null; +export declare function subsystemOf(matNode: MatNode, records: MatRecord[]): MatRecord | null; +/** Why the edit of a variable stored after the subsystem is refused (planOf, and the editor's gate). */ +export declare const PAST_SUBSYSTEM: string; +/** + * The refusal of a save of a file with an unnamed record that is not its subsystem, or whose + * header puts its subsystem where no unnamed record starts, or null: such a save cannot place + * what it writes where MATLAB reads it. Measured against MATLAB R2027a, MATLAB lists no variable + * past the first unnamed record, and a header offset that is not the subsystem's fails the whole + * load. Asked only of a save that changes the file: one that does not hands back the bytes it was + * read from. So the editor asks it of every edit (MatNode._editRefusal). + */ +export declare function structureRefusal(matNode: MatNode, records: MatRecord[], subsystem: MatRecord | null): MatWriteError | null; +/** Why a variable is not written under `name`, which another variable of the file has (refuseDuplicates, and the editor's gate). */ +export declare function duplicateWhy(name: string): string; +/** + * Why the variable read from `record` cannot be renamed, or null where it can: its record is not + * one whole element whose name can be replaced (elementOfRecord, MatWriter.elementNamed), which a + * record MATLAB writes always is. Asked by renamedOf, and by a rename before it is made + * (MatNode._renameRefusal), once a record: the records never change, and asking inflates one. + */ +export declare function renameWhy(record: MatRecord): string | null; +/** + * The refusal a save throws for writing `node` fresh, the variable `record` became or one added + * since (no record), or null where nothing about what it is refuses it: what an edit of anything + * of it but its own name asks of a save. A name that is no MATLAB name by the rule a rename is + * held to; a variable that was not a plain value, or whose node is a typed object's (freshOf); one + * holding what this writer cannot write at any depth (unwritableIn); one with no form at all, a + * container none of whose elements could be read (_heldNone) or a size that is no count + * (_refuseNoSize). + * + * One rule for freshOf, which throws it, and for the editor, which takes no edit a save would + * refuse so (MatNode._editRefusal): the two cannot come to disagree. What it does not judge is + * what only the value's bytes say, MatWriter's budget among them, which freshElement meets. + */ +export declare function freshRefusal(node: BaseNode, record: MatRecord | null): MatWriteError | null; +/** + * The first node at or under `at` that MatWriter cannot write as what it is (the rule of + * MatlabVariableNode._matWritable), with its MATLAB path and what it is, or null for none. Asked + * by freshRefusal, and by the editor of a value about to be typed in (MatNode._valueRefusal). + * + * A container the node ceiling built without its rows (_cutByCeiling) is written as the variable + * it was read as (MatlabVariableNode._var), so that variable is what is asked of it, and not its + * rows, which _matWritable would find none of to refuse: a cell of function handles, cut, said + * nothing, and its edit was refused by MatWriter at the save. + */ +export declare function unwritableIn(at: BaseNode): { + path: string; + what: string; +} | null; //# sourceMappingURL=MatFileWriter.d.ts.map \ No newline at end of file diff --git a/dist/datamodel/parser/MatFileWriter.d.ts.map b/dist/datamodel/parser/MatFileWriter.d.ts.map index b2be7652..b479823d 100644 --- a/dist/datamodel/parser/MatFileWriter.d.ts.map +++ b/dist/datamodel/parser/MatFileWriter.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"MatFileWriter.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/MatFileWriter.ts"],"names":[],"mappings":"AAyDA,OAAO,KAAK,OAAO,MAAM,8BAA8B,CAAC;AAMxD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,CAwC7D"} \ No newline at end of file +{"version":3,"file":"MatFileWriter.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/MatFileWriter.ts"],"names":[],"mappings":"AAuDA,OAAO,KAAK,EAAE,SAAS,EAA0B,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAkB,aAAa,EAAgD,MAAM,gBAAgB,CAAC;AAK7G,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAEhD,OAAO,KAAK,OAAO,MAAM,8BAA8B,CAAC;AAMxD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,CAuB7D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,GAAG,IAAI,CA6BvE;AAsBD,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,SAAS,GAAG,IAAI,CAKpF;AAgED,wGAAwG;AACxG,eAAO,MAAM,cAAc,QAEmC,CAAC;AAE/D;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,GAAG,aAAa,GAAG,IAAI,CAmB1H;AAkBD,oIAAoI;AACpI,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAmCD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAQ1D;AA0BD;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,GAAG,aAAa,GAAG,IAAI,CA4B3F;AAoDD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAOhF"} \ No newline at end of file diff --git a/dist/datamodel/parser/MatFileWriter.js b/dist/datamodel/parser/MatFileWriter.js index acf4fdb1..026460c2 100644 --- a/dist/datamodel/parser/MatFileWriter.js +++ b/dist/datamodel/parser/MatFileWriter.js @@ -43,6 +43,12 @@ // opened without them. And before the bytes are handed back they are read again, and a record // that does not read back as planned refuses the save as well (selfCheck), as does one that breaks // a rule MATLAB loads a file by that the file it was read from did not break (MatFileCheck). +// +// The editor takes none of the edits refused for what a variable is or where it stands: its gate +// (MatNode._editRefusal) is built of the refusals exported here (unsavableRefusal, +// structureRefusal, freshRefusal, renameWhy, PAST_SUBSYSTEM, duplicateWhy), so that an edit it takes +// is one a save writes, and the two cannot come to disagree. What is left to refuse at the save is +// what only a value's bytes say: MatWriter's budget, and the two checks of what was written. import { zlibSync } from 'fflate'; import { inflateZlib } from './Inflate.js'; import { parseMat, functionHandleOf } from './MatParser.js'; @@ -59,45 +65,64 @@ const MI_COMPRESSED = 15; * never hands back bytes that did not read back as planned. */ export function serializeMatFile(matNode) { + const file = matNode.name; + const unsavable = unsavableRefusal(matNode); + if (unsavable) { + throw unsavable; + } + const records = matNode.records; + const headerBytes = matNode.headerBytes; + const subsystem = subsystemOf(matNode, records); + const plan = planOf(matNode, records, subsystem); + // Nothing deleted, renamed, edited or added: the file, as it was read. + if (plan.length === records.length && plan.every((p, i) => p.kind === 'verbatim' && p.record === records[i])) { + return concat([headerBytes, ...records.map((r) => r.bytes)]); + } + const structure = structureRefusal(matNode, records, subsystem); + if (structure) { + throw structure; + } + const assembled = assemble(headerBytes, plan, subsystem); + selfCheck(file, assembled.bytes, plan, assembled, headerBytes); + refuseWorse(file, assembled.bytes, plan, headerBytes, records); + return assembled.bytes; +} +/** + * The refusal of every save of `matNode`, an unedited one included, or null: a tree opened + * without the records a save writes back, one whose bytes the host has since handed away, and + * a file whose records do not tile it. Asked first by serializeMatFile, and by the editor, which + * takes no edit of a file no save can write (MatNode._editRefusal). + */ +export function unsavableRefusal(matNode) { const file = matNode.name; const { records, headerBytes } = matNode; if (!records || !headerBytes) { - throw new MatWriteError('Cannot save "' + file + '": it was opened without the records a save writes back, so a save would lose every one ' + return new MatWriteError('Cannot save "' + file + '": it was opened without the records a save writes back, so a save would lose every one ' + 'this package did not read. Nothing was written.'); } // The records are views of the bytes the file was read from, which a host that transfers // them to a worker afterwards empties: what was not edited would be written as nothing. const gone = headerBytes.byteLength !== 128 ? { offset: 0, length: 128, bytes: headerBytes } : records.find((r) => r.bytes.byteLength !== r.length); if (gone) { - throw new MatWriteError('Cannot save "' + file + '": the bytes it was read from are no longer held (the ' + (gone.offset === 0 ? 'header' : 'record at byte ' + gone.offset) + return new MatWriteError('Cannot save "' + file + '": the bytes it was read from are no longer held (the ' + (gone.offset === 0 ? 'header' : 'record at byte ' + gone.offset) + ' holds ' + gone.bytes.byteLength + ' of its ' + gone.length + '), so what was not edited could not be written as it was. ' + 'Nothing was written.'); } if (!matNode.framed) { const at = matNode.unframed?.at ?? 128; const unframedBytes = headerBytes.buffer.byteLength - headerBytes.byteOffset - at; - throw new MatWriteError('Cannot save "' + file + '": this package could not frame ' + unframedBytes + ' byte(s) of it, from byte ' + at + return new MatWriteError('Cannot save "' + file + '": this package could not frame ' + unframedBytes + ' byte(s) of it, from byte ' + at + (matNode.unframed ? ' (' + matNode.unframed.reason + ')' : '') + ', so a save could not keep them as they are. Nothing was written.'); } - const subsystem = subsystemOf(matNode, records); - const plan = planOf(matNode, records, subsystem); - // Nothing deleted, renamed, edited or added: the file, as it was read. - if (plan.length === records.length && plan.every((p, i) => p.kind === 'verbatim' && p.record === records[i])) { - return concat([headerBytes, ...records.map((r) => r.bytes)]); - } - refuseStructure(matNode, records, subsystem); - const assembled = assemble(headerBytes, plan, subsystem); - selfCheck(file, assembled.bytes, plan, assembled, headerBytes); - refuseWorse(file, assembled.bytes, plan, headerBytes, records); - return assembled.bytes; + return null; } // The record `matNode`'s header says its subsystem starts at, or null when it says there is none, -// or names a byte where no unnamed record starts (refuseStructure). By offset, and not by which +// or names a byte where no unnamed record starts (structureRefusal). By offset, and not by which // record has no name: a matrix too short for its own flags reads as unnamed too. And unnamed, // because a variable the header points at is a variable, whose edit is written or refused as // any other's, and not passed over as the subsystem it is not. -function subsystemOf(matNode, records) { +export function subsystemOf(matNode, records) { if (matNode.subsystemOffset === 0) { return null; } @@ -139,8 +164,7 @@ function planOf(matNode, records, subsystem) { plan.push({ kind: 'verbatim', record }); } else if (pastSubsystem) { - throw refusal(node.name, 'it is stored after the file\'s objects, where MATLAB does not read it, so it would not be read written there, ' - + 'and moved, it would change what MATLAB loads of the file'); + throw refusal(node.name, PAST_SUBSYSTEM); } else if (edit === 'name') { plan.push(renamedOf(node, record)); @@ -167,25 +191,32 @@ function editOf(node, record) { } return node.name !== record.name ? 'name' : 'none'; } -// A save of a file with an unnamed record that is not its subsystem, or whose header puts its -// subsystem where no unnamed record starts, cannot place what it writes where MATLAB reads it: -// measured against MATLAB R2027a, MATLAB lists no variable past the first unnamed record, and a -// header offset that is not the subsystem's fails the whole load. Asked only of a save that -// changes the file: one that does not hands back the bytes it was read from. -function refuseStructure(matNode, records, subsystem) { +/** Why the edit of a variable stored after the subsystem is refused (planOf, and the editor's gate). */ +export const PAST_SUBSYSTEM = "it is stored after the file's objects, where MATLAB does not read it, so it would not be read written there, " + + 'and moved, it would change what MATLAB loads of the file'; +/** + * The refusal of a save of a file with an unnamed record that is not its subsystem, or whose + * header puts its subsystem where no unnamed record starts, or null: such a save cannot place + * what it writes where MATLAB reads it. Measured against MATLAB R2027a, MATLAB lists no variable + * past the first unnamed record, and a header offset that is not the subsystem's fails the whole + * load. Asked only of a save that changes the file: one that does not hands back the bytes it was + * read from. So the editor asks it of every edit (MatNode._editRefusal). + */ +export function structureRefusal(matNode, records, subsystem) { const file = matNode.name; const offset = matNode.subsystemOffset; if (offset !== 0 && !subsystem) { - throw new MatWriteError('Cannot save "' + file + '": its header places the file\'s objects at byte ' + offset + ', where ' + return new MatWriteError('Cannot save "' + file + '": its header places the file\'s objects at byte ' + offset + ', where ' + (records.some((r) => r.offset === offset) ? 'a variable is' : 'no record starts') + ', so a save cannot say where they are. ' + 'Nothing was written.'); } const stray = records.find((r) => r.anonymous && r !== subsystem); if (stray) { - throw new MatWriteError('Cannot save "' + file + '": the record at byte ' + stray.offset + ' holds a value with no name that is not the ' + return new MatWriteError('Cannot save "' + file + '": the record at byte ' + stray.offset + ' holds a value with no name that is not the ' + 'file\'s objects, and MATLAB reads no variable past one, so a save cannot place an edit where MATLAB reads it. ' + 'Nothing was written.'); } + return null; } // Two records of one name: MATLAB loads one of them (measured against MATLAB R2027a: `load f` // keeps the last, `load f x` the first). A file that holds two keeps them, as it was read; a @@ -198,10 +229,14 @@ function refuseDuplicates(plan) { } for (const p of plan) { if (p.kind !== 'verbatim' && count.get(p.name) > 1) { - throw refusal(p.name, 'the file holds another variable named "' + p.name + '", and MATLAB loads only one of them'); + throw refusal(p.name, duplicateWhy(p.name)); } } } +/** Why a variable is not written under `name`, which another variable of the file has (refuseDuplicates, and the editor's gate). */ +export function duplicateWhy(name) { + return 'the file holds another variable named "' + name + '", and MATLAB loads only one of them'; +} // The refusal of a save for variable `name`, worded as every refused write is (MatWriter's // budgetFailure, DataNode's): the variable, why, and that nothing was written. function refusal(name, why) { @@ -224,13 +259,29 @@ function refuseName(name) { function renamedOf(node, record) { const name = node.name; refuseName(name); - const element = elementOfRecord(record); - const named = element ? elementNamed(element, name) : null; - if (!named) { - throw refusal(name, 'the record it was read from, at byte ' + record.offset + ', is not a whole element whose name can be replaced, so it cannot be renamed'); + const why = renameWhy(record); + if (why) { + throw refusal(name, why); } + const named = elementNamed(elementOfRecord(record), name); return { kind: 'renamed', record, name, bytes: recordBytes(named, record.compressed) }; } +/** + * Why the variable read from `record` cannot be renamed, or null where it can: its record is not + * one whole element whose name can be replaced (elementOfRecord, MatWriter.elementNamed), which a + * record MATLAB writes always is. Asked by renamedOf, and by a rename before it is made + * (MatNode._renameRefusal), once a record: the records never change, and asking inflates one. + */ +export function renameWhy(record) { + let can = renamable.get(record); + if (can === undefined) { + const element = elementOfRecord(record); + can = !!element && elementNamed(element, '') !== null; + renamable.set(record, can); + } + return can ? null : 'the record it was read from, at byte ' + record.offset + ', is not a whole element whose name can be replaced, so it cannot be renamed'; +} +const renamable = new WeakMap(); // The record of a value written fresh: `node`'s, an edited variable read from `record` or one // added since, named, and compressed when the file holds any compressed record, so that a `-v6` // file, which holds none and is readable by every MATLAB, stays one. @@ -241,19 +292,60 @@ function renamedOf(node, record) { // the record's own bytes, which are the only thing it could write, are no longer the value. function freshOf(node, record, compress) { const name = node.name; - refuseName(name); - const was = record?.variable ? notPlain(record.variable) : null; - const value = valueNodeOf(node); - if (was || !value) { - const what = was ?? classPhrase(String(node.className || 'object')); - throw refusal(name, 'it is ' + what + ', which a MAT-file save writes only as it was read, or renamed, so its edit cannot be saved'); + const refused = freshRefusal(node, record); + if (refused) { + throw refused; } + const value = valueNodeOf(node); const named = elementNamed(freshElement(value), name); if (!named) { throw refusal(name, 'the element written for it has no name to replace'); } return { kind: 'fresh', record, node: value, name, bytes: recordBytes(named, compress) }; } +/** + * The refusal a save throws for writing `node` fresh, the variable `record` became or one added + * since (no record), or null where nothing about what it is refuses it: what an edit of anything + * of it but its own name asks of a save. A name that is no MATLAB name by the rule a rename is + * held to; a variable that was not a plain value, or whose node is a typed object's (freshOf); one + * holding what this writer cannot write at any depth (unwritableIn); one with no form at all, a + * container none of whose elements could be read (_heldNone) or a size that is no count + * (_refuseNoSize). + * + * One rule for freshOf, which throws it, and for the editor, which takes no edit a save would + * refuse so (MatNode._editRefusal): the two cannot come to disagree. What it does not judge is + * what only the value's bytes say, MatWriter's budget among them, which freshElement meets. + */ +export function freshRefusal(node, record) { + const name = node.name; + const nameError = validateMatlabName(name); + if (nameError) { + return refusal(name, 'it is not a name MATLAB can load (' + nameError + ')'); + } + const was = record?.variable ? notPlain(record.variable) : null; + const value = valueNodeOf(node); + if (was || !value) { + const what = was ?? classPhrase(String(node.className || 'object')); + return refusal(name, 'it is ' + what + ', which a MAT-file save writes only as it was read, or renamed, so its edit cannot be saved'); + } + const unwritable = unwritableIn(value); + if (unwritable) { + return refusal(name, unwritable.path + ' is ' + unwritable.what + ', which this package cannot write into a MAT-file'); + } + if (value._heldNone()) { + return value._heldNoneRefusal(); + } + try { + value._refuseNoSize(); + } + catch (e) { + if (e instanceof MatWriteError) { + return e; + } + throw e; + } + return null; +} // `node` as the node of a plain MATLAB value, or null for a node of another class: a typed // object's (a ParameterNode, a BusNode). Asked of what the node does rather than of its class, // which this layer does not import (test/moduleBoundaries): a MatlabVariableNode, and only it, @@ -278,20 +370,10 @@ function notPlain(v) { // The miMATRIX element `node`'s value is, with the empty name a stream's value has: the stream it // is written as in a dictionary (_matStream), which writes a sparse array no element row edited // and a struct array with no element rows as the bytes they were read from, and anything else as -// MatWriter writes it. Refused, naming what in it this writer cannot write, when it holds what -// MatWriter has no variable for or would write as what it is not (_matWritable): an object, a -// string, a function handle, a value not decoded. And refused, finally, as a dictionary's save -// refuses it, for a value with no form at all (_heldNone, _refuseNoSize) or past MatWriter's -// budget, restated naming the variable (_budgetFailure). +// MatWriter writes it, once freshRefusal has found nothing in it this writer cannot write. Refused +// as a dictionary's save refuses it past MatWriter's budget, restated naming the variable +// (_budgetFailure), and for any other refusal of MatWriter's. function freshElement(node) { - const unwritable = unwritableIn(node); - if (unwritable) { - throw refusal(node.name, unwritable.path + ' is ' + unwritable.what + ', which this package cannot write into a MAT-file'); - } - if (node._heldNone()) { - throw node._heldNoneRefusal(); - } - node._refuseNoSize(); const stream = node._matStream(); if (stream) { return stream.subarray(8); @@ -312,16 +394,29 @@ function freshElement(node) { } throw refusal(node.name, 'no MAT element could be written for it'); } -// The first node at or under `node` that MatWriter cannot write as what it is (the rule of -// MatlabVariableNode._matWritable), with its MATLAB path and what it is, or null for none. -function unwritableIn(at) { +/** + * The first node at or under `at` that MatWriter cannot write as what it is (the rule of + * MatlabVariableNode._matWritable), with its MATLAB path and what it is, or null for none. Asked + * by freshRefusal, and by the editor of a value about to be typed in (MatNode._valueRefusal). + * + * A container the node ceiling built without its rows (_cutByCeiling) is written as the variable + * it was read as (MatlabVariableNode._var), so that variable is what is asked of it, and not its + * rows, which _matWritable would find none of to refuse: a cell of function handles, cut, said + * nothing, and its edit was refused by MatWriter at the save. + */ +export function unwritableIn(at) { + const found = unwritableAt(at); + if (found) { + return found; + } + const node = valueNodeOf(at); + return node._matWritable() ? null : { path: node.matlabPath, what: 'a value MatWriter has no variable for' }; +} +function unwritableAt(at) { const node = valueNodeOf(at); if (!node) { return { path: at.matlabPath, what: classPhrase(String(at.className || 'object')) }; } - if (node._matWritable()) { - return null; - } if (node._isOpaque) { return { path: node.matlabPath, what: classPhrase(node._opaqueClassName || 'object') }; } @@ -331,13 +426,53 @@ function unwritableIn(at) { if (node._scalarType === 'string' || node._scalarType === 'function_handle') { return { path: node.matlabPath, what: node._scalarType === 'string' ? 'a string' : 'a function handle' }; } - for (const child of node.children) { - const below = unwritableIn(child); - if (below) { - return below; + if (node._cutByCeiling && node._matVar) { + return notPlainIn(node._matVar, node.matlabPath); + } + // Only a cell and a struct hold values of their own: an array's rows are its elements. + if (node._kind === 'cell' || node._scalarType === 'struct') { + for (const child of node.children) { + const below = unwritableAt(child); + if (below) { + return below; + } + } + } + return null; +} +// The first member at or under the variable `v`, at `path`, that is not a plain MATLAB value +// (notPlain), with its path, or null: the members of a cell and the fields of a struct, at any +// depth, as MatParser holds them. +function notPlainIn(v, path) { + if (!v) { + return null; + } + const what = notPlain(v); + if (what) { + return { path, what }; + } + if (v.className === 'cell') { + const members = flatValues(v.value); + for (let i = 0; i < members.length; i++) { + const below = notPlainIn(members[i], path + '{' + (i + 1) + '}'); + if (below) { + return below; + } } } - return { path: node.matlabPath, what: 'a value MatWriter has no variable for' }; + if (v.className === 'struct' && v.fields) { + for (const name of Object.keys(v.fields)) { + const held = v.fields[name]; + const elements = Array.isArray(held) ? held : [held]; + for (let e = 0; e < elements.length; e++) { + const below = notPlainIn(elements[e], path + (Array.isArray(held) ? '(' + (e + 1) + ')' : '') + '.' + name); + if (below) { + return below; + } + } + } + } + return null; } // The miMATRIX element a record holds: its own bytes for a plain one, its payload inflated for a // compressed one. Null when there is no whole element, or bytes after it: a record that is not diff --git a/dist/datamodel/parser/MatFileWriter.js.map b/dist/datamodel/parser/MatFileWriter.js.map index fb3ad877..be5866df 100644 --- a/dist/datamodel/parser/MatFileWriter.js.map +++ b/dist/datamodel/parser/MatFileWriter.js.map @@ -1 +1 @@ -{"version":3,"file":"MatFileWriter.js","sourceRoot":"","sources":["../../../src/datamodel/parser/MatFileWriter.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"MatFileWriter.js","sourceRoot":"","sources":["../../../src/datamodel/parser/MatFileWriter.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/core/DataModel.ts b/src/core/DataModel.ts index f4863e34..d58844ab 100644 --- a/src/core/DataModel.ts +++ b/src/core/DataModel.ts @@ -30,7 +30,7 @@ import type { ParseWarning } from '../datamodel/parser/ParseWarning.js'; // a field of NodeUsage breaks the one line that installs the resolver — see UsageResolver. import type { RowData, UsageResolver, TypeLinkResolver } from '../datamodel/node/BaseNode.js'; import RowCellPool from '../datamodel/node/RowCellPool.js'; -import { propNamed } from '../datamodel/node/BaseNode.js'; +import { propNamed, sourceEditRefusal } from '../datamodel/node/BaseNode.js'; import type BaseNode from '../datamodel/node/BaseNode.js'; import { holdersRestorer } from '../datamodel/node/childEdit.js'; @@ -1750,6 +1750,21 @@ function editProperty( if (typeof newValue === 'string' && newValue === priorValue) { return true; } + // An edit the node's source would not write is refused before any setter is asked + // (BaseNode.sourceEditRefusal): a MAT-file's object, say, takes a rename and nothing else. + // Every setter asks the same rule (DataNode._refuseEncodedEdit); this is for one that does + // not, of a class a file can hold. + const prop = propNamed(node.getProperties(), propertyName); + const isName = propertyName === 'Name' || prop?.key === 'Name'; + const refused = sourceEditRefusal(node as unknown as BaseNode, isName ? 'Name' : prop?.key ?? propertyName); + if (refused) { + return { + error: true, + reason: refused, + invalidValue: String(newValue), + validValue: isName ? node.name : typeof priorValue === 'string' ? priorValue : node.displayValue, + }; + } // Unless the node can put the value back itself, which the undo then has it do: the text // it shows is not always its value (an empty's `[ ]` is a 0x0 double, whatever it was). const restore = propertyRestorer(node, propertyName); @@ -1808,14 +1823,18 @@ function editProperty( // entry is named `entryName`, or the class's default name, with a counter appended if // that name is taken. Returns null, and adds nothing and records no undo step, when // there is no active dictionary, no section takes the class, or the name is not one -// MATLAB can load (see SectionNode.addEntry): the same rule a rename applies. +// MATLAB can load (see SectionNode.addEntry): the same rule a rename applies. A MAT-file +// takes a plain variable, the double 0 named `var` (MatNode.execAddEntry), and nothing its +// save could not write. function addEntry(sectionKey: string, className: string, entryName?: string): INode | null { const slddNode = getActiveSlddNode(); if (!slddNode) { return null; } - let section: IContainerNode | null = slddNode.getSection(sectionKey); + // A MAT-file has no sections: its variables are its own children, so it takes the entry + // itself, whatever `sectionKey` says (MatNode.execAddEntry: a plain variable, `0`). + let section: IContainerNode | null = slddNode instanceof MatNode ? slddNode : slddNode.getSection(sectionKey); if (!section) { // When at root (sectionKey='sldd'), find the section that accepts this className for (const child of slddNode.children) { diff --git a/src/datamodel/node/BaseNode.ts b/src/datamodel/node/BaseNode.ts index 2df2cbf1..07734cbd 100644 --- a/src/datamodel/node/BaseNode.ts +++ b/src/datamodel/node/BaseNode.ts @@ -187,6 +187,33 @@ export function encodedHolderOf(node: BaseNode | null | undefined): BaseNode | n return null; } +/** + * Why the source `node` is in refuses an edit of `key` at `node`, in words, or null where it + * takes it. `key` is 'Name' for the node's own name, and the property's key for anything else, + * 'Value' for a child added or removed. + * + * A source answers for itself, through the first container above the node, which an entry is a + * child of: a MAT-file, whose save writes only some edits (MatNode._editRefusal). A dictionary's + * section and a model's do not answer, and take every edit their nodes take. Asked by every + * editability getter below, by the structural gates (DataNode._encodedReadOnly), by the setters + * (DataNode._refuseEncodedEdit, the rename) and by the session's editProperty, so that what the + * table offers and what an edit is taken for are one answer. Duck-typed, as encodedHolderOf is: + * this class imports no container. + */ +export function sourceEditRefusal(node: BaseNode, key: string): string | null { + let entry: BaseNode | null = null; + let n: BaseNode | null = node; + while (n && !(n as unknown as { isContainer?: boolean }).isContainer) { + entry = n; + n = n.parent; + } + const refuse = (n as unknown as { _editRefusal?: SourceEditRefusal } | null)?._editRefusal; + return entry && typeof refuse === 'function' ? refuse.call(n, entry, node, key) : null; +} + +/** A source's answer to sourceEditRefusal, for `node`, which is `entry` or a node under it. */ +export type SourceEditRefusal = (entry: BaseNode, node: BaseNode, key: string) => string | null; + /** * The prop in `props` that an edit naming `name` is an edit of: the one whose key or column is * `name`, which is how an edit committed in the 'Value' column reaches the atom that owns it (a @@ -320,7 +347,8 @@ export default class BaseNode { if (this.parent?.fixesChildNames) { return false; } - return true; + // Nor a name its source would not write (sourceEditRefusal). + return !sourceEditRefusal(this, 'Name'); } // Called on a node after a structural edit added or removed a child of `child` @@ -627,7 +655,8 @@ export default class BaseNode { if (v && v.charAt(0) === '<' && v.charAt(v.length - 1) === '>') { return false; } - return true; + // Nor a value its source would not write (sourceEditRefusal). + return !sourceEditRefusal(this, 'Value'); } // Whether a Description typed onto this row could be SAVED — the third member of the @@ -645,7 +674,7 @@ export default class BaseNode { // Parameter whose value displays as a `<1x12 double>` summary takes no value editor // and can still be described. get descriptionEditable(): boolean { - return !encodedHolderOf(this); + return !encodedHolderOf(this) && !sourceEditRefusal(this, 'Description'); } getPropInfo(PropClassRef: PropClass): PropInfo { @@ -679,6 +708,12 @@ export default class BaseNode { if (key !== 'Name' && encodedHolderOf(this)) { editable = false; } + // And any its source would not write (sourceEditRefusal), the Name included: asked last, + // and only of a property every rule above leaves editable, as it is the one that walks to + // the source. + if (editable && sourceEditRefusal(this, key)) { + editable = false; + } return { key, diff --git a/src/datamodel/node/DataNode.ts b/src/datamodel/node/DataNode.ts index 27838c6f..a5d4e3a4 100644 --- a/src/datamodel/node/DataNode.ts +++ b/src/datamodel/node/DataNode.ts @@ -1,6 +1,6 @@ // Copyright 2026 The MathWorks, Inc. -import BaseNode, { encodedHolderOf, propNamed } from './BaseNode.js'; +import BaseNode, { encodedHolderOf, propNamed, sourceEditRefusal } from './BaseNode.js'; import type { PropClass } from './BaseNode.js'; import type { ChildAddEdit, ChildUndoRedo } from './childEdit.js'; import { trySetSchemaProperty } from './schemaBridge.js'; @@ -524,14 +524,24 @@ export default class DataNode extends BaseNode { typeof nsHolds === 'function' ? stringValue !== this.name && nsHolds.call(this.parent, stringValue) > 0 : this.parent.children.some((sibling) => sibling !== this && sibling.name === stringValue); + // Said of where the names are one namespace: a dictionary's Design and Architectural + // Data, or a MAT-file, which names itself (MatNode._namespaceLabel). if (duplicate) { + const where = (this.parent as unknown as { _namespaceLabel?: string })._namespaceLabel ?? 'Design or Architectural Data'; return { error: true, - reason: "'" + stringValue + "' already exists in Design or Architectural Data", + reason: "'" + stringValue + "' already exists in " + where, invalidValue: stringValue, validValue: this.name, }; } + // And a name the parent could not write: a MAT-file's variable whose record is not one + // whole element, whose name its save has nowhere to put (MatNode._renameRefusal). + const renameRefusal = (this.parent as unknown as { _renameRefusal?: (node: BaseNode) => string | null })._renameRefusal; + const refused = typeof renameRefusal === 'function' ? renameRefusal.call(this.parent, this) : null; + if (refused) { + return { error: true, reason: refused, invalidValue: stringValue, validValue: this.name }; + } } const oldName = this.name; this.name = stringValue; @@ -1236,30 +1246,40 @@ export default class DataNode extends BaseNode { } /** - * Is this node at or under one whose value is still an encoded stream? The structural - * gates (canAddChild, canRemoveChild) of every class that has them ask this, for the - * reason _refuseEncodedEdit gives: a child added or removed there could not reach the file. + * Is this node at or under one whose value is still an encoded stream, or one whose source + * would not write a change to it (BaseNode.sourceEditRefusal: a MAT-file's object, say)? The + * structural gates (canAddChild, canRemoveChild) of every class that has them ask this, for + * the reason _refuseEncodedEdit gives: a child added or removed there could not reach the file. */ get _encodedReadOnly(): boolean { - return !!encodedHolderOf(this); + return !!encodedHolderOf(this) || !!sourceEditRefusal(this, 'Value'); } + /** + * The refusal of an edit of `propName` at or under a value still in the encoded stream it was + * read from, but for the holder's own name, or of one this node's source would not write + * (BaseNode.sourceEditRefusal), in its words; null where the edit may go ahead. Asked first by + * the setter of every class that has one, so that no setter takes what the table offers no + * editor for. + */ _refuseEncodedEdit(propName: string, stringValue: string): SetPropertyResult | null { + const isName = this._resolveProperty(propName) === 'name'; const holder = encodedHolderOf(this); - if (!holder) { - return null; + if (holder && !(holder === this && isName)) { + return { + error: true, + reason: + `'${holder.displayName}' is stored as an encoded MATLAB value that this editor can show but not write, ` + + 'so it is read-only.', + invalidValue: stringValue, + validValue: isName ? this.name : this.displayValue, + }; } - if (holder === this && this._resolveProperty(propName) === 'name') { - return null; + const refused = sourceEditRefusal(this, isName ? 'Name' : this._propFor(propName)?.key ?? propName); + if (refused) { + return { error: true, reason: refused, invalidValue: stringValue, validValue: isName ? this.name : this.displayValue }; } - return { - error: true, - reason: - `'${holder.displayName}' is stored as an encoded MATLAB value that this editor can show but not write, ` + - 'so it is read-only.', - invalidValue: stringValue, - validValue: this._resolveProperty(propName) === 'name' ? this.name : this.displayValue, - }; + return null; } /** diff --git a/src/datamodel/node/container/MatNode.ts b/src/datamodel/node/container/MatNode.ts index b3310736..a0b08aac 100644 --- a/src/datamodel/node/container/MatNode.ts +++ b/src/datamodel/node/container/MatNode.ts @@ -14,6 +14,19 @@ import type { MatRecord, ParsedMat } from '../../parser/MatParser.js'; import PropName from '../../prop/PropName.js'; import { MAT_NODE_CEILING } from '../../display/DisplayConvention.js'; import { buildUnderCeiling, buildUncut, chargeNodes } from '../data/matNodeCeiling.js'; +import { + PAST_SUBSYSTEM, + duplicateWhy, + freshRefusal, + renameWhy, + structureRefusal, + subsystemOf, + unsavableRefusal, + unwritableIn, +} from '../../parser/MatFileWriter.js'; +import type { MatWriteError } from '../../parser/MatWriter.js'; +import { validateMatlabName } from '../../matlabName.js'; +import { basenameOf } from '../../fileKinds.js'; // What MatNode.fromParsed builds a tree from: a parse of this package's (ParsedMat), or a // host's, whose parse may be an older one's, without the records a save splices. @@ -22,7 +35,7 @@ export type MatParse = Pick & export default class MatNode extends ContainerNode { header: string; - dirty: boolean; + _dirty: boolean; _anonymousElements: MatVariable[]; // The file as a save splices it (ParsedMat's fields of the same names): its header's 128 // bytes, every record in it, the subsystem's offset, and whether the records are the file. @@ -44,11 +57,22 @@ export default class MatNode extends ContainerNode { // node back. So a record's node, in the tree or not, is what became of the record. _recordNodes: Map; _nodeRecords: Map; + // What the gate of the editor (_editRefusal) has found, kept until the next edit: the + // refusal of the file as a whole (undefined until asked), the subsystem's record, the + // refusal of each variable's value, and how many variables hold each name. Every edit + // marks the file dirty, and setting `dirty` forgets all but the first two, which no edit + // changes. + _fileVerdict: string | null | undefined; + _subsystem: MatRecord | null | undefined; + _valueVerdicts: Map; + _nameCounts: Map | null; constructor(name: string) { super(name, null); this.header = ''; - this.dirty = false; + this._dirty = false; + this._valueVerdicts = new Map(); + this._nameCounts = null; this._anonymousElements = []; this.headerBytes = null; this.records = null; @@ -80,8 +104,172 @@ export default class MatNode extends ContainerNode { return this.name; } + // Saved by serializeSource (MatFileWriter), so a file is read-only only when no save of it + // can be written: opened without its records, its bytes handed away since, its records not + // tiling it, or its subsystem not where its header says (_fileRefusal). get readOnly(): boolean { - return true; + return this._fileRefusal() !== null; + } + + // Every edit sets it (BaseNode._markSourceDirty, and this class's own add and remove), so it + // is where what the gate found of the tree as it was is forgotten (_editRefusal). + get dirty(): boolean { + return this._dirty; + } + + set dirty(value: boolean) { + this._dirty = value; + this._valueVerdicts.clear(); + this._nameCounts = null; + } + + // ---- The edits a save of this file can write ---------------------------------------------- + // + // The editor takes no edit a save of this file would then refuse (MatFileWriter), so that none + // is made that cannot be kept: the baseline is that no edit taken is one a save then refuses, + // or writes as something else. One rule, this one, asked by every path an edit takes + // (BaseNode.sourceEditRefusal): the editors of the table and of the Property Inspector + // (BaseNode.getPropInfo, nameEditable, valueEditable, descriptionEditable), the gates of a + // child added or removed (DataNode._encodedReadOnly), each class's setter + // (DataNode._refuseEncodedEdit, DataNode's rename), and the session's editProperty. Built of the + // writer's own refusals (unsavableRefusal, structureRefusal, freshRefusal, PAST_SUBSYSTEM, + // duplicateWhy), so that the two cannot come to disagree. + + /** + * Why an edit of `key` at `node`, which is `entry` or a node under it, is refused, as a + * message naming the variable or the file, or null where a save of this file writes it. + * `key` is 'Name' for `node`'s own name, and a property's key for anything else: 'Value' + * for a value typed in, a child added or removed, and an element's or a field's edit. + * + * - every edit, of a file no save of which can be written (_fileRefusal), its variables' + * delete and the addition of one included (execRemoveEntry, execAddEntry); + * - every edit of a variable stored after the subsystem, its name included: MATLAB does + * not read it there, and moved, what MATLAB loads would change. It can be deleted; + * - a variable's own name: taken, and written as its record with the name replaced; + * - anything else, which writes the variable fresh: refused where the writer refuses that + * (freshRefusal: an object's typed node, a string, a function handle, a value not + * decoded, and a variable holding one at any depth), or where another variable of the + * file has its name; + * - and Add ('Add', MatlabVariableNode.canAddChild) on a struct that is not 1x1 or is an + * element of one, which is written, but not as the tree shows it. Add gives a struct a + * field row of its own: the rows of a struct array are its elements, so the row was an + * element of no fields the save did not write; a 0x0 struct's field was written with no + * element to hold it, which reads back as no field; and a field added to one element of + * a struct array is written into every element, as MATLAB adds one, `[]` in the others, + * which the tree did not show. + * + * Phase 2 of the MAT-file save widens the last of these, for the properties of an object it + * writes into the subsystem. + */ + _editRefusal(entry: BaseNode, node: BaseNode, key: string): string | null { + const file = this._fileRefusal(); + if (file) { + return file; + } + const record = this.recordOf(entry); + const subsystem = this._subsystemRecord(); + if (record && subsystem && record.offset > subsystem.offset) { + return cannotEdit(entry.name, PAST_SUBSYSTEM); + } + if (node === entry && (key === 'Name' || key === 'name')) { + return null; + } + let verdict = this._valueVerdicts.get(entry); + if (verdict === undefined) { + const refused = freshRefusal(entry, record); + verdict = refused + ? editRefusalOf(refused) + : this._namespaceHolds(entry.name) > 1 + ? cannotEdit(entry.name, duplicateWhy(entry.name)) + : null; + this._valueVerdicts.set(entry, verdict); + } + if (!verdict && key === 'Add') { + const array = [node, node.parent].find((n) => isStruct(n) && n._dims.reduce((a, b) => a * b, 1) !== 1) as MatlabVariableNode | undefined; + if (array) { + return cannotEdit( + entry.name, + array.matlabPath + ' is a ' + array._dims.join('x') + ' struct, whose fields a save writes into every element of it or none, ' + + 'and Add gives one struct a field of its own', + ); + } + } + return verdict; + } + + /** + * Why `value`, a node built of the text an edit typed in for `node`, of `entry`, cannot be + * written into this file, or null where it can: a string, which MatWriter has no MAT class + * for. Asked of the edit before it is made (MatlabVariableNode.setProperty), so that a value + * that would leave the variable one a save refuses (freshRefusal) is never taken. + */ + _valueRefusal(entry: BaseNode, node: BaseNode, value: BaseNode): string | null { + const unwritable = unwritableIn(value); + if (!unwritable) { + return null; + } + const is = unwritable.path === value.matlabPath ? ' would be ' : ' would hold '; + return cannotEdit(entry.name, (node.matlabPath || entry.name) + is + unwritable.what + ', which this package cannot write into a MAT-file'); + } + + /** + * Why `node`, a variable of this file, cannot be renamed, or null where it can: its record is not + * one whole element whose name a save can replace (MatFileWriter.renameWhy), which only a damaged + * file holds. Asked by the rename itself (DataNode.setProperty) and not by the editability + * getters, as finding out inflates the record: a rename refused so is refused before it is made. + */ + _renameRefusal(node: BaseNode): string | null { + const record = this.recordOf(node); + const why = record ? renameWhy(record) : null; + return why ? cannotEdit(node.name, why) : null; + } + + /** Why no edit of this file is taken, or null (unsavableRefusal, structureRefusal). */ + _fileRefusal(): string | null { + // A host that hands the bytes away empties every view of them at once, the header's + // first, so a verdict of none is asked again only once that happened. + const gone = this.headerBytes !== null && this.headerBytes.byteLength !== 128; + if (this._fileVerdict === undefined || (gone && this._fileVerdict === null)) { + const refused = unsavableRefusal(this) ?? structureRefusal(this, this.records!, this._subsystemRecord()); + this._fileVerdict = refused ? editRefusalOf(refused) : null; + } + return this._fileVerdict; + } + + /** The subsystem's record (MatFileWriter.subsystemOf), found once: the records never change. */ + _subsystemRecord(): MatRecord | null { + if (this._subsystem === undefined) { + this._subsystem = this.records ? subsystemOf(this, this.records) : null; + } + return this._subsystem; + } + + /** + * How many variables of the file a save writes under `name`: the variables in the tree, and + * each record that became none (one the reader dropped) under its own name, as a save writes + * it (MatFileWriter.refuseDuplicates). A rename into a name another holds is refused for it + * (DataNode.setProperty), naming this file (_namespaceLabel). + */ + _namespaceHolds(name: string): number { + if (!this._nameCounts) { + const counts = new Map(); + const add = (n: string) => counts.set(n, (counts.get(n) ?? 0) + 1); + for (const child of this.children) { + add(child.name); + } + for (const record of this.records ?? []) { + if (record.name && !this.nodeOf(record)) { + add(record.name); + } + } + this._nameCounts = counts; + } + return this._nameCounts.get(name) ?? 0; + } + + /** Where a rename into a name already held is said to collide (DataNode.setProperty): this file. */ + get _namespaceLabel(): string { + return basenameOf(this.name) || this.name; } // The format an out-of-process host is told this source is, since SourceDTO carries @@ -117,7 +305,18 @@ export default class MatNode extends ContainerNode { return null; } - execAddEntry(_className?: string, entryName?: string): { node: BaseNode; undo: () => void; redo: () => void } { + // A new variable is the double 0, named `entryName`, or `var` with a counter appended if that + // is taken. The only class it takes is a plain variable's: a save writes no object (freshRefusal). + // Null, adding nothing, for a file no save of which can be written (_fileRefusal), for any other + // class, and for a name that is no MATLAB name or one the file holds already, by the rule a rename + // is held to: a save would refuse each. + execAddEntry(className?: string, entryName?: string): { node: BaseNode; undo: () => void; redo: () => void } | null { + if (this._fileRefusal() || (className && !PLAIN_VARIABLE_CLASSES.has(className))) { + return null; + } + if (entryName && (validateMatlabName(entryName) || this._namespaceHolds(entryName) > 0)) { + return null; + } const name = entryName || this._uniqueName('var'); const node = MatlabVariableNode.createDefault(name, this); this.addChild(node); @@ -135,21 +334,23 @@ export default class MatNode extends ContainerNode { }; } + // Not a name any variable of the file holds, a record the reader dropped included (_namespaceHolds). _uniqueName(baseName: string): string { - const names = new Set(this.children.map((c) => c.name)); - if (!names.has(baseName)) { + if (this._namespaceHolds(baseName) === 0) { return baseName; } let i = 1; - while (names.has(baseName + i)) { + while (this._namespaceHolds(baseName + i) > 0) { i++; } return baseName + i; } + // A delete is written by any save, of any variable, one stored after the subsystem and an object + // included; refused only in a file no save of which can be written (_fileRefusal). execRemoveEntry(node: BaseNode): { undo: () => void; redo: () => void } | null { const index = this.children.indexOf(node); - if (index < 0) { + if (index < 0 || this._fileRefusal()) { return null; } this.removeChild(node); @@ -286,6 +487,24 @@ export default class MatNode extends ContainerNode { } } +// The classes a variable added to a file may be asked for as (execAddEntry): none, the one a +// dictionary's plain variable is added as, and a double's. +const PLAIN_VARIABLE_CLASSES = new Set(['MatlabVariable', 'double']); + +// A refusal of the writer's, `Cannot save "f.mat": …. Nothing was written.`, as the editor says +// it of an edit it does not take: `Cannot edit "f.mat": ….` +function editRefusalOf(e: MatWriteError): string { + return e.message.replace(/^Cannot (?:save|write) /, 'Cannot edit ').replace(/ Nothing was written\.$/, ''); +} + +function isStruct(node: BaseNode | null): node is MatlabVariableNode { + return node instanceof MatlabVariableNode && node._kind === 'scalar' && node._scalarType === 'struct'; +} + +function cannotEdit(name: string, why: string): string { + return 'Cannot edit "' + name + '": ' + why + '.'; +} + // The records of `parsed` a save can splice, or null: none for a host's parse that carries // none, and none for one whose header or records are not byte views as long as they say, // which no reader of this package hands over. Views are told by ArrayBuffer.isView, which diff --git a/src/datamodel/node/data/MatlabVariableNode.ts b/src/datamodel/node/data/MatlabVariableNode.ts index 4a5552b6..33b54ce4 100644 --- a/src/datamodel/node/data/MatlabVariableNode.ts +++ b/src/datamodel/node/data/MatlabVariableNode.ts @@ -5,6 +5,7 @@ import type { SetPropertyResult, ValueShape } from '../DataNode.js'; import { matlabVariableKind } from '../../kindMap.js'; import type { PropClass, MatlabVariableKind } from '../BaseNode.js'; import type BaseNode from '../BaseNode.js'; +import { encodedHolderOf, sourceEditRefusal } from '../BaseNode.js'; import { addChildUndoable, removeChildUndoable } from '../childEdit.js'; import type { ChildAddEdit, ChildUndoRedo } from '../childEdit.js'; import * as NodeRegistry from '../NodeRegistry.js'; @@ -610,7 +611,8 @@ export default class MatlabVariableNode extends DataNode { get nameEditable(): boolean { // Inside a value still in its encoded stream, the names are part of the stream; the // node holding the stream keeps its own (BaseNode.nameEditable says the same). - if (this._encodedReadOnly && !this._encoded) { + const holder = encodedHolderOf(this); + if (holder && holder !== this) { return false; } if (this.parent && this.parent instanceof MatlabVariableNode) { @@ -620,7 +622,9 @@ export default class MatlabVariableNode extends DataNode { if (this.parent?.isObjectPropertyBag) { return false; } - return true; + // Nor a name its source would not write: a MAT-file's variable stored after its subsystem + // (BaseNode.sourceEditRefusal). + return !sourceEditRefusal(this, 'Name'); } get valueEditable(): boolean { @@ -1271,6 +1275,12 @@ export default class MatlabVariableNode extends DataNode { if (holderRefusal) { return holderRefusal; } + // And the file it is in may have no way to write what the text makes: a MAT-file holds no + // string this package writes (_refuseUnwritableValue). + const unwritableRefusal = this._refuseUnwritableValue(parsed, stringValue); + if (unwritableRefusal) { + return unwritableRefusal; + } this._applyParsed(parsed); this._markModified(); // _applyParsed rebuilds this node's children from the text, so restating a @@ -1361,6 +1371,35 @@ export default class MatlabVariableNode extends DataNode { }; } + /** + * The refusal of `parsed`, typed in as this node's value, by a source that could not write + * what it makes of it, or null. A MAT-file's save writes no string, and writes a variable + * holding one only as it was read (MatNode._valueRefusal, MatFileWriter.freshRefusal), so a + * `"abc"` typed in, or a `{1, "abc"}`, would make a variable no save could write: it is refused + * here, before the edit, which a source that writes it (a dictionary) never asks. + * + * Judged of a node made of the text alone (_applyParsed, as the edit applies it), so that a + * refused edit leaves this one, its entry and its file as they were. + */ + _refuseUnwritableValue(parsed: ParsedValue, stringValue: string): SetPropertyResult | null { + let entry: BaseNode = this; + let source: BaseNode | null = this.parent; + while (source && !(source as unknown as { isContainer?: boolean }).isContainer) { + entry = source; + source = source.parent; + } + const refuse = (source as unknown as { _valueRefusal?: (entry: BaseNode, node: BaseNode, value: BaseNode) => string | null } | null) + ?._valueRefusal; + if (typeof refuse !== 'function') { + return null; + } + const value = new MatlabVariableNode(this.name, null, {}); + value._scalarType = this._scalarType; + value._applyParsed(parsed); + const refused = refuse.call(source, entry, this, value); + return refused ? { error: true, reason: refused, invalidValue: stringValue, validValue: this.displayValue } : null; + } + /** * The refusal of a Value edit by the value this one is part of, or null. Asked of the nearest * node above this one that is not a struct, so that a field of a struct, at any depth and in @@ -1918,9 +1957,11 @@ export default class MatlabVariableNode extends DataNode { return false; } // Nor where what holds the value refuses the one Add would leave: in a Simulink.Parameter's - // Value, MATLAB's rules for it (DataNode._structuralRefusal, the ruling A2). + // Value, MATLAB's rules for it (DataNode._structuralRefusal, the ruling A2). Nor where the + // file it is in would not write the row as it shows: a MAT-file's struct array + // (BaseNode.sourceEditRefusal, MatNode._editRefusal). if (this._kind === 'scalar' && this._scalarType === 'struct') { - return !this._structuralRefusal('add'); + return !this._structuralRefusal('add') && !sourceEditRefusal(this, 'Add'); } if (this._kind === 'scalar') { return false; diff --git a/src/datamodel/parser/MatFileWriter.ts b/src/datamodel/parser/MatFileWriter.ts index 52df7bca..c0769007 100644 --- a/src/datamodel/parser/MatFileWriter.ts +++ b/src/datamodel/parser/MatFileWriter.ts @@ -43,6 +43,12 @@ // opened without them. And before the bytes are handed back they are read again, and a record // that does not read back as planned refuses the save as well (selfCheck), as does one that breaks // a rule MATLAB loads a file by that the file it was read from did not break (MatFileCheck). +// +// The editor takes none of the edits refused for what a variable is or where it stands: its gate +// (MatNode._editRefusal) is built of the refusals exported here (unsavableRefusal, +// structureRefusal, freshRefusal, renameWhy, PAST_SUBSYSTEM, duplicateWhy), so that an edit it takes +// is one a save writes, and the two cannot come to disagree. What is left to refuse at the save is +// what only a value's bytes say: MatWriter's budget, and the two checks of what was written. import { zlibSync } from 'fflate'; import { inflateZlib } from './Inflate.js'; @@ -68,10 +74,41 @@ const MI_COMPRESSED = 15; * never hands back bytes that did not read back as planned. */ export function serializeMatFile(matNode: MatNode): Uint8Array { + const file = matNode.name; + const unsavable = unsavableRefusal(matNode); + if (unsavable) { + throw unsavable; + } + const records = matNode.records!; + const headerBytes = matNode.headerBytes!; + + const subsystem = subsystemOf(matNode, records); + const plan = planOf(matNode, records, subsystem); + // Nothing deleted, renamed, edited or added: the file, as it was read. + if (plan.length === records.length && plan.every((p, i) => p.kind === 'verbatim' && p.record === records[i])) { + return concat([headerBytes, ...records.map((r) => r.bytes)]); + } + const structure = structureRefusal(matNode, records, subsystem); + if (structure) { + throw structure; + } + const assembled = assemble(headerBytes, plan, subsystem); + selfCheck(file, assembled.bytes, plan, assembled, headerBytes); + refuseWorse(file, assembled.bytes, plan, headerBytes, records); + return assembled.bytes; +} + +/** + * The refusal of every save of `matNode`, an unedited one included, or null: a tree opened + * without the records a save writes back, one whose bytes the host has since handed away, and + * a file whose records do not tile it. Asked first by serializeMatFile, and by the editor, which + * takes no edit of a file no save can write (MatNode._editRefusal). + */ +export function unsavableRefusal(matNode: MatNode): MatWriteError | null { const file = matNode.name; const { records, headerBytes } = matNode; if (!records || !headerBytes) { - throw new MatWriteError( + return new MatWriteError( 'Cannot save "' + file + '": it was opened without the records a save writes back, so a save would lose every one ' + 'this package did not read. Nothing was written.', ); @@ -80,7 +117,7 @@ export function serializeMatFile(matNode: MatNode): Uint8Array { // them to a worker afterwards empties: what was not edited would be written as nothing. const gone = headerBytes.byteLength !== 128 ? { offset: 0, length: 128, bytes: headerBytes } : records.find((r) => r.bytes.byteLength !== r.length); if (gone) { - throw new MatWriteError( + return new MatWriteError( 'Cannot save "' + file + '": the bytes it was read from are no longer held (the ' + (gone.offset === 0 ? 'header' : 'record at byte ' + gone.offset) + ' holds ' + gone.bytes.byteLength + ' of its ' + gone.length + '), so what was not edited could not be written as it was. ' + 'Nothing was written.', @@ -89,24 +126,13 @@ export function serializeMatFile(matNode: MatNode): Uint8Array { if (!matNode.framed) { const at = matNode.unframed?.at ?? 128; const unframedBytes = headerBytes.buffer.byteLength - headerBytes.byteOffset - at; - throw new MatWriteError( + return new MatWriteError( 'Cannot save "' + file + '": this package could not frame ' + unframedBytes + ' byte(s) of it, from byte ' + at + (matNode.unframed ? ' (' + matNode.unframed.reason + ')' : '') + ', so a save could not keep them as they are. Nothing was written.', ); } - - const subsystem = subsystemOf(matNode, records); - const plan = planOf(matNode, records, subsystem); - // Nothing deleted, renamed, edited or added: the file, as it was read. - if (plan.length === records.length && plan.every((p, i) => p.kind === 'verbatim' && p.record === records[i])) { - return concat([headerBytes, ...records.map((r) => r.bytes)]); - } - refuseStructure(matNode, records, subsystem); - const assembled = assemble(headerBytes, plan, subsystem); - selfCheck(file, assembled.bytes, plan, assembled, headerBytes); - refuseWorse(file, assembled.bytes, plan, headerBytes, records); - return assembled.bytes; + return null; } // ---- The plan: what each record of the file becomes ----------------------------------------- @@ -125,11 +151,11 @@ type Planned = type Edit = 'none' | 'name' | 'value'; // The record `matNode`'s header says its subsystem starts at, or null when it says there is none, -// or names a byte where no unnamed record starts (refuseStructure). By offset, and not by which +// or names a byte where no unnamed record starts (structureRefusal). By offset, and not by which // record has no name: a matrix too short for its own flags reads as unnamed too. And unnamed, // because a variable the header points at is a variable, whose edit is written or refused as // any other's, and not passed over as the subsystem it is not. -function subsystemOf(matNode: MatNode, records: MatRecord[]): MatRecord | null { +export function subsystemOf(matNode: MatNode, records: MatRecord[]): MatRecord | null { if (matNode.subsystemOffset === 0) { return null; } @@ -171,11 +197,7 @@ function planOf(matNode: MatNode, records: MatRecord[], subsystem: MatRecord | n if (edit === 'none') { plan.push({ kind: 'verbatim', record }); } else if (pastSubsystem) { - throw refusal( - node.name, - 'it is stored after the file\'s objects, where MATLAB does not read it, so it would not be read written there, ' - + 'and moved, it would change what MATLAB loads of the file', - ); + throw refusal(node.name, PAST_SUBSYSTEM); } else if (edit === 'name') { plan.push(renamedOf(node, record)); } else { @@ -202,16 +224,24 @@ function editOf(node: BaseNode, record: MatRecord): Edit { return node.name !== record.name ? 'name' : 'none'; } -// A save of a file with an unnamed record that is not its subsystem, or whose header puts its -// subsystem where no unnamed record starts, cannot place what it writes where MATLAB reads it: -// measured against MATLAB R2027a, MATLAB lists no variable past the first unnamed record, and a -// header offset that is not the subsystem's fails the whole load. Asked only of a save that -// changes the file: one that does not hands back the bytes it was read from. -function refuseStructure(matNode: MatNode, records: MatRecord[], subsystem: MatRecord | null): void { +/** Why the edit of a variable stored after the subsystem is refused (planOf, and the editor's gate). */ +export const PAST_SUBSYSTEM = + "it is stored after the file's objects, where MATLAB does not read it, so it would not be read written there, " + + 'and moved, it would change what MATLAB loads of the file'; + +/** + * The refusal of a save of a file with an unnamed record that is not its subsystem, or whose + * header puts its subsystem where no unnamed record starts, or null: such a save cannot place + * what it writes where MATLAB reads it. Measured against MATLAB R2027a, MATLAB lists no variable + * past the first unnamed record, and a header offset that is not the subsystem's fails the whole + * load. Asked only of a save that changes the file: one that does not hands back the bytes it was + * read from. So the editor asks it of every edit (MatNode._editRefusal). + */ +export function structureRefusal(matNode: MatNode, records: MatRecord[], subsystem: MatRecord | null): MatWriteError | null { const file = matNode.name; const offset = matNode.subsystemOffset; if (offset !== 0 && !subsystem) { - throw new MatWriteError( + return new MatWriteError( 'Cannot save "' + file + '": its header places the file\'s objects at byte ' + offset + ', where ' + (records.some((r) => r.offset === offset) ? 'a variable is' : 'no record starts') + ', so a save cannot say where they are. ' + 'Nothing was written.', @@ -219,12 +249,13 @@ function refuseStructure(matNode: MatNode, records: MatRecord[], subsystem: MatR } const stray = records.find((r) => r.anonymous && r !== subsystem); if (stray) { - throw new MatWriteError( + return new MatWriteError( 'Cannot save "' + file + '": the record at byte ' + stray.offset + ' holds a value with no name that is not the ' + 'file\'s objects, and MATLAB reads no variable past one, so a save cannot place an edit where MATLAB reads it. ' + 'Nothing was written.', ); } + return null; } // Two records of one name: MATLAB loads one of them (measured against MATLAB R2027a: `load f` @@ -238,11 +269,16 @@ function refuseDuplicates(plan: Planned[]): void { } for (const p of plan) { if (p.kind !== 'verbatim' && count.get(p.name)! > 1) { - throw refusal(p.name, 'the file holds another variable named "' + p.name + '", and MATLAB loads only one of them'); + throw refusal(p.name, duplicateWhy(p.name)); } } } +/** Why a variable is not written under `name`, which another variable of the file has (refuseDuplicates, and the editor's gate). */ +export function duplicateWhy(name: string): string { + return 'the file holds another variable named "' + name + '", and MATLAB loads only one of them'; +} + // The refusal of a save for variable `name`, worded as every refused write is (MatWriter's // budgetFailure, DataNode's): the variable, why, and that nothing was written. function refusal(name: string, why: string): MatWriteError { @@ -268,14 +304,32 @@ function refuseName(name: string): void { function renamedOf(node: BaseNode, record: MatRecord): Planned { const name = node.name; refuseName(name); - const element = elementOfRecord(record); - const named = element ? elementNamed(element, name) : null; - if (!named) { - throw refusal(name, 'the record it was read from, at byte ' + record.offset + ', is not a whole element whose name can be replaced, so it cannot be renamed'); + const why = renameWhy(record); + if (why) { + throw refusal(name, why); } + const named = elementNamed(elementOfRecord(record)!, name)!; return { kind: 'renamed', record, name, bytes: recordBytes(named, record.compressed) }; } +/** + * Why the variable read from `record` cannot be renamed, or null where it can: its record is not + * one whole element whose name can be replaced (elementOfRecord, MatWriter.elementNamed), which a + * record MATLAB writes always is. Asked by renamedOf, and by a rename before it is made + * (MatNode._renameRefusal), once a record: the records never change, and asking inflates one. + */ +export function renameWhy(record: MatRecord): string | null { + let can = renamable.get(record); + if (can === undefined) { + const element = elementOfRecord(record); + can = !!element && elementNamed(element, '') !== null; + renamable.set(record, can); + } + return can ? null : 'the record it was read from, at byte ' + record.offset + ', is not a whole element whose name can be replaced, so it cannot be renamed'; +} + +const renamable = new WeakMap(); + // The record of a value written fresh: `node`'s, an edited variable read from `record` or one // added since, named, and compressed when the file holds any compressed record, so that a `-v6` // file, which holds none and is readable by every MATLAB, stays one. @@ -286,13 +340,11 @@ function renamedOf(node: BaseNode, record: MatRecord): Planned { // the record's own bytes, which are the only thing it could write, are no longer the value. function freshOf(node: BaseNode, record: MatRecord | null, compress: boolean): Planned { const name = node.name; - refuseName(name); - const was = record?.variable ? notPlain(record.variable) : null; - const value = valueNodeOf(node); - if (was || !value) { - const what = was ?? classPhrase(String((node as DataNode).className || 'object')); - throw refusal(name, 'it is ' + what + ', which a MAT-file save writes only as it was read, or renamed, so its edit cannot be saved'); + const refused = freshRefusal(node, record); + if (refused) { + throw refused; } + const value = valueNodeOf(node)!; const named = elementNamed(freshElement(value), name); if (!named) { throw refusal(name, 'the element written for it has no name to replace'); @@ -300,6 +352,49 @@ function freshOf(node: BaseNode, record: MatRecord | null, compress: boolean): P return { kind: 'fresh', record, node: value, name, bytes: recordBytes(named, compress) }; } +/** + * The refusal a save throws for writing `node` fresh, the variable `record` became or one added + * since (no record), or null where nothing about what it is refuses it: what an edit of anything + * of it but its own name asks of a save. A name that is no MATLAB name by the rule a rename is + * held to; a variable that was not a plain value, or whose node is a typed object's (freshOf); one + * holding what this writer cannot write at any depth (unwritableIn); one with no form at all, a + * container none of whose elements could be read (_heldNone) or a size that is no count + * (_refuseNoSize). + * + * One rule for freshOf, which throws it, and for the editor, which takes no edit a save would + * refuse so (MatNode._editRefusal): the two cannot come to disagree. What it does not judge is + * what only the value's bytes say, MatWriter's budget among them, which freshElement meets. + */ +export function freshRefusal(node: BaseNode, record: MatRecord | null): MatWriteError | null { + const name = node.name; + const nameError = validateMatlabName(name); + if (nameError) { + return refusal(name, 'it is not a name MATLAB can load (' + nameError + ')'); + } + const was = record?.variable ? notPlain(record.variable) : null; + const value = valueNodeOf(node); + if (was || !value) { + const what = was ?? classPhrase(String((node as DataNode).className || 'object')); + return refusal(name, 'it is ' + what + ', which a MAT-file save writes only as it was read, or renamed, so its edit cannot be saved'); + } + const unwritable = unwritableIn(value); + if (unwritable) { + return refusal(name, unwritable.path + ' is ' + unwritable.what + ', which this package cannot write into a MAT-file'); + } + if (value._heldNone()) { + return value._heldNoneRefusal(); + } + try { + value._refuseNoSize(); + } catch (e) { + if (e instanceof MatWriteError) { + return e; + } + throw e; + } + return null; +} + // `node` as the node of a plain MATLAB value, or null for a node of another class: a typed // object's (a ParameterNode, a BusNode). Asked of what the node does rather than of its class, // which this layer does not import (test/moduleBoundaries): a MatlabVariableNode, and only it, @@ -326,20 +421,10 @@ function notPlain(v: MatVariable): string | null { // The miMATRIX element `node`'s value is, with the empty name a stream's value has: the stream it // is written as in a dictionary (_matStream), which writes a sparse array no element row edited // and a struct array with no element rows as the bytes they were read from, and anything else as -// MatWriter writes it. Refused, naming what in it this writer cannot write, when it holds what -// MatWriter has no variable for or would write as what it is not (_matWritable): an object, a -// string, a function handle, a value not decoded. And refused, finally, as a dictionary's save -// refuses it, for a value with no form at all (_heldNone, _refuseNoSize) or past MatWriter's -// budget, restated naming the variable (_budgetFailure). +// MatWriter writes it, once freshRefusal has found nothing in it this writer cannot write. Refused +// as a dictionary's save refuses it past MatWriter's budget, restated naming the variable +// (_budgetFailure), and for any other refusal of MatWriter's. function freshElement(node: MatlabVariableNode): Uint8Array { - const unwritable = unwritableIn(node); - if (unwritable) { - throw refusal(node.name, unwritable.path + ' is ' + unwritable.what + ', which this package cannot write into a MAT-file'); - } - if (node._heldNone()) { - throw node._heldNoneRefusal(); - } - node._refuseNoSize(); const stream = node._matStream(); if (stream) { return stream.subarray(8); @@ -360,16 +445,30 @@ function freshElement(node: MatlabVariableNode): Uint8Array { throw refusal(node.name, 'no MAT element could be written for it'); } -// The first node at or under `node` that MatWriter cannot write as what it is (the rule of -// MatlabVariableNode._matWritable), with its MATLAB path and what it is, or null for none. -function unwritableIn(at: BaseNode): { path: string; what: string } | null { +/** + * The first node at or under `at` that MatWriter cannot write as what it is (the rule of + * MatlabVariableNode._matWritable), with its MATLAB path and what it is, or null for none. Asked + * by freshRefusal, and by the editor of a value about to be typed in (MatNode._valueRefusal). + * + * A container the node ceiling built without its rows (_cutByCeiling) is written as the variable + * it was read as (MatlabVariableNode._var), so that variable is what is asked of it, and not its + * rows, which _matWritable would find none of to refuse: a cell of function handles, cut, said + * nothing, and its edit was refused by MatWriter at the save. + */ +export function unwritableIn(at: BaseNode): { path: string; what: string } | null { + const found = unwritableAt(at); + if (found) { + return found; + } + const node = valueNodeOf(at)!; + return node._matWritable() ? null : { path: node.matlabPath, what: 'a value MatWriter has no variable for' }; +} + +function unwritableAt(at: BaseNode): { path: string; what: string } | null { const node = valueNodeOf(at); if (!node) { return { path: at.matlabPath, what: classPhrase(String((at as DataNode).className || 'object')) }; } - if (node._matWritable()) { - return null; - } if (node._isOpaque) { return { path: node.matlabPath, what: classPhrase(node._opaqueClassName || 'object') }; } @@ -379,13 +478,54 @@ function unwritableIn(at: BaseNode): { path: string; what: string } | null { if (node._scalarType === 'string' || node._scalarType === 'function_handle') { return { path: node.matlabPath, what: node._scalarType === 'string' ? 'a string' : 'a function handle' }; } - for (const child of node.children) { - const below = unwritableIn(child); - if (below) { - return below; + if (node._cutByCeiling && node._matVar) { + return notPlainIn(node._matVar, node.matlabPath); + } + // Only a cell and a struct hold values of their own: an array's rows are its elements. + if (node._kind === 'cell' || node._scalarType === 'struct') { + for (const child of node.children) { + const below = unwritableAt(child); + if (below) { + return below; + } } } - return { path: node.matlabPath, what: 'a value MatWriter has no variable for' }; + return null; +} + +// The first member at or under the variable `v`, at `path`, that is not a plain MATLAB value +// (notPlain), with its path, or null: the members of a cell and the fields of a struct, at any +// depth, as MatParser holds them. +function notPlainIn(v: MatVariable | null | undefined, path: string): { path: string; what: string } | null { + if (!v) { + return null; + } + const what = notPlain(v); + if (what) { + return { path, what }; + } + if (v.className === 'cell') { + const members = flatValues(v.value) as (MatVariable | null)[]; + for (let i = 0; i < members.length; i++) { + const below = notPlainIn(members[i], path + '{' + (i + 1) + '}'); + if (below) { + return below; + } + } + } + if (v.className === 'struct' && v.fields) { + for (const name of Object.keys(v.fields)) { + const held = v.fields[name]; + const elements = Array.isArray(held) ? held : [held]; + for (let e = 0; e < elements.length; e++) { + const below = notPlainIn(elements[e], path + (Array.isArray(held) ? '(' + (e + 1) + ')' : '') + '.' + name); + if (below) { + return below; + } + } + } + } + return null; } // The miMATRIX element a record holds: its own bytes for a plain one, its payload inflated for a diff --git a/test/complexMcosFixtures.test.ts b/test/complexMcosFixtures.test.ts index 7f1f793c..3b73ef28 100644 --- a/test/complexMcosFixtures.test.ts +++ b/test/complexMcosFixtures.test.ts @@ -416,6 +416,24 @@ const editableIn = (p: unknown): unknown[] => { return seen; }; const withoutEditable = (p: unknown): unknown => JSON.parse(JSON.stringify(p, (k, v) => (EDITABLE_KEYS.has(k) ? undefined : v))); +// And the way the .mat's own may: its save writes an object only as it was read, so every row of +// an object there is shown and not edited (MatNode._editRefusal), where a model workspace and a +// binary dictionary edit it. So what it presents is compared with every editor taken out: the +// flags, the Name and Value cells' own, and an editable column's cell (BaseNode.toRow), which is +// its text when it takes none. +const EDITABILITY_KEYS = new Set(['valueEditable', '_valueEditable', '_descriptionEditable']); +const withoutEditability = (p: unknown): unknown => + JSON.parse( + JSON.stringify(p, (k, v) => { + if (EDITABILITY_KEYS.has(k)) { + return undefined; + } + if (v && typeof v === 'object' && !Array.isArray(v) && 'editable' in v) { + return k === 'Name' || k === 'Value' ? { ...v, editable: undefined } : v.text; + } + return v; + }), + ); describe('every value presents the same in the .mat as in each other venue that holds it', () => { const mat = MAT.variables(); @@ -443,7 +461,7 @@ describe('every value presents the same in the .mat as in each other venue that const a = nodeAt(mat, path); const b = nodeAt(variables, path); const text = fx.file === 'complex.sldd'; - const shown = (n: any) => (text ? withoutEditable(presentation(n, n.displayName)) : presentation(n, n.displayName)); + const shown = (n: any) => withoutEditability(text ? withoutEditable(presentation(n, n.displayName)) : presentation(n, n.displayName)); if (text) { expect(editableIn(presentation(b, b.displayName)), `${path}: a MAT stream, display-only`).not.toContain(true); } diff --git a/test/complexTextWriteBack.test.ts b/test/complexTextWriteBack.test.ts index f43a7862..462fb5f3 100644 --- a/test/complexTextWriteBack.test.ts +++ b/test/complexTextWriteBack.test.ts @@ -146,9 +146,14 @@ describe('an edited complex value keeps its class and its NaN parts', () => { const txt: any = ingest(session, fixture('complex.sldd'), { filename: 'complex.sldd' }); const design = txt.getSection('design'); // Edited before the copy: in the text dictionary the copied Value is a MAT stream, which - // is shown and not edited there (the C-012 ruling, 2026-10-15). + // is shown and not edited there (the C-012 ruling, 2026-10-15). And taken out of the .mat + // to be edited: its save writes an object only as it was read, so the file takes no edit of + // its properties (MatNode._editRefusal); on its own, the node takes it, and is put back to be copied. const source = mat.children.find((e: any) => e.name === name); + expect(source.children[0].children[k].setProperty('Value', typed)).toMatchObject({ error: true }); + mat.removeChild(source); expect(source.children[0].children[k].setProperty('Value', typed)).toBe(true); + mat.addChild(source); const payload: any = JSON.parse(JSON.stringify(source.serialize())); payload.name = name + '_edited'; payload.metadata = { ...design.children[0].metadata, uuid: '00000000-0000-4000-8000-0000000000ff' }; diff --git a/test/matEditGate.test.ts b/test/matEditGate.test.ts new file mode 100644 index 00000000..9d88d2ab --- /dev/null +++ b/test/matEditGate.test.ts @@ -0,0 +1,637 @@ +// Copyright 2026 The MathWorks, Inc. +// +// The edits a `.mat` takes are the edits its save writes (MatNode._editRefusal, the one rule +// BaseNode.sourceEditRefusal asks for every path an edit takes). Swept over every Level-5 fixture +// and MATLAB's verdict corpus, both ways: +// +// - the gate is the writer: for every variable, an edit forced around the gate (its value, its +// name) is refused by the save exactly where the gate refuses it; +// - every cell the editor offers takes an edit, and the save of that edit is written and reads +// back as the tree shows it; every child Add or Delete it offers saves too; +// - every cell it does not offer for the save's sake has no editor anywhere a host looks (the +// table row, the Property Inspector, the DTO, the getters), and its setter refuses it, as do +// the session's editProperty and the structural gates, leaving the file unchanged. +// +// Then each refusal by itself, in its own words, and what a MAT-file's save adds to the session: +// readOnly, addEntry, the rename's duplicate message. + +import { describe, it, expect } from 'vitest'; +import { readFileSync, readdirSync } from 'node:fs'; +import { join } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { MatWriteError } from '../src/datamodel/parser/MatWriter.js'; +import { parseMat } from '../src/datamodel/parser/MatParser.js'; +import { sourceEditRefusal } from '../src/datamodel/node/BaseNode.js'; +import MatNode from '../src/datamodel/node/container/MatNode.js'; +import { toDTO } from '../src/core/dto.js'; +import { createSession } from '../src/index.js'; +import { zlibSync } from 'fflate'; +import { CLASS, matFile, numericVar, u32le } from './tools/matBytes.js'; + +const TEST_ROOT = fileURLToPath(new URL('.', import.meta.url)); +const MAT_CHECK = join(TEST_ROOT, 'fixtures', 'mat-check'); + +function matFilesUnder(dir: string): string[] { + const out: string[] = []; + for (const entry of readdirSync(dir, { withFileTypes: true })) { + const abs = join(dir, entry.name); + if (entry.isDirectory()) { + if (abs !== MAT_CHECK) { + out.push(...matFilesUnder(abs)); + } + } else if (entry.isFile() && entry.name.endsWith('.mat') && entry.name !== 'strings_v73.mat') { + out.push(abs); + } + } + return out.sort(); +} + +const FIXTURES = matFilesUnder(TEST_ROOT); +const shown = (abs: string) => abs.slice(TEST_ROOT.length); + +function arrayBufferOf(bytes: Uint8Array): ArrayBuffer { + return bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength) as ArrayBuffer; +} + +const fileBytes = (abs: string) => arrayBufferOf(new Uint8Array(readFileSync(abs))); +const sameBytes = (a: Uint8Array, b: Uint8Array) => a.byteLength === b.byteLength && a.every((x, i) => x === b[i]); +const scalar = (name: string, value: number) => numericVar({ name, cls: CLASS.DOUBLE, dimensions: [1, 1], real: [value] }); + +/** A MatNode opened through the session, as a host opens one, and what a host does to it. */ +function opened(bytes: ArrayBuffer, name = 'f.mat') { + const session = createSession(); + const root: any = session.addMatSource(name, bytes); + const by = (n: string) => root.children.find((c: any) => c.name === n); + const edit = (node: any, prop: string, value: string) => { + session.setActive(root, node); + return session.editProperty(node.id, prop, value); + }; + const save = (): Uint8Array => (session.serializeSource(name) as { bytes: Uint8Array }).bytes; + return { session, root, by, edit, save }; +} + +/** Every node under `node`, depth first, with its path of child indices from the file. */ +function nodesWithPaths(root: any): { node: any; path: number[] }[] { + const out: { node: any; path: number[] }[] = []; + const walk = (n: any, path: number[]) => { + n.children.forEach((c: any, i: number) => { + out.push({ node: c, path: [...path, i] }); + walk(c, [...path, i]); + }); + }; + walk(root, []); + return out; +} + +const at = (root: any, path: number[]) => path.reduce((n, i) => n?.children[i], root); + +/** + * `nodes` thinned to what a sweep can afford: of the elements of one array, which are one class + * and take one edit, the first two and the last; and of a tree still past 2,500 nodes (the shared + * object graphs, of 30,000), an even stride through it. + */ +function sampled(nodes: T[]): T[] { + const kept = nodes.filter(({ node }) => { + const parent = node.parent; + if (!parent || (parent._kind !== 'array' && parent._kind !== 'string')) { + return true; + } + const i = parent.children.indexOf(node); + return i < 2 || i === parent.children.length - 1; + }); + if (kept.length <= 2500) { + return kept; + } + const stride = Math.ceil(kept.length / 2500); + return kept.filter((_, i) => i % stride === 0); +} + +/** + * What a variable shows, everywhere a value is: each node's label, value and class, by path. Two + * things a save writes as they are and the tree shows otherwise until the file is read again are + * left out of it. A complex part `+0i`: an element of a complex array added or set to a real + * number shows as that number, and reads back as the same element with the imaginary part 0 + * MATLAB gives it (`x(3) = 0` of a complex `x` is `0+0i`). And a sparse array's row set to 0: it + * keeps its row, so that the row still names it (MatlabVariableNode._syncElementFromChild), and a + * zero is no non-zero once read again; the rows of a sparse array are said by their subscripts. + */ +function shownAs(node: any): string[] { + const out: string[] = []; + const walk = (n: any, path: string) => { + out.push(`${path} ${n.displayName} = ${String(n.displayValue).replace(/(\d|Inf|NaN)\+0i/g, '$1')} (${n.className})`); + n.children.forEach((c: any, i: number) => { + if (n._sparse && /^(0|false|0\+0i)$/.test(c.displayValue)) { + return; + } + walk(c, path + '/' + (n._sparse ? c.displayName : i)); + }); + }; + walk(node, ''); + return out; +} + +/** The bytes of a save, read again, and the variable at `entry` there, as it shows. */ +function readBack(bytes: Uint8Array, entry: number): string[] { + const { root } = opened(arrayBufferOf(bytes), 'saved.mat'); + return shownAs(root.children[entry]); +} + +/** The thrown error of `fn`, or null. */ +function thrownBy(fn: () => unknown): Error | null { + try { + fn(); + } catch (e) { + return e as Error; + } + return null; +} + +/** An edit `node` takes for its Value, by what it is, and whether it took it. */ +function valueEdit(edit: (prop: string, value: string) => unknown, node: any): string | null { + const parent = node.parent; + const inArray = parent && parent._kind === 'array'; + const candidates = + inArray && parent._scalarType === 'logical' + ? ['false', 'true'] + : inArray + ? ['7', '8'] + : node.className === 'char' + ? ["'zz'", '7'] + : node._kind === 'cell' + ? ['{7, 8}', '7'] + : node.className === 'logical' + ? ['false', 'true', '7'] + : ['7', '8', "'zz'", '[1 2 3]', '{7}', 'true']; + for (const value of candidates) { + if (value === node.displayValue) { + continue; + } + if (edit('Value', value) === true) { + return value; + } + } + return null; +} + +/** + * Every top-level variable of `bytes`, each with an edit of its value and of its name forced + * around the gate: the save refuses the first exactly where the gate refuses a value edit, and + * the second exactly where it refuses a rename. Answers how many of each were written. + */ +function gateIsWriter(bytes: ArrayBuffer, file: string): { values: number; names: number } { + let values = 0; + let names = 0; + const count = opened(bytes).root.children.length; + for (let i = 0; i < count; i++) { + for (const what of ['value', 'name'] as const) { + const { root, save } = opened(bytes); + const node = root.children[i]; + // A rename is asked of the record too, as the rename itself asks it (MatNode._renameRefusal). + const refused = what === 'name' ? sourceEditRefusal(node, 'Name') ?? root._renameRefusal(node) : sourceEditRefusal(node, 'Value'); + const label = `${file}: ${node.name} (${what})`; + if (what === 'name') { + // A name no variable of the file holds, made around the session's rename. + node.name = 'gateRenamed' + i; + node._markModified('name'); + } else { + node._markModified(); + } + const thrown = thrownBy(save); + if (refused) { + expect(thrown, label + ': the gate refuses it, ' + refused).toBeInstanceOf(MatWriteError); + } else { + expect(thrown?.message, label).toBeUndefined(); + expect(readBack(save(), i), label).toEqual(shownAs(node)); + what === 'name' ? names++ : values++; + } + } + } + return { values, names }; +} + +describe('the gate is the writer: an edit forced around it is refused by the save exactly where it is refused', () => { + const totals = { values: 0, names: 0 }; + for (const file of FIXTURES) { + it(shown(file), { timeout: 60_000 }, () => { + const { values, names } = gateIsWriter(fileBytes(file), shown(file)); + totals.values += values; + totals.names += names; + }); + } + + it("MATLAB's verdict corpus (test/fixtures/mat-check), the files it loads and the ones it does not", { timeout: 60_000 }, () => { + const verdicts: { file: string }[] = JSON.parse(readFileSync(join(MAT_CHECK, 'verdicts.json'), 'utf8')); + let opened = 0; + for (const { file } of verdicts) { + let bytes: ArrayBuffer; + try { + bytes = fileBytes(join(MAT_CHECK, file)); + parseMat(bytes); + } catch { + continue; + } + gateIsWriter(bytes, file); + opened++; + } + expect(opened).toBeGreaterThanOrEqual(60); + }); + + it('writes most variables of the fixtures, fresh and renamed: the gate refuses only what it must', () => { + expect(totals.values).toBeGreaterThanOrEqual(150); + expect(totals.names).toBeGreaterThanOrEqual(300); + }); +}); + +describe('every cell the editor offers takes an edit, and its save reads back as the tree shows it', () => { + for (const file of FIXTURES) { + it(shown(file), { timeout: 60_000 }, () => { + const bytes = fileBytes(file); + const { root: probe } = opened(bytes); + let edits = 0; + for (const { node: seen, path } of sampled(nodesWithPaths(probe))) { + const offered = seen.getProperties().filter((p: any) => seen.getPropInfo(p).editable).map((p: any) => p.key); + for (const key of offered) { + const { root, edit, save } = opened(bytes); + const node = at(root, path); + const label = `${shown(file)}: ${node.matlabPath} ${key}`; + let made: string | null; + if (key === 'Name') { + made = 'cellRenamed' + edits; + expect(edit(node, 'Name', made), label).toBe(true); + } else { + made = valueEdit((prop, value) => edit(node, prop, value), node); + expect(made, label + ': no edit taken').not.toBeNull(); + } + const saved = thrownBy(save); + expect(saved?.message, label + ' = ' + made).toBeUndefined(); + expect(readBack(save(), path[0]), label + ' = ' + made).toEqual(shownAs(root.children[path[0]])); + edits++; + } + for (const op of ['add', 'remove'] as const) { + if (op === 'add' ? !seen.canAddChild() : !(seen.canRemoveChild?.() && seen.children.length > 0)) { + continue; + } + const { session, root, save } = opened(bytes); + const node = at(root, path); + const label = `${shown(file)}: ${node.matlabPath} ${op}`; + if (op === 'add') { + expect(session.addChildTo(node.id), label).not.toBeNull(); + } else { + const last = node.children[node.children.length - 1]; + session.setActive(root, last); + expect(session.deleteNodeById(last.id), label).toBe(true); + } + expect(thrownBy(save)?.message, label).toBeUndefined(); + expect(readBack(save(), path[0]), label).toEqual(shownAs(root.children[path[0]])); + edits++; + } + } + // Every variable can be deleted, and the file saves without it. + for (let i = 0; i < probe.children.length; i++) { + const { session, root, save } = opened(bytes); + const node = root.children[i]; + session.setActive(root, node); + expect(session.deleteNodeById(node.id), node.name).toBe(true); + expect(thrownBy(save)?.message, node.name).toBeUndefined(); + } + if (probe.children.some((c: any) => !sourceEditRefusal(c, 'Value'))) { + expect(edits).toBeGreaterThan(0); + } + }); + } +}); + +describe('every cell the save would refuse has no editor anywhere a host looks, and every path refuses its edit', () => { + for (const file of FIXTURES) { + it(shown(file), { timeout: 60_000 }, () => { + const bytes = fileBytes(file); + const original = new Uint8Array(bytes); + const { session, root, edit, save } = opened(bytes); + let refused = 0; + for (const { node } of sampled(nodesWithPaths(root))) { + const label = `${shown(file)}: ${node.matlabPath}`; + const row = node.toRow(); + const dto = toDTO(node); + // What a host reads is one answer, the getters' and getPropInfo's. + expect(row.Name.editable, label).toBe(node.getPropInfo(node.getProperties().find((p: any) => p.key === 'Name')).editable); + expect(row._valueEditable, label).toBe(node.getProperties().some((p: any) => p.key === 'Value') ? node.getPropInfo(node.getProperties().find((p: any) => p.key === 'Value')).editable : node.valueEditable); + expect(row._descriptionEditable, label).toBe(node.descriptionEditable); + dto.props.forEach((p: any, k: number) => expect(p.editable, label + ' ' + p.key).toBe(node.getPropInfo(node.getProperties()[k]).editable)); + const frozenValue = sourceEditRefusal(node, 'Value'); + const frozenName = sourceEditRefusal(node, 'Name'); + if (frozenName) { + expect([node.nameEditable, row.Name.editable], label).toEqual([false, false]); + const answer: any = edit(node, 'Name', 'refusedName'); + expect(answer, label).toMatchObject({ error: true, reason: frozenName }); + expect(node.setProperty('Name', 'refusedName'), label).toMatchObject({ error: true }); + refused++; + } + if (frozenValue) { + for (const p of node.getProperties()) { + if (p.key !== 'Name') { + expect(node.getPropInfo(p).editable, label + ' ' + p.key).toBe(false); + } + } + expect([node.valueEditable, row._valueEditable, node.descriptionEditable], label).toEqual([false, false, false]); + expect([node.canAddChild(), node.canRemoveChild?.() ?? false], label).toEqual([false, false]); + expect(session.addChildTo(node.id), label).toBeNull(); + for (const value of ['7', "'zz'", '{1}']) { + if (value === node.displayValue) { + continue; + } + expect(edit(node, 'Value', value), label + ' = ' + value).toMatchObject({ error: true }); + expect(node.setProperty('Value', value), label + ' = ' + value).toMatchObject({ error: true }); + } + if (node.parent !== root) { + session.setActive(root, node); + expect(session.deleteNodeById(node.id), label).toBe(false); + } + refused++; + } + } + // Nothing it refused changed the file. + expect(root.dirty).toBe(false); + expect(sameBytes(save(), original)).toBe(true); + if (refused === 0) { + expect(root.children.every((c: any) => !sourceEditRefusal(c, 'Value'))).toBe(true); + } + }); + } +}); + +const CASES = join(TEST_ROOT, 'parity/artifacts/mat/cases.mat'); +const fixture = (rel: string) => fileBytes(join(TEST_ROOT, rel)); + +describe('what each kind of variable of a .mat takes', () => { + const editRefused = (name: string, what: string) => + `Cannot edit "${name}": it is ${what}, which a MAT-file save writes only as it was read, or renamed, so its edit cannot be saved.`; + + it("an object's typed node: renamed and deleted, and nothing else, at any depth", () => { + // ParamMat.mat's Simulink.Parameter holds a 2x3 matrix: a Value row, and a row per element. + const deep = opened(fixture('fixtures/mcos/ParamMat.mat')).root.children[0]; + expect(deep.flatten().length).toBe(8); + for (const node of deep.flatten()) { + const offered = node.getProperties().filter((p: any) => node.getPropInfo(p).editable).map((p: any) => p.key); + expect([offered, node.canAddChild(), node.canRemoveChild?.() ?? false], node.matlabPath).toEqual([node === deep ? ['Name'] : [], false, false]); + } + const { session, root, by, edit, save } = opened(fileBytes(CASES), 'cases.mat'); + const param = by('aParam'); + expect(param.constructor.name).toBe('ParameterNode'); + const under = param.flatten(); + expect(param.nameEditable).toBe(true); + for (const node of under) { + expect(node.getProperties().filter((p: any) => node.getPropInfo(p).editable).map((p: any) => p.key), node.matlabPath).toEqual( + node === param ? ['Name'] : [], + ); + } + // Every property, refused in the save's own words, by the session and by the node. + for (const prop of ['Value', 'Description', 'DataType', 'Min', 'Unit']) { + expect(edit(param, prop, '3'), prop).toEqual({ error: true, reason: editRefused('aParam', 'a Simulink.Parameter'), invalidValue: '3', validValue: expect.any(String) }); + expect(param.setProperty(prop, '3'), prop).toMatchObject({ error: true, reason: editRefused('aParam', 'a Simulink.Parameter') }); + } + expect([param.status, root.dirty]).toEqual(['', false]); + expect(edit(param, 'Name', 'renamedParam')).toBe(true); + expect(readBack(save(), root.children.indexOf(param))).toEqual(shownAs(param)); + session.setActive(root, param); + expect(session.deleteNodeById(param.id)).toBe(true); + expect(opened(arrayBufferOf(save())).by('renamedParam')).toBeUndefined(); + }); + + it('a string, a function handle, a value not decoded: renamed and deleted, their values not edited', () => { + const z = numericVar({ name: 'z', cls: CLASS.DOUBLE, dimensions: [1, 1], real: [3], imag: [4] }); + z[16] = 0xff; + const cases: [ArrayBuffer, string, string][] = [ + [fileBytes(CASES), 'strScalar', 'a string'], + [fixture('fixtures/display/dispcat_opaque.mat'), 'fh_sin', 'a function handle'], + [matFile([scalar('a', 1), z]), 'z', 'a value that was not decoded'], + ]; + for (const [bytes, name, what] of cases) { + const { root, by, edit, save } = opened(bytes); + const node = by(name); + expect([node.nameEditable, node.valueEditable, node.toRow()._valueEditable], name).toEqual([true, false, false]); + expect(edit(node, 'Value', '5'), name).toMatchObject({ error: true }); + expect(node.setProperty('Value', '5'), name).toMatchObject({ error: true }); + expect(sourceEditRefusal(node, 'Value'), name).toBe(editRefused(name, what)); + expect(root.dirty, name).toBe(false); + expect(edit(node, 'Name', name + 'R'), name).toBe(true); + const index = root.children.indexOf(node); + expect(readBack(save(), index), name).toEqual(shownAs(node)); + } + }); + + it('a plain variable holding an object, at any depth: renamed and deleted, nothing in it edited', () => { + const { root, by, edit, save } = opened(fixture('fixtures/mcos/complex_objects.mat')); + const s = by('s'); + const z = s.children.find((c: any) => c.name === 'z'); + const why = 'Cannot edit "s": s.p is a Simulink.Parameter, which this package cannot write into a MAT-file.'; + expect([s.valueEditable, z.valueEditable, z.nameEditable, s.canAddChild()]).toEqual([false, false, false, false]); + expect(edit(z, 'Value', '5')).toMatchObject({ error: true, reason: why }); + expect(sourceEditRefusal(z, 'Value')).toBe(why); + expect(root.dirty).toBe(false); + expect(edit(s, 'Name', 'sR')).toBe(true); + expect(readBack(save(), root.children.indexOf(s))).toEqual(shownAs(s)); + }); + + it('a plain variable: every cell, and Add and Delete of its rows, as the table offers them', () => { + const { by } = opened(fileBytes(CASES), 'cases.mat'); + expect([by('kp').nameEditable, by('kp').valueEditable]).toEqual([true, true]); + expect(by('mat2x3').children.every((c: any) => c.valueEditable)).toBe(true); + expect([by('cellFlat').canAddChild(), by('structScalar').canAddChild(), by('rowVec').canAddChild()]).toEqual([true, true, true]); + }); + + it('a struct array, and each element of one, takes no Add: a save writes a field into every element or none', () => { + const { session, root, by, save } = opened(fileBytes(CASES), 'cases.mat'); + const array = by('struct1x3'); + const original = new Uint8Array(fileBytes(CASES)); + for (const node of [array, array.children[0]]) { + expect(node.canAddChild(), node.matlabPath).toBe(false); + expect(session.addChildTo(node.id), node.matlabPath).toBeNull(); + expect(sourceEditRefusal(node, 'Add')).toBe( + 'Cannot edit "struct1x3": struct1x3 is a 1x3 struct, whose fields a save writes into every element of it or none, and Add gives one struct a field of its own.', + ); + } + // Its elements' fields take their edits, as before. + expect(array.children[0].children[0].valueEditable).toBe(true); + expect([root.dirty, sameBytes(save(), original)]).toEqual([false, true]); + }); + + it("a value typed in that a save cannot write, a string, is refused before it is made", () => { + const { root, by, edit, save } = opened(fileBytes(CASES), 'cases.mat'); + const original = new Uint8Array(fileBytes(CASES)); + for (const [node, typed, why] of [ + [by('kp'), '"abc"', 'Cannot edit "kp": kp would be a string, which this package cannot write into a MAT-file.'], + [by('kp'), '["a" "b"]', 'Cannot edit "kp": kp would be a string, which this package cannot write into a MAT-file.'], + [by('cellFlat').children[0], '{1, "a"}', 'Cannot edit "cellFlat": cellFlat{1} would hold a string, which this package cannot write into a MAT-file.'], + [by('structScalar').children[0], '"x"', 'Cannot edit "structScalar": structScalar.a would be a string, which this package cannot write into a MAT-file.'], + ] as [any, string, string][]) { + const was = shownAs(node); + expect(edit(node, 'Value', typed), typed).toEqual({ error: true, reason: why, invalidValue: typed, validValue: node.displayValue }); + expect(shownAs(node), typed).toEqual(was); + } + // Nothing was edited: the file is not dirty, and saves as itself. + expect([root.dirty, by('kp').status, sameBytes(save(), original)]).toEqual([false, '', true]); + // A char is a value a save writes. + expect(edit(by('kp'), 'Value', "'abc'")).toBe(true); + expect(readBack(save(), root.children.indexOf(by('kp')))).toEqual(shownAs(by('kp'))); + }); + + it('a container the node ceiling built without its rows is judged by what it was read as', () => { + // nested_handles.mat's c_fh is a cell of function handles. Built with no rows, it showed no + // handle to refuse, and took an edit the save then refused. + const bytes = fixture('fixtures/display/nested_handles.mat'); + const cut: any = MatNode.fromParsed(parseMat(bytes), 'f.mat', { nodeCeiling: 0 }); + const cFh = cut.children.find((c: any) => c.name === 'c_fh'); + expect([cFh._cutByCeiling > 0, cFh.children.length]).toEqual([true, 0]); + expect(sourceEditRefusal(cFh, 'Value')).toBe('Cannot edit "c_fh": c_fh{1} is a function handle, which this package cannot write into a MAT-file.'); + expect(cFh.valueEditable).toBe(false); + }); +}); + +describe('what a file, or where a variable stands in it, refuses of every edit', () => { + it('a variable stored after the subsystem: neither renamed nor edited, and deleted', () => { + const late = arrayBufferOf(new Uint8Array([...new Uint8Array(fixture('fixtures/mcos/Param.mat')), ...scalar('late', 4)])); + const { session, root, by, edit, save } = opened(late); + const node = by('late'); + const why = + 'Cannot edit "late": it is stored after the file\'s objects, where MATLAB does not read it, so it would not be read written there, ' + + 'and moved, it would change what MATLAB loads of the file.'; + expect([node.nameEditable, node.valueEditable, node.toRow().Name.editable]).toEqual([false, false, false]); + expect(edit(node, 'Name', 'late2')).toMatchObject({ error: true, reason: why }); + expect(edit(node, 'Value', '5')).toMatchObject({ error: true, reason: why }); + expect(node.setProperty('Name', 'late2')).toMatchObject({ error: true, reason: why }); + expect(root.dirty).toBe(false); + // The variable before the subsystem is as any other. + expect(by('Param').nameEditable).toBe(true); + session.setActive(root, node); + expect(session.deleteNodeById(node.id)).toBe(true); + expect(parseMat(arrayBufferOf(save())).records.map((r) => r.name)).toEqual(['Param', '']); + }); + + it('two variables of one name: neither value edited until one is renamed away', () => { + const { root, edit, save } = opened(matFile([scalar('a', 1), scalar('a', 2), scalar('b', 3)])); + const [first, second] = root.children; + const why = 'Cannot edit "a": the file holds another variable named "a", and MATLAB loads only one of them.'; + // The session takes no edit of either, by an id two nodes answer to (DataModel.idIsShared); + // the nodes' own setters are asked here. + for (const node of [first, second]) { + expect([node.valueEditable, sourceEditRefusal(node, 'Value')]).toEqual([false, why]); + expect(edit(node, 'Value', '5')).toBe(false); + expect(node.setProperty('Value', '5')).toMatchObject({ error: true, reason: why }); + } + expect(second.setProperty('Name', 'a2')).toBe(true); + expect([first.valueEditable, second.valueEditable]).toEqual([true, true]); + expect(edit(first, 'Value', '5')).toBe(true); + expect(parseMat(arrayBufferOf(save())).variables.map((v) => [v.name, v.value])).toEqual([['a', 5], ['a2', 2], ['b', 3]]); + }); + + it('a name the file holds as a record the reader dropped is taken: no rename or addition into it', () => { + // A record that is not a matrix (an miINT32 at the top level) is dropped by the reader, and + // kept by every save as its bytes; its name is still the file's. + const { root, edit } = opened(matFile([scalar('a', 1), scalar('b', 2)])); + expect(root._namespaceHolds('a')).toBe(1); + expect(edit(root.children[1], 'Name', 'a')).toEqual({ error: true, reason: "'a' already exists in f.mat", invalidValue: 'a', validValue: 'b' }); + }); + + it('a variable whose record holds bytes past its element: no rename, refused as it is made; its value is written fresh', () => { + // A compressed record whose stream inflates to the element and 8 bytes more: the reader reads + // the element, and a save has no element of the record's own to put a new name in. + const stream = zlibSync(new Uint8Array([...scalar('a', 1), ...new Uint8Array(8)])); + const record = new Uint8Array([...u32le(15), ...u32le(stream.length), ...stream]); + const { root, by, edit, save } = opened(matFile([record, scalar('b', 2)])); + const node = by('a'); + expect([root.framed, node.nameEditable]).toEqual([true, true]); + const why = `Cannot edit "a": the record it was read from, at byte 128, is not a whole element whose name can be replaced, so it cannot be renamed.`; + expect(edit(node, 'Name', 'a2')).toEqual({ error: true, reason: why, invalidValue: 'a2', validValue: 'a' }); + expect([node.name, root.dirty]).toEqual(['a', false]); + expect(edit(node, 'Value', '5')).toBe(true); + expect(parseMat(arrayBufferOf(save())).variables.map((v) => [v.name, v.value])).toEqual([['a', 5], ['b', 2]]); + }); + + it('a file no save of which can be written is read-only, and takes no edit, addition or delete', () => { + const z = new Uint8Array(8); + const files: [string, () => any, RegExp][] = [ + ['unframed', () => opened(matFile([scalar('a', 1), scalar('b', 2)], { trailing: z })), /^Cannot edit "f\.mat": this package could not frame 8 byte\(s\) of it/], + ['an unnamed record that is not the subsystem', () => opened(matFile([scalar('a', 1), scalar('', 2), scalar('b', 3)])), /^Cannot edit "f\.mat": the record at byte \d+ holds a value with no name/], + [ + "a host's parse that carries no records", + () => { + const session = createSession(); + const { header, variables } = parseMat(fileBytes(CASES)); + const root: any = session.addMatSourceParsed('f.mat', { header, variables }); + return { + session, + root, + edit: (node: any, prop: string, value: string) => { + session.setActive(root, node); + return session.editProperty(node.id, prop, value); + }, + }; + }, + /^Cannot edit "f\.mat": it was opened without the records a save writes back/, + ], + ]; + for (const [what, open, why] of files) { + const { session, root, edit } = open(); + expect(root.readOnly, what).toBe(true); + const node = root.children[0]; + expect([node.nameEditable, node.valueEditable], what).toEqual([false, false]); + expect(edit(node, 'Value', '5').reason, what).toMatch(why); + expect(edit(node, 'Name', 'renamed').reason, what).toMatch(why); + session.setActive(root, node); + expect(session.deleteNodeById(node.id), what).toBe(false); + expect(session.addEntry('', 'MatlabVariable'), what).toBeNull(); + expect([root.children[0], root.dirty], what).toEqual([node, false]); + } + }); + + it('a file whose bytes the host has since handed away becomes read-only', () => { + const input = fileBytes(CASES); + const { root, by } = opened(input, 'cases.mat'); + expect([root.readOnly, by('kp').valueEditable]).toEqual([false, true]); + structuredClone(input, { transfer: [input] }); + expect([root.readOnly, by('kp').valueEditable, by('kp').nameEditable]).toEqual([true, false, false]); + }); +}); + +describe('the session, on a .mat', () => { + it('a file a save can write is not read-only', () => { + for (const file of FIXTURES) { + expect(opened(fileBytes(file)).root.readOnly, shown(file)).toBe(false); + } + }); + + it('addEntry adds the double 0, named var, before the subsystem, and its undo and redo are saved', () => { + const { session, root, save } = opened(fileBytes(CASES), 'cases.mat'); + session.setActiveContext(root); + const added: any = session.addEntry('', 'MatlabVariable'); + expect([added.name, added.displayValue, added.className, added.parent]).toEqual(['var', '0', 'double', root]); + expect(session.getEntryNode()).toBe(added); + const again: any = session.addEntry('', 'MatlabVariable'); + expect(again.name).toBe('var1'); + let parsed = parseMat(arrayBufferOf(save())); + expect(parsed.records.slice(-3).map((r) => r.name)).toEqual(['var', 'var1', '']); + expect(parsed.variables.find((v) => v.name === 'var')).toMatchObject({ className: 'double', dimensions: [1, 1], value: 0 }); + session.undo(); + session.undo(); + expect(root.children.includes(added)).toBe(false); + expect(parseMat(arrayBufferOf(save())).records.map((r) => r.name)).not.toContain('var'); + session.redo(); + parsed = parseMat(arrayBufferOf(save())); + expect(parsed.records.slice(-2).map((r) => r.name)).toEqual(['var', '']); + // An entry named by the caller, and what a save could not write. + expect(session.addEntry('', 'MatlabVariable', 'myVar').name).toBe('myVar'); + expect(session.addEntry('', 'MatlabVariable', 'kp')).toBeNull(); + expect(session.addEntry('', 'MatlabVariable', '1bad')).toBeNull(); + expect(session.addEntry('', 'Simulink.Parameter')).toBeNull(); + expect(parseMat(arrayBufferOf(save())).records.slice(-3).map((r) => r.name)).toEqual(['var', 'myVar', '']); + }); + + it("a rename into a name the file holds names the file; a dictionary's keeps its wording", () => { + const { by, edit } = opened(fileBytes(CASES), 'cases.mat'); + expect(edit(by('kp'), 'Name', 'scalarD')).toEqual({ error: true, reason: "'scalarD' already exists in cases.mat", invalidValue: 'scalarD', validValue: 'kp' }); + // A host's srcId that is a path names the file by its basename. + const session = createSession(); + const root: any = session.addMatSource('/some/where/cases.mat', fileBytes(CASES)); + expect(root.children.find((c: any) => c.name === 'kp').setProperty('Name', 'scalarD').reason).toBe("'scalarD' already exists in cases.mat"); + }); +}); diff --git a/test/matFileSave.test.ts b/test/matFileSave.test.ts index 5ff9ea34..0fd07794 100644 --- a/test/matFileSave.test.ts +++ b/test/matFileSave.test.ts @@ -484,11 +484,15 @@ describe('the marker that tells a rename from a value edit (DataNode._valueEdite expect([by('kp2').status, by('kp2')._valueEdited, by('p2').status, by('p2')._valueEdited]).toEqual(['Modified', undefined, 'Modified', undefined]); }); - it("is set by a value edit, an element's, and an object's property edit", () => { + it("is set by a value edit, an element's, and an object's property edit, which the editor takes none of", () => { const { by, edit } = casesMat(); expect(edit(by('kp'), 'Value', '2')).toBe(true); expect(edit(by('mat2x3').children[3], 'Value', '2')).toBe(true); - expect(edit(by('aParam'), 'Value', '3')).toBe(true); + // A MAT-file takes no edit of an object's properties (MatNode._editRefusal, test/matEditGate.test.ts), + // and one refused marks nothing. Made around the editor, it marks the object. + expect(edit(by('aParam'), 'Value', '3')).toMatchObject({ error: true }); + expect(by('aParam')._valueEdited).toBeUndefined(); + by('aParam')._markModified(); expect(['kp', 'mat2x3', 'aParam'].map((n) => by(n)._valueEdited)).toEqual([true, true, true]); // On the entry only. expect(by('mat2x3').children[3]._valueEdited).toBeUndefined(); @@ -497,7 +501,11 @@ describe('the marker that tells a rename from a value edit (DataNode._valueEdite it("is set by the rename of anything under the entry, a bus element's, which changes the entry's value", () => { const { by, edit, save } = casesMat(); const element = by('aBus').children[0]; - expect(edit(element, 'Name', 'renamedElement')).toBe(true); + // Refused by the editor, as every edit of an object of a MAT-file but its own rename is; made + // around it, as DataNode.setProperty's rename makes one. + expect(edit(element, 'Name', 'renamedElement')).toMatchObject({ error: true }); + element.name = 'renamedElement'; + element._markModified('name'); expect([by('aBus').status, by('aBus')._valueEdited]).toEqual(['Modified', true]); // And a bus is an object, whose edit this writer cannot write. expect(thrownBy(save).message).toBe( @@ -506,13 +514,17 @@ describe('the marker that tells a rename from a value edit (DataNode._valueEdite }); }); +// The editor takes none of the edits below (MatNode._editRefusal, test/matEditGate.test.ts): each is +// made around it, by the marks every edit leaves (DataNode._markModified), so that the writer's own +// refusal, which the editor's is built from, is held to as well. describe('a save that cannot write a variable as what it is is refused, naming it, and nothing is written', () => { const editRefused = (name: string, what: string) => `Cannot write "${name}": it is ${what}, which a MAT-file save writes only as it was read, or renamed, so its edit cannot be saved. Nothing was written.`; it("an object's property edited; the variable deleted, the file saves", () => { const { by, edit, remove, save } = opened(fixture(CASES), 'cases.mat'); - expect(edit(by('aParam'), 'Value', '7')).toBe(true); + expect(edit(by('aParam'), 'Value', '7')).toMatchObject({ error: true }); + by('aParam')._markModified(); const thrown = thrownBy(save); expect([thrown instanceof MatWriteError, thrown.message]).toEqual([true, editRefused('aParam', 'a Simulink.Parameter')]); expect(remove(by('aParam'))).toBe(true); @@ -521,14 +533,16 @@ describe('a save that cannot write a variable as what it is is refused, naming i it('a string edited', () => { const { by, edit, save } = opened(fixture(CASES), 'cases.mat'); - expect(edit(by('strScalar'), 'Value', '"xyz"')).toBe(true); + expect(edit(by('strScalar'), 'Value', '"xyz"')).toMatchObject({ error: true }); + by('strScalar')._markModified(); expect(thrownBy(save).message).toBe(editRefused('strScalar', 'a string')); }); it('a struct holding an object, edited at another field', () => { const { by, edit, save } = opened(fixture('fixtures/mcos/complex_objects.mat'), 'complex_objects.mat'); const z = by('s').children.find((c: any) => c.name === 'z'); - expect(edit(z, 'Value', '5')).toBe(true); + expect(edit(z, 'Value', '5')).toMatchObject({ error: true }); + z._markModified(); expect(thrownBy(save).message).toBe( 'Cannot write "s": s.p is a Simulink.Parameter, which this package cannot write into a MAT-file. Nothing was written.', ); @@ -562,7 +576,12 @@ describe('a save that cannot write a variable as what it is is refused, naming i it('renamed or edited, refuses the save', () => { for (const [prop, value] of [['Name', 'late2'], ['Value', '5']]) { const { by, edit, save } = opened(late()); - expect(edit(by('late'), prop, value)).toBe(true); + const node = by('late'); + expect(edit(node, prop, value)).toMatchObject({ error: true }); + if (prop === 'Name') { + node.name = value; + } + node._markModified(prop === 'Name' ? 'name' : 'value'); expect(thrownBy(save).message).toBe( `Cannot write "${by(prop === 'Name' ? 'late2' : 'late').name}": it is stored after the file's objects, where MATLAB does not read it, ` + 'so it would not be read written there, and moved, it would change what MATLAB loads of the file. Nothing was written.', @@ -600,7 +619,8 @@ describe('a save that cannot write a variable as what it is is refused, naming i const refusal = `Cannot save "f.mat": this package could not frame 8 byte(s) of it, from byte ${at} (${root.unframed.reason}), ` + 'so a save could not keep them as they are. Nothing was written.'; expect(thrownBy(save).message).toBe(refusal); - expect(edit(by('a'), 'Value', '3')).toBe(true); + expect(edit(by('a'), 'Value', '3')).toMatchObject({ error: true }); + by('a')._markModified(); expect(thrownBy(save).message).toBe(refusal); }); @@ -630,7 +650,8 @@ describe('a save that cannot write a variable as what it is is refused, naming i new DataView(bytes.buffer).setBigUint64(116, 200n, true); const { by, edit, save } = opened(arrayBufferOf(bytes), 'cases.mat'); expect(sameBytes(save(), bytes)).toBe(true); - expect(edit(by('kp'), 'Value', '3')).toBe(true); + expect(edit(by('kp'), 'Value', '3')).toMatchObject({ error: true }); + by('kp')._markModified(); expect(thrownBy(save).message).toBe( 'Cannot save "cases.mat": its header places the file\'s objects at byte 200, where no record starts, so a save cannot say where they are. Nothing was written.', ); @@ -643,7 +664,8 @@ describe('a save that cannot write a variable as what it is is refused, naming i new DataView(bytes.buffer).setBigUint64(116, BigInt(at), true); const again = opened(arrayBufferOf(bytes)); expect(sameBytes(again.save(), bytes)).toBe(true); - expect(again.edit(again.by('b'), 'Value', '5')).toBe(true); + expect(again.edit(again.by('b'), 'Value', '5')).toMatchObject({ error: true }); + again.by('b')._markModified(); expect(thrownBy(again.save).message).toBe( `Cannot save "f.mat": its header places the file's objects at byte ${at}, where a variable is, so a save cannot say where they are. ` + 'Nothing was written.', @@ -655,7 +677,8 @@ describe('a save that cannot write a variable as what it is is refused, naming i it('an unnamed record that is not the subsystem', () => { const { root, by, edit, save } = opened(matFile([scalar('a', 1), scalar('', 2), scalar('b', 3)])); - expect(edit(by('a'), 'Value', '5')).toBe(true); + expect(edit(by('a'), 'Value', '5')).toMatchObject({ error: true }); + by('a')._markModified(); expect(thrownBy(save).message).toBe( `Cannot save "f.mat": the record at byte ${root.records[1].offset} holds a value with no name that is not the file's objects, ` + 'and MATLAB reads no variable past one, so a save cannot place an edit where MATLAB reads it. Nothing was written.', @@ -679,7 +702,9 @@ describe('a save that cannot write a variable as what it is is refused, naming i ['kp', 'the file holds another variable named "kp", and MATLAB loads only one of them'], ]) { const { root, save } = opened(fixture(CASES), 'cases.mat'); - root.execAddEntry(undefined, name); + // Refused by the editor (MatNode.execAddEntry); added around it, under its own name. + expect(root.execAddEntry(undefined, name), name).toBeNull(); + root.execAddEntry().node.name = name; expect(thrownBy(save).message, name).toBe(`Cannot write "${name}": ${why}. Nothing was written.`); } }); diff --git a/test/matNoPayload.test.ts b/test/matNoPayload.test.ts index 91e18bd6..8ac906fe 100644 --- a/test/matNoPayload.test.ts +++ b/test/matNoPayload.test.ts @@ -122,8 +122,10 @@ describe('a numeric MAT value with no data is shown as not decoded, with no edit const c = cellVar('c', [noPayload('', CLASS.INT8, [1, 1]), one(5)]); const mat = opened('nested.mat', [ok(), s, c]); const [, sNode, cNode] = mat.children; - expect(sNode.children.map(row)).toEqual([notDecoded('a', '1x3', 'double'), ['b', '2', 'double', true, []]]); - expect(cNode.children.map(row)).toEqual([notDecoded('1', '1x1', 'int8'), ['2', '5', 'double', true, []]]); + // The value beside each takes no edit: a save writes s and c fresh or not at all, and has + // nothing to write the one with no data from (MatNode._editRefusal). + expect(sNode.children.map(row)).toEqual([notDecoded('a', '1x3', 'double'), ['b', '2', 'double', false, []]]); + expect(cNode.children.map(row)).toEqual([notDecoded('1', '1x1', 'int8'), ['2', '5', 'double', false, []]]); expect(mat.warnings).toEqual([holdsNoData('s.a', 3), holdsNoData('c{1}', 1)]); for (const n of [sNode, cNode]) { expect(() => n.toRow()).not.toThrow(); @@ -141,7 +143,9 @@ describe('a numeric MAT value with no data is shown as not decoded, with no edit const cutAt = 128 + ok().length + noPayload('x', CLASS.DOUBLE, [1, 3]).length; const whole = new Uint8Array(matFile([ok(), x])); const cut: any = createSession().addMatSource('cut.mat', arrayBufferOf(whole.slice(0, cutAt))); - expect(cut.children.map(row)).toEqual([['ok', '7', 'double', true, []], notDecoded('x', '1x3', 'double')]); + // `ok` as read, and taking no edit: its records do not tile the file, so no save of it can be + // written (MatNode._fileRefusal). + expect(cut.children.map(row)).toEqual([['ok', '7', 'double', false, []], notDecoded('x', '1x3', 'double')]); expect(cut.warnings).toEqual([ { code: 'part-unreadable', diff --git a/test/matNode.test.ts b/test/matNode.test.ts index 39c6091d..92dcedaa 100644 --- a/test/matNode.test.ts +++ b/test/matNode.test.ts @@ -29,9 +29,10 @@ describe('MatNode — presentation', () => { expect(mat.icon).toBe('matlabWorkspaceFile'); }); - it('is read-only', () => { - // A .mat carries no schema, so the UI never offers property edits on the root. - expect(matSource('Param.mat').readOnly).toBe(true); + it('is not read-only: a save writes it (MatFileWriter)', () => { + // Read-only only when no save of it can be written: opened without its records, its records + // not tiling it (test/matEditGate.test.ts). + expect(matSource('Param.mat').readOnly).toBe(false); }); it('counts its variables as entries', () => { diff --git a/test/matRecords.test.ts b/test/matRecords.test.ts index fdacaaf4..63affc11 100644 --- a/test/matRecords.test.ts +++ b/test/matRecords.test.ts @@ -495,9 +495,12 @@ describe('an edit and its record', () => { expect(struct.status).toBe('Modified'); }); - it("an object's property edit makes its typed node Modified", () => { + it("an object's property edit is refused, and leaves its typed node as it was; one made around the editor makes it Modified", () => { + // A MAT-file's save writes an object only as it was read, or renamed (MatNode._editRefusal). const { by, edit } = casesMat(); - expect(edit(by('aParam'), 'Value', '[1 2 3]')).toBe(true); + expect(edit(by('aParam'), 'Value', '[1 2 3]')).toMatchObject({ error: true }); + expect(by('aParam').status).toBe(''); + by('aParam')._markModified(); expect(by('aParam').status).toBe('Modified'); }); diff --git a/test/matStructArray.test.ts b/test/matStructArray.test.ts index db925c82..4c81e6de 100644 --- a/test/matStructArray.test.ts +++ b/test/matStructArray.test.ts @@ -557,10 +557,11 @@ describe('a MAT struct array with no fields, past the row cap', () => { }); // Add Child gives a struct one `field` row of its own, and past the cap that row held the // only copy of the edit: the save, which writes such an array from the bytes it was read - // from, dropped it. So it is refused, as a sparse array's is. Up to the cap it is offered as - // before. + // from, dropped it. So it is refused, as a sparse array's is. In a .mat it is refused up to the + // cap as well: the row Add makes is an element of no fields, which its save does not write + // (MatNode._editRefusal). it('takes no Add Child past the cap, where the save would drop the row it adds', () => { - expect(opened(fieldless('s', [1, MAX]))[0].canAddChild()).toBe(true); + expect(opened(fieldless('s', [1, MAX]))[0].canAddChild()).toBe(false); for (const d of [[1, MAX + 1], BIG]) { const [s] = opened(fieldless('s', d)); expect([s.canAddChild(), s.execAddChild(), s.children.length], String(d)).toEqual([false, null, 0]); @@ -761,9 +762,11 @@ describe('a MAT 1x1 struct with a field slot that is not a matrix', () => { const mat = opened('s.mat', before, damaged, after); const [b, s, a] = mat.children; expect([s.name, s.displayValue, s.children.length]).toEqual(['s', '<1x1 struct>', 2]); + // The field beside it takes no edit either: a save writes the struct fresh, or not at all, and + // has nothing to write the field it did not decode from (MatNode._editRefusal). expect(s.children.map(row)).toEqual([ ['a', '', 'unknown', 0, false], - ['b', '2', 'double', 0, true], + ['b', '2', 'double', 0, false], ]); expect(mat.warnings).toEqual([{ code: 'part-unreadable', message: `"s.a" was not decoded: ${reason}.`, part: 's.a' }]); // Nothing to write it from: its copy, and the struct's, are refused at it, naming it. The field diff --git a/test/mcosShortValues.test.ts b/test/mcosShortValues.test.ts index 328c0b6d..0974117a 100644 --- a/test/mcosShortValues.test.ts +++ b/test/mcosShortValues.test.ts @@ -125,6 +125,9 @@ function slotsOpened(d: number[], first: number[], second = secondCellTag()): { const holder = src.children.find((x: any) => x.name === 'holder'); return { c: holder.children.find((x: any) => x.name === 'C'), warnings: src.warnings ?? [] }; } +// In a .mat every row under an object takes no edit, a slot read as well as one that was not: its +// save writes the object only as it was read (MatNode._editRefusal). What tells the two apart is +// their values, and the copy of the one not decoded, which is refused (copyRefused). const slotRows = (c: any) => c.children.map((e: any) => [e.displayName, e.displayValue, e.valueEditable]); // What a host meets copying the slot: the refusal of a value that was not decoded (F1-10), naming it. function copyRefused(node: any): unknown[] { @@ -142,23 +145,24 @@ describe('a cell slot under a decoded object that could not be read', () => { // the node layer built as the double 0: holder.C showed `{0, [3+4i 5+6i]}`, editable, said nothing, // and a copy of the slot was the 0. At the top of a .mat the same cell says it holds one cell of // its two (MatParser.collectUndecoded). Under an object it now says so in those words, and the slot - // shows as not decoded (theme 1: show what was read), with no editor and a refused copy. + // shows as not decoded (theme 1: show what was read), with no editor and a refused copy. (No row + // under the object takes an edit in a .mat, whose save writes the object as it was read.) it('one that is not a matrix: shown as not decoded, in its own place, and counted as not read', () => { const { c, warnings } = slotsOpened([1, 2], firstCell(2)); expect(warnings).toEqual([cellsSaid('holder.C', 2, 1)]); - expect(slotRows(c)).toEqual([['C{1}', '', false], ['C{2}', '[3+4i 5+6i]', true]]); + expect(slotRows(c)).toEqual([['C{1}', '', false], ['C{2}', '[3+4i 5+6i]', false]]); expect(c.displayValue).toBe('{, [3+4i 5+6i]}'); expect(copyRefused(c.children[0])).toEqual(refusedAs('a 1x1 unknown')); // The second slot, the first read: nothing slides into the hole. const second = slotsOpened([1, 2], firstCell(), secondCellTag(2)); expect(second.warnings).toEqual([cellsSaid('holder.C', 2, 1)]); - expect(slotRows(second.c)).toEqual([['C{1}', '1+2i', true], ['C{2}', '', false]]); + expect(slotRows(second.c)).toEqual([['C{1}', '1+2i', false], ['C{2}', '', false]]); }); it('one of a class the reader does not model: the same, under the class the file names', () => { const { c, warnings } = slotsOpened([1, 2], firstCell(14, 99)); expect(warnings).toEqual([cellsSaid('holder.C', 2, 1)]); - expect(slotRows(c)).toEqual([['C{1}', '<1x1 unknown, not decoded>', false], ['C{2}', '[3+4i 5+6i]', true]]); + expect(slotRows(c)).toEqual([['C{1}', '<1x1 unknown, not decoded>', false], ['C{2}', '[3+4i 5+6i]', false]]); expect(copyRefused(c.children[0])).toEqual(refusedAs('a 1x1 unknown', 'its MAT array class is not one this reader models')); }); @@ -166,20 +170,20 @@ describe('a cell slot under a decoded object that could not be read', () => { const { c, warnings } = slotsOpened([1, 2], firstCell(14, 6, [1, 100_000_000])); const why = 'declares 100000000 elements, more than the 32 bytes left in it can hold'; expect(warnings).toEqual([{ code: 'part-unreadable', message: `"holder.C{1}" was not decoded: ${why}.`, part: 'holder.C{1}' }]); - expect(slotRows(c)).toEqual([['C{1}', '<1x100000000 double, not decoded>', false], ['C{2}', '[3+4i 5+6i]', true]]); + expect(slotRows(c)).toEqual([['C{1}', '<1x100000000 double, not decoded>', false], ['C{2}', '[3+4i 5+6i]', false]]); expect(copyRefused(c.children[0])).toEqual(refusedAs('a 1x100000000 double', why)); }); it('in a cell that also holds fewer cells than it declares: one warning, counting both', () => { const { c, warnings } = slotsOpened([1, 3], firstCell(2)); expect(warnings).toEqual([cellsSaid('holder.C', 3, 1)]); - expect(slotRows(c)).toEqual([['C{1}', '', false], ['C{2}', '[3+4i 5+6i]', true]]); + expect(slotRows(c)).toEqual([['C{1}', '', false], ['C{2}', '[3+4i 5+6i]', false]]); }); it('control: the respelling is the identity on the pristine bytes, and the slots read', () => { const { c, warnings } = slotsOpened([1, 2], firstCell()); expect(warnings).toEqual([]); - expect(slotRows(c)).toEqual([['C{1}', '1+2i', true], ['C{2}', '[3+4i 5+6i]', true]]); + expect(slotRows(c)).toEqual([['C{1}', '1+2i', false], ['C{2}', '[3+4i 5+6i]', false]]); }); }); diff --git a/test/sparseDamaged.test.ts b/test/sparseDamaged.test.ts index da222238..8dc51b26 100644 --- a/test/sparseDamaged.test.ts +++ b/test/sparseDamaged.test.ts @@ -152,8 +152,11 @@ describe('a damaged column count in an MCOS-held sparse array opens, as what its ['Value(9999999,2)', '8', false], ], ]); - // Not hex: the rows are read-only for this array's own sake, and say why. - expect(value.children[0].setProperty('Value', '9')).toMatchObject({ error: true, reason: expect.stringMatching(/cannot be written once edited/) }); + // Not hex: the rows are read-only for this array's own sake (_sparseRefusal), and in a .mat for + // its object's too, which the file's save writes as it was read: the file says so first + // (MatNode._editRefusal). + expect(value._sparseRefusal()).toEqual(expect.any(String)); + expect(value.children[0].setProperty('Value', '9')).toMatchObject({ error: true, reason: expect.stringMatching(/^Cannot edit "pTall": it is a Simulink\.Parameter/) }); expect(mat.warnings?.map((w: any) => w.part)).toEqual(['pTall.Value']); // A copy into a dictionary: its Value is the element it was read from. const copied = JSON.parse(JSON.stringify(pTall.serializeValue()))._elements[0]._properties.Value; @@ -245,10 +248,13 @@ describe('a sparse MCOS property of a class nothing writes sparse shows what its ['Value(9999999,2)', '8', false], ], ]); - // Not hex: read-only because nothing could write an edit of an int8 sparse array. + // Not hex: read-only because nothing could write an edit of an int8 sparse array + // (_sparseRefusal), and in a .mat because its save writes the object as it was read, which + // the refusal says first (MatNode._editRefusal). + expect(pTall._valueNode._sparseRefusal()).toBe('no sparse MAT class for "int8"'); expect(pTall._valueNode.children[0].setProperty('Value', '9')).toMatchObject({ error: true, - reason: expect.stringMatching(/no sparse MAT class for "int8"/), + reason: expect.stringMatching(/^Cannot edit "pTall": it is a Simulink\.Parameter/), }); const copied = JSON.parse(JSON.stringify(pTall.serializeValue()))._elements[0]._properties.Value; expect(copied._type).toBe('cdata'); diff --git a/test/sparseFixtures.test.ts b/test/sparseFixtures.test.ts index 6bcb6f84..88e23c30 100644 --- a/test/sparseFixtures.test.ts +++ b/test/sparseFixtures.test.ts @@ -698,8 +698,10 @@ describe('a sparse array\'s rows are its non-zeros, and it has no Variable Edito expect([node.canAddChild(), node.canRemoveChild(), node.valueEditable], path).toEqual([false, false, false]); for (const row of node.children) { // Hex-backed values are read-only through and through, and so are a text dictionary's - // MAT streams (the C-012 ruling, 2026-10-15); the rest edit as before. - expect(row.valueEditable, `${path} ${row.displayName}`).toBe(venue.name !== 'binary' && venue.name !== 'text'); + // MAT streams (the C-012 ruling, 2026-10-15), and a .mat's object, which its save writes + // as it was read (MatNode._editRefusal); the rest edit as before. + const inMatObject = venue.name === 'mat' && row.owningEntry.constructor.name !== 'MatlabVariableNode'; + expect(row.valueEditable, `${path} ${row.displayName}`).toBe(venue.name !== 'binary' && venue.name !== 'text' && !inMatObject); } } }); diff --git a/test/unbackedBudgetVenues.test.ts b/test/unbackedBudgetVenues.test.ts index bb05bd0a..2d1be9c6 100644 --- a/test/unbackedBudgetVenues.test.ts +++ b/test/unbackedBudgetVenues.test.ts @@ -25,11 +25,13 @@ const HEAVY_TIMEOUT = 60_000; describe('within the budget, a sparse array stays sparse wherever it goes', () => { it('a host\'s 1x2e6 with three entries, 8 MB of index no data backs', { timeout: HEAVY_TIMEOUT }, () => { + // Each row its non-zero. None takes an edit: a host's parse carries no records, and a file + // opened without them is one no save can write (MatNode._fileRefusal). const h = hostMat(sparseHost([1, 2e6], [0, 0, 0], [0, 1e6, 2e6 - 1], [1, 2, 3])); expect(h.children.map((c: any) => [c.displayName, c.valueEditable])).toEqual([ - ['h(1,1)', true], - ['h(1,1000001)', true], - ['h(1,2000000)', true], + ['h(1,1)', false], + ['h(1,1000001)', false], + ['h(1,2000000)', false], ]); const [copied, ms] = timed(() => copyOf(h) as any); expect([copied._type, ms < 3000]).toEqual(['cdata', true]); diff --git a/test/unmodelledClassVariable.test.ts b/test/unmodelledClassVariable.test.ts index 2643f862..e44576ed 100644 --- a/test/unmodelledClassVariable.test.ts +++ b/test/unmodelledClassVariable.test.ts @@ -309,9 +309,12 @@ describe('a real value of a class the reader does not model is shown as not deco const s = structVar('s', ['a', 'b'], [{ a: damagedReal('', 0x12), b: five() }]); const mat = openedMat('nested.mat', [ok(), c, s, tail()]); // Before: c was `{null, 5}` with an editor, and c{1} and s.a each `null`, editable, of class unknown. + // The 5 beside each is as read, and takes no edit: a save of the file writes c and s fresh or + // not at all, and has nothing to write the element it did not decode from (MatNode._editRefusal). const [, cRow, sRow] = mat.children.map(row); - expect(cRow).toEqual(['c', '{<1x1 unknown, not decoded>, 5}', 'cell', false, [notDecoded('1', '1x1', 'unknown'), fiveRow('2')]]); - expect(sRow).toEqual(['s', '<1x1 struct>', 'struct', false, [notDecoded('a', '1x1', 'unknown'), fiveRow('b')]]); + const readOnlyFive = (name: string) => [name, '5', 'double', false, []]; + expect(cRow).toEqual(['c', '{<1x1 unknown, not decoded>, 5}', 'cell', false, [notDecoded('1', '1x1', 'unknown'), readOnlyFive('2')]]); + expect(sRow).toEqual(['s', '<1x1 struct>', 'struct', false, [notDecoded('a', '1x1', 'unknown'), readOnlyFive('b')]]); // The reader's warning names the element; it is the only one. expect(mat.warnings).toEqual([notModelled('c{1}'), notModelled('s.a')]); const [, cNode, sNode] = mat.children; From 486aa6ead58fe089eaad5948e9a1e728c9f94302 Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Tue, 20 Oct 2026 18:12:30 -0400 Subject: [PATCH 08/13] [wip] Write a MAT-file variable read short only as it was read A cell or struct array the reader read short, holding fewer elements than it declares, was written fresh with an empty double for each one it does not hold: a value the file did not hold, and past MatWriter's budget no save at all, after the editor had taken the edit that asked for it (a 1x600000 cell holding one element took an edit of that element, and its save was refused). freshRefusal now refuses such a variable at any depth, naming the container and what it holds, so the writer writes it only as it was read, or renamed, and the gate, built of the same refusal, takes no edit of its value. One with no element held kept its own refusal. --- README.md | 9 +- dist/datamodel/parser/MatFileWriter.d.ts | 2 +- dist/datamodel/parser/MatFileWriter.d.ts.map | 2 +- dist/datamodel/parser/MatFileWriter.js | 83 ++++++++++++++++++- dist/datamodel/parser/MatFileWriter.js.map | 2 +- src/datamodel/parser/MatFileWriter.ts | 86 +++++++++++++++++++- test/matEditGate.test.ts | 20 ++++- test/matFileSave.test.ts | 21 +++-- 8 files changed, 209 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 1e2f2bc1..91d19705 100644 --- a/README.md +++ b/README.md @@ -134,8 +134,9 @@ These take a rename and a delete and nothing else: - an object, of any class (a `Simulink.Parameter`, a bus, a signal, a class of your own): none of its properties and none of the rows under it; - a string, a function handle, and a value the reader could not decode; -- a plain variable holding any of these, at any depth: neither its value nor any - row under it; +- a plain variable holding any of these, or a cell or struct array the reader + read short (holding fewer elements than it declares, which a save would write + as empty), at any depth: neither its value nor any row under it; - either of two variables of one name, until one is renamed: MATLAB loads only one of them. @@ -147,8 +148,8 @@ no edit, addition or delete at all: one whose records do not tile it, one opened from a parse without its records (an older host's, through `addMatSourceParsed`), one whose bytes the host has since handed away. `addEntry` adds a variable named `var` (then `var1`, and so on) holding the -double `0`. A save can still refuse what only a value's bytes say, one past the -unbacked-bytes budget, say, in the same words. +double `0`. What only a value's bytes can say is still checked by the save, and +refused in the same words. ## Usage across a folder diff --git a/dist/datamodel/parser/MatFileWriter.d.ts b/dist/datamodel/parser/MatFileWriter.d.ts index 43ee977c..dc725942 100644 --- a/dist/datamodel/parser/MatFileWriter.d.ts +++ b/dist/datamodel/parser/MatFileWriter.d.ts @@ -44,7 +44,7 @@ export declare function renameWhy(record: MatRecord): string | null; * held to; a variable that was not a plain value, or whose node is a typed object's (freshOf); one * holding what this writer cannot write at any depth (unwritableIn); one with no form at all, a * container none of whose elements could be read (_heldNone) or a size that is no count - * (_refuseNoSize). + * (_refuseNoSize); and one holding a container read short at any depth (shortIn). * * One rule for freshOf, which throws it, and for the editor, which takes no edit a save would * refuse so (MatNode._editRefusal): the two cannot come to disagree. What it does not judge is diff --git a/dist/datamodel/parser/MatFileWriter.d.ts.map b/dist/datamodel/parser/MatFileWriter.d.ts.map index b479823d..9dfa9fd3 100644 --- a/dist/datamodel/parser/MatFileWriter.d.ts.map +++ b/dist/datamodel/parser/MatFileWriter.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"MatFileWriter.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/MatFileWriter.ts"],"names":[],"mappings":"AAuDA,OAAO,KAAK,EAAE,SAAS,EAA0B,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAkB,aAAa,EAAgD,MAAM,gBAAgB,CAAC;AAK7G,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAEhD,OAAO,KAAK,OAAO,MAAM,8BAA8B,CAAC;AAMxD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,CAuB7D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,GAAG,IAAI,CA6BvE;AAsBD,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,SAAS,GAAG,IAAI,CAKpF;AAgED,wGAAwG;AACxG,eAAO,MAAM,cAAc,QAEmC,CAAC;AAE/D;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,GAAG,aAAa,GAAG,IAAI,CAmB1H;AAkBD,oIAAoI;AACpI,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAmCD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAQ1D;AA0BD;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,GAAG,aAAa,GAAG,IAAI,CA4B3F;AAoDD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAOhF"} \ No newline at end of file +{"version":3,"file":"MatFileWriter.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/MatFileWriter.ts"],"names":[],"mappings":"AAuDA,OAAO,KAAK,EAAE,SAAS,EAA0B,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAkB,aAAa,EAAgD,MAAM,gBAAgB,CAAC;AAK7G,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAEhD,OAAO,KAAK,OAAO,MAAM,8BAA8B,CAAC;AAMxD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,CAuB7D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,GAAG,IAAI,CA6BvE;AAsBD,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,SAAS,GAAG,IAAI,CAKpF;AAgED,wGAAwG;AACxG,eAAO,MAAM,cAAc,QAEmC,CAAC;AAE/D;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,GAAG,aAAa,GAAG,IAAI,CAmB1H;AAkBD,oIAAoI;AACpI,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAmCD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAQ1D;AA0BD;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,GAAG,aAAa,GAAG,IAAI,CAgC3F;AAoID;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAOhF"} \ No newline at end of file diff --git a/dist/datamodel/parser/MatFileWriter.js b/dist/datamodel/parser/MatFileWriter.js index 026460c2..33fb6046 100644 --- a/dist/datamodel/parser/MatFileWriter.js +++ b/dist/datamodel/parser/MatFileWriter.js @@ -310,7 +310,7 @@ function freshOf(node, record, compress) { * held to; a variable that was not a plain value, or whose node is a typed object's (freshOf); one * holding what this writer cannot write at any depth (unwritableIn); one with no form at all, a * container none of whose elements could be read (_heldNone) or a size that is no count - * (_refuseNoSize). + * (_refuseNoSize); and one holding a container read short at any depth (shortIn). * * One rule for freshOf, which throws it, and for the editor, which takes no edit a save would * refuse so (MatNode._editRefusal): the two cannot come to disagree. What it does not judge is @@ -344,8 +344,89 @@ export function freshRefusal(node, record) { } throw e; } + const short = shortIn(value); + if (short) { + return refusal(name, short.path + ' is ' + short.what + ', and a save would write the ones it does not hold as empty'); + } + return null; +} +/** + * The first container at or under `at` that holds fewer elements than it declares, read short + * out of a damaged record (MatParser's "declares 3 cell(s) and only 1 could be read"), with its + * path and what it holds; null for none. MatWriter writes each element it does not hold as an + * empty double, a hole (cellBody, structBody), which is a value the file did not hold, and past + * its budget refuses the save: a 1x600000 cell holding one element was 599,999 of them. So such a + * variable is written only as it was read, or renamed. A container the node ceiling built without + * its rows is asked of the variable it was read as, which is what it is written as. + */ +function shortIn(at) { + const node = valueNodeOf(at); + if (!node) { + return null; + } + if (node._cutByCeiling && node._matVar) { + return shortVariableIn(node._matVar, node.matlabPath); + } + const declared = (node._dims || []).reduce((a, b) => a * b, 1); + const isStruct = node._kind === 'scalar' && node._scalarType === 'struct'; + if (node._kind !== 'cell' && !isStruct) { + return null; + } + // A struct array's rows are its elements, and one with no fields past the cap has none: it is + // written as the bytes it was read from (MatlabVariableNode._unexpandedStruct). + const holdsElements = node._kind === 'cell' || (declared !== 1 && !node._unexpandedStruct()); + if (holdsElements && node.children.length < declared) { + return { path: node.matlabPath, what: heldPhrase(node._dims, node._kind === 'cell' ? 'cell' : 'struct array', node.children.length) }; + } + for (const child of node.children) { + const below = shortIn(child); + if (below) { + return below; + } + } return null; } +// shortIn, of a variable as MatParser read it. +function shortVariableIn(v, path) { + if (!v) { + return null; + } + const dims = dimsOf(v); + const declared = dims.reduce((a, b) => a * b, 1); + if (v.className === 'cell') { + const members = flatValues(v.value); + const held = members.slice(0, declared).filter(Boolean).length; + if (held < declared) { + return { path, what: heldPhrase(dims, 'cell', held) }; + } + for (let i = 0; i < members.length; i++) { + const below = shortVariableIn(members[i], path + '{' + (i + 1) + '}'); + if (below) { + return below; + } + } + } + if (v.className === 'struct' && v.fields) { + for (const name of Object.keys(v.fields)) { + const held = v.fields[name]; + const elements = Array.isArray(held) ? held : [held]; + const present = elements.slice(0, declared).filter(Boolean).length; + if (present < declared) { + return { path, what: heldPhrase(dims, 'struct array', present) + ' in its field ' + name }; + } + for (let e = 0; e < elements.length; e++) { + const below = shortVariableIn(elements[e], path + (Array.isArray(held) ? '(' + (e + 1) + ')' : '') + '.' + name); + if (below) { + return below; + } + } + } + } + return null; +} +function heldPhrase(dims, what, held) { + return 'a ' + dims.join('x') + ' ' + what + ' holding ' + held + ' of the ' + dims.reduce((a, b) => a * b, 1) + ' elements it declares'; +} // `node` as the node of a plain MATLAB value, or null for a node of another class: a typed // object's (a ParameterNode, a BusNode). Asked of what the node does rather than of its class, // which this layer does not import (test/moduleBoundaries): a MatlabVariableNode, and only it, diff --git a/dist/datamodel/parser/MatFileWriter.js.map b/dist/datamodel/parser/MatFileWriter.js.map index be5866df..6e2be1dd 100644 --- a/dist/datamodel/parser/MatFileWriter.js.map +++ b/dist/datamodel/parser/MatFileWriter.js.map @@ -1 +1 @@ -{"version":3,"file":"MatFileWriter.js","sourceRoot":"","sources":["../../../src/datamodel/parser/MatFileWriter.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"MatFileWriter.js","sourceRoot":"","sources":["../../../src/datamodel/parser/MatFileWriter.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/datamodel/parser/MatFileWriter.ts b/src/datamodel/parser/MatFileWriter.ts index c0769007..669d26ba 100644 --- a/src/datamodel/parser/MatFileWriter.ts +++ b/src/datamodel/parser/MatFileWriter.ts @@ -359,7 +359,7 @@ function freshOf(node: BaseNode, record: MatRecord | null, compress: boolean): P * held to; a variable that was not a plain value, or whose node is a typed object's (freshOf); one * holding what this writer cannot write at any depth (unwritableIn); one with no form at all, a * container none of whose elements could be read (_heldNone) or a size that is no count - * (_refuseNoSize). + * (_refuseNoSize); and one holding a container read short at any depth (shortIn). * * One rule for freshOf, which throws it, and for the editor, which takes no edit a save would * refuse so (MatNode._editRefusal): the two cannot come to disagree. What it does not judge is @@ -392,9 +392,93 @@ export function freshRefusal(node: BaseNode, record: MatRecord | null): MatWrite } throw e; } + const short = shortIn(value); + if (short) { + return refusal(name, short.path + ' is ' + short.what + ', and a save would write the ones it does not hold as empty'); + } + return null; +} + +/** + * The first container at or under `at` that holds fewer elements than it declares, read short + * out of a damaged record (MatParser's "declares 3 cell(s) and only 1 could be read"), with its + * path and what it holds; null for none. MatWriter writes each element it does not hold as an + * empty double, a hole (cellBody, structBody), which is a value the file did not hold, and past + * its budget refuses the save: a 1x600000 cell holding one element was 599,999 of them. So such a + * variable is written only as it was read, or renamed. A container the node ceiling built without + * its rows is asked of the variable it was read as, which is what it is written as. + */ +function shortIn(at: BaseNode): { path: string; what: string } | null { + const node = valueNodeOf(at); + if (!node) { + return null; + } + if (node._cutByCeiling && node._matVar) { + return shortVariableIn(node._matVar, node.matlabPath); + } + const declared = (node._dims || []).reduce((a, b) => a * b, 1); + const isStruct = node._kind === 'scalar' && node._scalarType === 'struct'; + if (node._kind !== 'cell' && !isStruct) { + return null; + } + // A struct array's rows are its elements, and one with no fields past the cap has none: it is + // written as the bytes it was read from (MatlabVariableNode._unexpandedStruct). + const holdsElements = node._kind === 'cell' || (declared !== 1 && !node._unexpandedStruct()); + if (holdsElements && node.children.length < declared) { + return { path: node.matlabPath, what: heldPhrase(node._dims, node._kind === 'cell' ? 'cell' : 'struct array', node.children.length) }; + } + for (const child of node.children) { + const below = shortIn(child); + if (below) { + return below; + } + } + return null; +} + +// shortIn, of a variable as MatParser read it. +function shortVariableIn(v: MatVariable | null | undefined, path: string): { path: string; what: string } | null { + if (!v) { + return null; + } + const dims = dimsOf(v); + const declared = dims.reduce((a, b) => a * b, 1); + if (v.className === 'cell') { + const members = flatValues(v.value) as (MatVariable | null)[]; + const held = members.slice(0, declared).filter(Boolean).length; + if (held < declared) { + return { path, what: heldPhrase(dims, 'cell', held) }; + } + for (let i = 0; i < members.length; i++) { + const below = shortVariableIn(members[i], path + '{' + (i + 1) + '}'); + if (below) { + return below; + } + } + } + if (v.className === 'struct' && v.fields) { + for (const name of Object.keys(v.fields)) { + const held = v.fields[name]; + const elements = Array.isArray(held) ? held : [held]; + const present = elements.slice(0, declared).filter(Boolean).length; + if (present < declared) { + return { path, what: heldPhrase(dims, 'struct array', present) + ' in its field ' + name }; + } + for (let e = 0; e < elements.length; e++) { + const below = shortVariableIn(elements[e], path + (Array.isArray(held) ? '(' + (e + 1) + ')' : '') + '.' + name); + if (below) { + return below; + } + } + } + } return null; } +function heldPhrase(dims: number[], what: string, held: number): string { + return 'a ' + dims.join('x') + ' ' + what + ' holding ' + held + ' of the ' + dims.reduce((a, b) => a * b, 1) + ' elements it declares'; +} + // `node` as the node of a plain MATLAB value, or null for a node of another class: a typed // object's (a ParameterNode, a BusNode). Asked of what the node does rather than of its class, // which this layer does not import (test/moduleBoundaries): a MatlabVariableNode, and only it, diff --git a/test/matEditGate.test.ts b/test/matEditGate.test.ts index 9d88d2ab..217f2d56 100644 --- a/test/matEditGate.test.ts +++ b/test/matEditGate.test.ts @@ -26,7 +26,7 @@ import MatNode from '../src/datamodel/node/container/MatNode.js'; import { toDTO } from '../src/core/dto.js'; import { createSession } from '../src/index.js'; import { zlibSync } from 'fflate'; -import { CLASS, matFile, numericVar, u32le } from './tools/matBytes.js'; +import { CLASS, cellVar, matFile, numericVar, structVar, u32le } from './tools/matBytes.js'; const TEST_ROOT = fileURLToPath(new URL('.', import.meta.url)); const MAT_CHECK = join(TEST_ROOT, 'fixtures', 'mat-check'); @@ -475,6 +475,24 @@ describe('what each kind of variable of a .mat takes', () => { expect(readBack(save(), root.children.indexOf(by('kp')))).toEqual(shownAs(by('kp'))); }); + it('a variable holding a container read short, at any depth: renamed and deleted, nothing in it edited', () => { + // A save would write the elements the reader could not read as empty doubles, which the file + // did not hold (MatFileWriter.shortIn). + const short = cellVar('', [scalar('', 1)], [1, 3]); + const { root, by, edit, save } = opened(matFile([cellVar('c', [scalar('', 1)], [1, 3]), structVar('s', ['a', 'b'], [{ a: short, b: scalar('', 2) }]), scalar('ok', 3)])); + const why = { + c: 'Cannot edit "c": c is a 1x3 cell holding 1 of the 3 elements it declares, and a save would write the ones it does not hold as empty.', + s: 'Cannot edit "s": s.a is a 1x3 cell holding 1 of the 3 elements it declares, and a save would write the ones it does not hold as empty.', + }; + expect(edit(by('c').children[0], 'Value', '5')).toMatchObject({ error: true, reason: why.c }); + expect(edit(by('s').children[1], 'Value', '5')).toMatchObject({ error: true, reason: why.s }); + expect([by('c').canAddChild(), by('s').canAddChild(), by('ok').valueEditable]).toEqual([false, false, true]); + expect(root.dirty).toBe(false); + expect(edit(by('c'), 'Name', 'c2')).toBe(true); + expect(edit(by('ok'), 'Value', '4')).toBe(true); + expect(parseMat(arrayBufferOf(save())).records.map((r) => r.name)).toEqual(['c2', 's', 'ok']); + }); + it('a container the node ceiling built without its rows is judged by what it was read as', () => { // nested_handles.mat's c_fh is a cell of function handles. Built with no rows, it showed no // handle to refuse, and took an edit the save then refused. diff --git a/test/matFileSave.test.ts b/test/matFileSave.test.ts index 0fd07794..429e098d 100644 --- a/test/matFileSave.test.ts +++ b/test/matFileSave.test.ts @@ -685,12 +685,21 @@ describe('a save that cannot write a variable as what it is is refused, naming i ); }); - it('a value past the unbacked-bytes budget, restated naming the variable', () => { - // A cell declaring 1x600000 and holding one element: edited, the 599,999 it does not hold - // are each the empty double MatWriter writes for a hole, past the budget. - const { by, edit, save } = opened(matFile([cellVar('big', [scalar('', 1)], [1, 600000])])); - expect(edit(by('big').children[0], 'Value', '2')).toBe(true); - const thrown = thrownBy(save) as MatBudgetError; + it('a value read short, whose holes are a value the file did not hold, and past the budget no save', () => { + // A cell declaring 1x600000 and holding one element: written fresh, the 599,999 it does not + // hold would each be the empty double MatWriter writes for a hole, past the unbacked-bytes + // budget. So it is written only as it was read (freshRefusal, shortIn), whatever its size. + for (const declared of [600000, 3]) { + const { by, edit, save } = opened(matFile([cellVar('big', [scalar('', 1)], [1, declared])])); + expect(edit(by('big').children[0], 'Value', '2'), String(declared)).toMatchObject({ error: true }); + by('big').children[0]._markModified(); + expect(thrownBy(save).message, String(declared)).toBe( + `Cannot write "big": big is a 1x${declared} cell holding 1 of the ${declared} elements it declares, and a save would write the ones it does not hold as empty. Nothing was written.`, + ); + } + // Unbacked, MatWriter refuses it for its budget, restated naming the variable, as a dictionary's save does. + const { by } = opened(matFile([cellVar('big', [scalar('', 1)], [1, 600000])])); + const thrown = thrownBy(() => by('big')._matStream()) as MatBudgetError; expect([thrown instanceof MatBudgetError, thrown.entry, thrown.reason]).toEqual([true, 'big', 'budget']); expect(thrown.message).toMatch(/^Cannot write "big": big is a 1x600000 cell holding 1 of its 600000 elements, /); }); From 3f1f75fee29c419fd37b2cdf6c1635bb326d2319 Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Tue, 20 Oct 2026 19:06:12 -0400 Subject: [PATCH 09/13] [wip] Keep an empty struct array's field names, and an empty array's complexity, when it is written again The live MATLAB gate found two values a MAT-file save wrote as another: struct('a', {}) loaded with no field, and complex(zeros(0,0)) loaded real. Neither showed in core's own re-parse, because the reader and the model carried the same loss: MatParser held `fields: {}` for a struct array of no element, and the node rebuilt an empty's complexity from its elements, of which it has none. An edit beside such a value (a struct field, a cell member) was enough to write it fresh. Fixed where every writer reads it, so a copy into a dictionary is right too, which it was not: the reader keeps each declared name with an empty list, the node keeps them (_emptyStructFields) and writes them as the binary reader's own bag, and _isComplexValue answers an empty from what it was read as. A binary dictionary gets MATLAB's own `` and `IsComplex="1"`, a text one the bag and the MAT stream, and MATLAB R2027a reads all 72 such copies back as load reads the variable (probe_empty_copies_readback). A sweep that compares every variable written fresh with the file's own element, by a walker that does not use the package's reader, closes the blind spot. It found three more: a complex element's -0 part written as +0 (the read side now keeps the sign), a variable saved as global written as not global (the fresh element now keeps the bit), and values MATLAB does not load as stored (char data in miUINT8 or miUTF32, among others) written as this reader's guess, which a save now writes only as read, or renamed, so the editor freezes them. The gate, re-run with eight more cases and a bit-for-bit comparison of every double and single: 104 of 104 pass. --- README.md | 8 +- .../node/data/MatlabVariableNode.d.ts | 1 + .../node/data/MatlabVariableNode.d.ts.map | 2 +- .../datamodel/node/data/MatlabVariableNode.js | 56 +- .../node/data/MatlabVariableNode.js.map | 2 +- dist/datamodel/parser/MatFileCheck.d.ts | 10 + dist/datamodel/parser/MatFileCheck.d.ts.map | 2 +- dist/datamodel/parser/MatFileCheck.js | 30 + dist/datamodel/parser/MatFileCheck.js.map | 2 +- dist/datamodel/parser/MatFileWriter.d.ts | 3 +- dist/datamodel/parser/MatFileWriter.d.ts.map | 2 +- dist/datamodel/parser/MatFileWriter.js | 67 +- dist/datamodel/parser/MatFileWriter.js.map | 2 +- dist/datamodel/parser/MatParser.d.ts.map | 2 +- dist/datamodel/parser/MatParser.js | 9 +- dist/datamodel/parser/MatParser.js.map | 2 +- dist/datamodel/parser/SparseData.d.ts | 7 +- dist/datamodel/parser/SparseData.d.ts.map | 2 +- dist/datamodel/parser/SparseData.js | 18 +- dist/datamodel/parser/SparseData.js.map | 2 +- src/datamodel/node/data/MatlabVariableNode.ts | 63 +- src/datamodel/parser/MatFileCheck.ts | 28 + src/datamodel/parser/MatFileWriter.ts | 73 +- src/datamodel/parser/MatParser.ts | 9 +- src/datamodel/parser/SparseData.ts | 18 +- test/budgetFailsClosed.test.ts | 9 +- test/emptyCopiesReadback.test.ts | 54 + test/emptyNamesAndComplexityCopy.test.ts | 226 ++ test/matFreshFidelity.test.ts | 255 ++ test/matNoPayload.test.ts | 5 +- test/matParser.test.ts | 12 +- test/parity/matlab/README.md | 32 +- test/parity/matlab/empty_copies_readback.mjs | 130 ++ .../matlab/empty_copies_readback.truth.json | 2047 +++++++++++++++++ .../parity/matlab/matWritebackDefects.test.ts | 107 +- .../matlab/probe_empty_copies_readback.m | 65 + test/parity/matlab/probe_mat_writeback.m | 43 +- test/parity/matlab/probe_mat_writeback.mjs | 94 + test/sparseFixtures.test.ts | 30 +- test/sparseMemberBytes.test.ts | 8 +- test/tools/matElements.ts | 305 +++ 41 files changed, 3724 insertions(+), 118 deletions(-) create mode 100644 test/emptyCopiesReadback.test.ts create mode 100644 test/emptyNamesAndComplexityCopy.test.ts create mode 100644 test/matFreshFidelity.test.ts create mode 100644 test/parity/matlab/empty_copies_readback.mjs create mode 100644 test/parity/matlab/empty_copies_readback.truth.json create mode 100644 test/parity/matlab/probe_empty_copies_readback.m create mode 100644 test/tools/matElements.ts diff --git a/README.md b/README.md index 91d19705..517b36c3 100644 --- a/README.md +++ b/README.md @@ -119,7 +119,10 @@ record the reader could not read; the header keeps its text. A variable only renamed is its own bytes with the new name in them. One whose value was edited, and one added, is written from the model, after the last variable and before the objects, and compressed only if the file already holds a compressed record, so a -`-v6` file stays one. Before the bytes are handed back they are read again, and +`-v6` file stays one. Written from the model, a variable is still the one it was +read as in every part it holds: a struct array of no element keeps its field +names, an empty its complexity, a zero its sign, and a variable saved as global +stays global. Before the bytes are handed back they are read again, and held to the rules MATLAB loads a file by: a save that breaks one the file as read did not break is refused, with a `MatWriteError` naming the variable, and nothing is written. @@ -137,6 +140,9 @@ These take a rename and a delete and nothing else: - a plain variable holding any of these, or a cell or struct array the reader read short (holding fewer elements than it declares, which a save would write as empty), at any depth: neither its value nor any row under it; +- a plain variable stored in a form MATLAB does not load as it is (char data in + `miUINT8` or `miUTF32`, a numeric class in another class's type, a matrix its + parts do not fill), whose value as read is this package's guess at it; - either of two variables of one name, until one is renamed: MATLAB loads only one of them. diff --git a/dist/datamodel/node/data/MatlabVariableNode.d.ts b/dist/datamodel/node/data/MatlabVariableNode.d.ts index 4c449cdd..f01a8e93 100644 --- a/dist/datamodel/node/data/MatlabVariableNode.d.ts +++ b/dist/datamodel/node/data/MatlabVariableNode.d.ts @@ -34,6 +34,7 @@ export default class MatlabVariableNode extends DataNode { _elementType: string | null; _readFromStream?: true; _cutByCeiling?: number; + _emptyStructFields?: string[]; constructor(name: string, parent: BaseNode | null, serial?: Record); get Value(): unknown; set Value(v: unknown); diff --git a/dist/datamodel/node/data/MatlabVariableNode.d.ts.map b/dist/datamodel/node/data/MatlabVariableNode.d.ts.map index 15d34ef0..54e28487 100644 --- a/dist/datamodel/node/data/MatlabVariableNode.d.ts.map +++ b/dist/datamodel/node/data/MatlabVariableNode.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"MatlabVariableNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/data/MatlabVariableNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"MatlabVariableNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/data/MatlabVariableNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/node/data/MatlabVariableNode.js b/dist/datamodel/node/data/MatlabVariableNode.js index 57432cb3..95ff611e 100644 --- a/dist/datamodel/node/data/MatlabVariableNode.js +++ b/dist/datamodel/node/data/MatlabVariableNode.js @@ -351,14 +351,13 @@ export default class MatlabVariableNode extends DataNode { // The Class column says complex and sparse as MATLAB's Workspace browser does, // `int16 (complex)`, `double (sparse)` (DisplayConvention.classColumnText): className is // MATLAB's class(), which says neither. Complex is what the writers take it for - // (_isComplexValue), and for an empty, which has no element to say so, what it was read as - // (_elementType): a .mat's complex(zeros(1,0)), or a binary dictionary's IsComplex="1". + // (_isComplexValue), an empty's included: what it was read as, a .mat's complex(zeros(1,0)), + // or a binary dictionary's IsComplex="1". _classColumn() { if (this._isOpaque) { return super._classColumn(); } - const complexEmpty = this._kind === 'array' && this._elementType === 'complex' && this._liveElements().length === 0; - return classColumnText(this.className, { complex: this._isComplexValue() || complexEmpty, sparse: !!this._sparse }); + return classColumnText(this.className, { complex: this._isComplexValue(), sparse: !!this._sparse }); } // A primitive variable's data type ('double', 'string', 'cell', …) is a real // data type and belongs in the DataType column. An opaque MCOS variable's @@ -1440,6 +1439,8 @@ export default class MatlabVariableNode extends DataNode { this._matVar = null; // A value typed in whole is built with all its rows, whatever the file's node ceiling did. delete this._cutByCeiling; + // Nor is it the empty struct array it may have been (_emptyStructFields). + delete this._emptyStructFields; this._rawInput = undefined; // Nor is it what a removal left of a complex array any more (_complexClass). this._collapsedClass = null; @@ -1766,7 +1767,8 @@ export default class MatlabVariableNode extends DataNode { return child; } _addStructField() { - const uniqueName = newFieldName(this.children.map((c) => c.name)); + // Nor the name of a field a struct array of no element has without a row (_emptyStructFields). + const uniqueName = newFieldName([...(this._emptyStructFields ?? []), ...this.children.map((c) => c.name)]); const child = MatlabVariableNode._createScalar(0, 'double', uniqueName, this); this.addChild(child); this._markModified(); @@ -2147,6 +2149,12 @@ export default class MatlabVariableNode extends DataNode { // (_matStream), naming the entry and the reason, rather than written in the rank-2 form // below, which is not a form MATLAB writes there for it. Elsewhere it falls through as // before: a binary dictionary's XML spells it element by element. + // + // A complex array of no element too (_isComplexValue), whose stream says complex where + // `[]` cannot: MATLAB's own text dictionary spells one as the real empty, `[]` or + // `{"_type": "int16", "_value": "[]"}` (dispcat_text.sldd's dx_complex_0x0 and + // dx_complex_int16_1x0), so that a copy of one into it, or through it into a binary + // dictionary, whose spelling `IsComplex="1"` does say so (_serializeArrayXml), lost it. const nd = effectiveDims(this._dims).length > 2; if (this._sparse || nd || this._isComplexValue() || this._unexpandedStruct()) { const cdata = this._serializeCdata(nd && this._ownerFormat() === 'json'); @@ -2195,6 +2203,14 @@ export default class MatlabVariableNode extends DataNode { return false; } const elems = this._liveElements(); + // An array of no element has none to say so, and is complex when it was read as one + // (_elementType): a .mat's complex(zeros(1,0)), a binary dictionary's IsComplex="1". Asked + // of its elements, it was real, and once anything marked it edited it was written so + // (_buildVarObject): measured against MATLAB R2027a, a .mat save of complex(zeros(0,0)) + // loaded with isreal true. + if (elems.length === 0) { + return this._elementType === 'complex'; + } // ANY element, not the first: the element editor takes only a real number, so after // x(1) = 7 the first element is the number 7 and the rest are still complex, and // asking the first alone wrote [7+0i NaN+0i 3-4i] out as the real [7 0 3]. @@ -2644,6 +2660,16 @@ export default class MatlabVariableNode extends DataNode { // unchanged. _serializeStructValue() { const dims = effectiveDims(this._dims); + // A struct array of no element, with fields (_emptyStructFields): the bag the binary reader + // makes of MATLAB's own spelling of one, `

` + // (BinarySlddParser.structValue), with no element and its names in `_fields`, which is where + // StructNode writes them back from, as those ``s. Built of its rows like any other, it + // named no field: a copy of a .mat's struct('a', {}) went into a binary dictionary as a + // struct of none. + const named = elementCount(dims) === 0 && this.children.length === 0 ? this._emptyStructFields ?? [] : []; + if (named.length > 0) { + return { _array_type: 'Struct', _dimensions: dims, _elements: [], _fields: named.slice(), _mw_element_type: 'MATLABArray' }; + } // A .mat struct ARRAY hangs its ELEMENTS off this node (named 1..N, each a // struct-kind node whose own children are the fields); a 1x1 hangs the fields // directly. StructNode owns neither case on the .mat path, so both are here — @@ -2942,7 +2968,11 @@ export default class MatlabVariableNode extends DataNode { if (type === 'string' && this._rawInput?._emptyDims && two.length === 2 && elementCount(two) === 0) { return DataNode._stringXml(tagName, attrStr, [], two, indent); } - return (p + '<' + tagName + attrStr + ' Class="' + escapeXml(type || 'double') + '" Dimension="' + dimAttr + '"/>'); + // A complex empty says so, as MATLAB's own does: `Class="double" IsComplex="1" + // Dimension="0*0"/>` and `Class="int16" IsComplex="1" Dimension="1*0"/>` (dispcat_bin.sldd). + // Without it, it was read back real. + const complex = !this._sparse && this._isComplexValue() ? ' IsComplex="1"' : ''; + return (p + '<' + tagName + attrStr + ' Class="' + escapeXml(type || 'double') + '"' + complex + ' Dimension="' + dimAttr + '"/>'); } // A sparse array reaches here only with no stream to be the hex of (_sparseFallback); // past what this package lays out densely, all there is to write is its summary, @@ -3262,6 +3292,14 @@ export default class MatlabVariableNode extends DataNode { } } else { + // An array of no element is its field names, each with no element, as MatParser reads + // one (_emptyStructFields): rebuilt from its rows, of which it has none, it was a + // struct of no field. + if (elementCount(this._dims) === 0) { + for (const fname of this._emptyStructFields ?? []) { + setOwn(fields, fname, []); + } + } for (const child of this.children) { setOwn(fields, child.name, MatlabVariableNode._memberVar(child)); } @@ -3667,6 +3705,12 @@ export default class MatlabVariableNode extends DataNode { } const fieldNames = Object.keys(variable.fields); const count = elementCount(node._dims); + // A struct array of no element has no row, and its field names nowhere but here + // (_emptyStructFields). + if (count === 0) { + node._emptyStructFields = fieldNames; + return node; + } if (count <= 1) { // Its fields are its rows, all of them or none past a .mat file's node ceiling // (matNodeCeiling). diff --git a/dist/datamodel/node/data/MatlabVariableNode.js.map b/dist/datamodel/node/data/MatlabVariableNode.js.map index a029292c..74d567c7 100644 --- a/dist/datamodel/node/data/MatlabVariableNode.js.map +++ b/dist/datamodel/node/data/MatlabVariableNode.js.map @@ -1 +1 @@ -{"version":3,"file":"MatlabVariableNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/data/MatlabVariableNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"MatlabVariableNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/data/MatlabVariableNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/parser/MatFileCheck.d.ts b/dist/datamodel/parser/MatFileCheck.d.ts index 6e0b6e61..862324d9 100644 --- a/dist/datamodel/parser/MatFileCheck.d.ts +++ b/dist/datamodel/parser/MatFileCheck.d.ts @@ -69,6 +69,16 @@ export declare const MAT_CHECK_INFLATE_BUDGET: number; * are not a MAT-file at all are a violation too. */ export declare function checkMatFile(bytes: Uint8Array, options?: MatCheckOptions): MatViolation[]; +/** + * What one variable's miMATRIX element (its tag and body, as a record holds it inflated) breaks + * of the rules MATLAB reads a matrix by, at any depth: its char data, its storage, how its + * sub-elements fill it, its name. Not the rules of a file (its header, framing, compression, + * placement), which only a whole file has: those are checkMatFile's. Every `at` is 0, the + * element's own start, and each message says where in the element. Asked of a variable as it was + * read, whose element is in memory already, so nothing is inflated; and like checkMatFile it never + * throws, and stops at its budget with a `budget` note. + */ +export declare function checkMatElement(element: Uint8Array, options?: MatCheckOptions): MatViolation[]; /** * The violations of `after` that `before` does not have: what a rewrite of a file added to it. * diff --git a/dist/datamodel/parser/MatFileCheck.d.ts.map b/dist/datamodel/parser/MatFileCheck.d.ts.map index 06f3cd0f..11feff4f 100644 --- a/dist/datamodel/parser/MatFileCheck.d.ts.map +++ b/dist/datamodel/parser/MatFileCheck.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"MatFileCheck.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/MatFileCheck.ts"],"names":[],"mappings":"AAuEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,MAAM,gBAAgB,GACxB,YAAY,GACZ,YAAY,GACZ,kBAAkB,GAClB,YAAY,GACZ,SAAS,GACT,gBAAgB,GAChB,cAAc,GACd,oBAAoB,GACpB,kBAAkB,GAClB,oBAAoB,GACpB,kBAAkB,GAClB,MAAM,GACN,gBAAgB,GAChB,WAAW,GACX,YAAY,GACZ,QAAQ,GACR,aAAa,GACb,SAAS,GACT,WAAW,GACX,QAAQ,CAAC;AAEb,6CAA6C;AAC7C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,gBAAgB,CAAC;IACvB;;;;OAIG;IACH,EAAE,EAAE,MAAM,CAAC;IACX,sFAAsF;IACtF,OAAO,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,sFAAsF;AACtF,MAAM,WAAW,eAAe;IAC9B,4FAA4F;IAC5F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yGAAyG;IACzG,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;GAGG;AACH,eAAO,MAAM,wBAAwB,QAAU,CAAC;AAEhD;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,QAAU,CAAC;AAsLhD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,GAAE,eAAoB,GAAG,YAAY,EAAE,CAa7F;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,SAAS,YAAY,EAAE,EAC/B,KAAK,EAAE,SAAS,YAAY,EAAE,EAC9B,OAAO,GAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAa,GAC/C,YAAY,EAAE,CAkBhB"} \ No newline at end of file +{"version":3,"file":"MatFileCheck.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/MatFileCheck.ts"],"names":[],"mappings":"AAuEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,MAAM,gBAAgB,GACxB,YAAY,GACZ,YAAY,GACZ,kBAAkB,GAClB,YAAY,GACZ,SAAS,GACT,gBAAgB,GAChB,cAAc,GACd,oBAAoB,GACpB,kBAAkB,GAClB,oBAAoB,GACpB,kBAAkB,GAClB,MAAM,GACN,gBAAgB,GAChB,WAAW,GACX,YAAY,GACZ,QAAQ,GACR,aAAa,GACb,SAAS,GACT,WAAW,GACX,QAAQ,CAAC;AAEb,6CAA6C;AAC7C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,gBAAgB,CAAC;IACvB;;;;OAIG;IACH,EAAE,EAAE,MAAM,CAAC;IACX,sFAAsF;IACtF,OAAO,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,sFAAsF;AACtF,MAAM,WAAW,eAAe;IAC9B,4FAA4F;IAC5F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yGAAyG;IACzG,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;GAGG;AACH,eAAO,MAAM,wBAAwB,QAAU,CAAC;AAEhD;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,QAAU,CAAC;AAsLhD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,GAAE,eAAoB,GAAG,YAAY,EAAE,CAa7F;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,GAAE,eAAoB,GAAG,YAAY,EAAE,CAiBlG;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,SAAS,YAAY,EAAE,EAC/B,KAAK,EAAE,SAAS,YAAY,EAAE,EAC9B,OAAO,GAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAa,GAC/C,YAAY,EAAE,CAkBhB"} \ No newline at end of file diff --git a/dist/datamodel/parser/MatFileCheck.js b/dist/datamodel/parser/MatFileCheck.js index f49cf52b..b26e92e6 100644 --- a/dist/datamodel/parser/MatFileCheck.js +++ b/dist/datamodel/parser/MatFileCheck.js @@ -215,6 +215,36 @@ export function checkMatFile(bytes, options = {}) { // Stable, so the violations of one place keep the order they were found in. return check.out.sort((a, b) => a.at - b.at); } +/** + * What one variable's miMATRIX element (its tag and body, as a record holds it inflated) breaks + * of the rules MATLAB reads a matrix by, at any depth: its char data, its storage, how its + * sub-elements fill it, its name. Not the rules of a file (its header, framing, compression, + * placement), which only a whole file has: those are checkMatFile's. Every `at` is 0, the + * element's own start, and each message says where in the element. Asked of a variable as it was + * read, whose element is in memory already, so nothing is inflated; and like checkMatFile it never + * throws, and stops at its budget with a `budget` note. + */ +export function checkMatElement(element, options = {}) { + const check = new Check(options); + const view = new DataView(element.buffer, element.byteOffset, element.byteLength); + const space = { view, fileAt: () => 0, where: (o) => `Byte ${o} of its element` }; + try { + if (element.byteLength < 8) { + check.file('element', 0, `The element holds ${element.byteLength} byte(s), fewer than one element's tag.`); + } + else if (view.getUint32(0, true) !== MI_MATRIX) { + check.file('element', 0, `The element is a data element of ${typeName(view.getUint32(0, true))}, not a matrix.`); + } + else { + topMatrix(check, space, 0, 8, Math.min(8 + view.getUint32(4, true), element.byteLength)); + } + } + catch (err) { + const why = err instanceof OutOfBudget ? err.message : `an error in the check itself (${reasonOf(err)})`; + check.file('budget', 0, `The check of the element stopped at ${why}, so nothing from there on was checked.`, check.variable); + } + return check.out; +} /** * The violations of `after` that `before` does not have: what a rewrite of a file added to it. * diff --git a/dist/datamodel/parser/MatFileCheck.js.map b/dist/datamodel/parser/MatFileCheck.js.map index 1800ee6d..c7d01ee7 100644 --- a/dist/datamodel/parser/MatFileCheck.js.map +++ b/dist/datamodel/parser/MatFileCheck.js.map @@ -1 +1 @@ -{"version":3,"file":"MatFileCheck.js","sourceRoot":"","sources":["../../../src/datamodel/parser/MatFileCheck.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"MatFileCheck.js","sourceRoot":"","sources":["../../../src/datamodel/parser/MatFileCheck.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/parser/MatFileWriter.d.ts b/dist/datamodel/parser/MatFileWriter.d.ts index dc725942..b87a95b3 100644 --- a/dist/datamodel/parser/MatFileWriter.d.ts +++ b/dist/datamodel/parser/MatFileWriter.d.ts @@ -44,7 +44,8 @@ export declare function renameWhy(record: MatRecord): string | null; * held to; a variable that was not a plain value, or whose node is a typed object's (freshOf); one * holding what this writer cannot write at any depth (unwritableIn); one with no form at all, a * container none of whose elements could be read (_heldNone) or a size that is no count - * (_refuseNoSize); and one holding a container read short at any depth (shortIn). + * (_refuseNoSize); one holding a container read short at any depth (shortIn); and one stored in + * a form MATLAB does not load as it is (storedRefusal). * * One rule for freshOf, which throws it, and for the editor, which takes no edit a save would * refuse so (MatNode._editRefusal): the two cannot come to disagree. What it does not judge is diff --git a/dist/datamodel/parser/MatFileWriter.d.ts.map b/dist/datamodel/parser/MatFileWriter.d.ts.map index 9dfa9fd3..8c3b6ab2 100644 --- a/dist/datamodel/parser/MatFileWriter.d.ts.map +++ b/dist/datamodel/parser/MatFileWriter.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"MatFileWriter.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/MatFileWriter.ts"],"names":[],"mappings":"AAuDA,OAAO,KAAK,EAAE,SAAS,EAA0B,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAkB,aAAa,EAAgD,MAAM,gBAAgB,CAAC;AAK7G,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAEhD,OAAO,KAAK,OAAO,MAAM,8BAA8B,CAAC;AAMxD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,CAuB7D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,GAAG,IAAI,CA6BvE;AAsBD,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,SAAS,GAAG,IAAI,CAKpF;AAgED,wGAAwG;AACxG,eAAO,MAAM,cAAc,QAEmC,CAAC;AAE/D;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,GAAG,aAAa,GAAG,IAAI,CAmB1H;AAkBD,oIAAoI;AACpI,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAmCD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAQ1D;AA0BD;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,GAAG,aAAa,GAAG,IAAI,CAgC3F;AAoID;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAOhF"} \ No newline at end of file +{"version":3,"file":"MatFileWriter.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/MatFileWriter.ts"],"names":[],"mappings":"AAwDA,OAAO,KAAK,EAAE,SAAS,EAA0B,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAkB,aAAa,EAAgD,MAAM,gBAAgB,CAAC;AAK7G,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAEhD,OAAO,KAAK,OAAO,MAAM,8BAA8B,CAAC;AAMxD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,CAuB7D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,GAAG,IAAI,CA6BvE;AAsBD,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,SAAS,GAAG,IAAI,CAKpF;AAgED,wGAAwG;AACxG,eAAO,MAAM,cAAc,QAEmC,CAAC;AAE/D;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,GAAG,aAAa,GAAG,IAAI,CAmB1H;AAkBD,oIAAoI;AACpI,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAmCD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAQ1D;AA0BD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,GAAG,aAAa,GAAG,IAAI,CAwC3F;AAuLD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAOhF"} \ No newline at end of file diff --git a/dist/datamodel/parser/MatFileWriter.js b/dist/datamodel/parser/MatFileWriter.js index 33fb6046..b928076d 100644 --- a/dist/datamodel/parser/MatFileWriter.js +++ b/dist/datamodel/parser/MatFileWriter.js @@ -38,8 +38,9 @@ // // EVERY DOUBT REFUSES THE SAVE. A save that cannot write a variable as what it is throws a // MatWriteError naming it, and nothing is written: an object, a function handle or a value the -// reader did not decode, whose edit this writer cannot write; a variable stored after the -// subsystem, where MATLAB does not read it; a file whose records do not tile it, or that was +// reader did not decode, whose edit this writer cannot write; a variable stored in a form MATLAB +// does not load as it is, whose value as read is this reader's guess at it; a variable stored +// after the subsystem, where MATLAB does not read it; a file whose records do not tile it, or that was // opened without them. And before the bytes are handed back they are read again, and a record // that does not read back as planned refuses the save as well (selfCheck), as does one that breaks // a rule MATLAB loads a file by that the file it was read from did not break (MatFileCheck). @@ -53,7 +54,7 @@ import { zlibSync } from 'fflate'; import { inflateZlib } from './Inflate.js'; import { parseMat, functionHandleOf } from './MatParser.js'; import { MatBudgetError, MatWriteError, classPhrase, elementNamed, encodeMatVariable } from './MatWriter.js'; -import { checkMatFile, violationsAdded } from './MatFileCheck.js'; +import { checkMatElement, checkMatFile, violationsAdded } from './MatFileCheck.js'; import { integerConversion } from './XmlUtils.js'; import { validateMatlabName } from '../matlabName.js'; const MI_MATRIX = 14; @@ -297,7 +298,7 @@ function freshOf(node, record, compress) { throw refused; } const value = valueNodeOf(node); - const named = elementNamed(freshElement(value), name); + const named = elementNamed(globalAsRead(freshElement(value), record), name); if (!named) { throw refusal(name, 'the element written for it has no name to replace'); } @@ -310,7 +311,8 @@ function freshOf(node, record, compress) { * held to; a variable that was not a plain value, or whose node is a typed object's (freshOf); one * holding what this writer cannot write at any depth (unwritableIn); one with no form at all, a * container none of whose elements could be read (_heldNone) or a size that is no count - * (_refuseNoSize); and one holding a container read short at any depth (shortIn). + * (_refuseNoSize); one holding a container read short at any depth (shortIn); and one stored in + * a form MATLAB does not load as it is (storedRefusal). * * One rule for freshOf, which throws it, and for the editor, which takes no edit a save would * refuse so (MatNode._editRefusal): the two cannot come to disagree. What it does not judge is @@ -348,8 +350,42 @@ export function freshRefusal(node, record) { if (short) { return refusal(name, short.path + ' is ' + short.what + ', and a save would write the ones it does not hold as empty'); } + // And one stored in a form MATLAB does not load as it is (storedRefusal). Last, so that a + // refusal that says more of the same damage (a container read short, a value not decoded) is + // the one given. + const stored = record ? storedRefusal(record) : null; + if (stored) { + return refusal(name, 'it is stored in a form MATLAB does not load as it is (' + stored + '), so there is no value of it a save ' + + 'can be held to: it is written only as it was read, or renamed'); + } return null; } +// The rules of MatFileCheck a variable's own element can break whose break says that what this +// package read of it is not a value MATLAB loads: char data MATLAB does not read as text, or +// reads otherwise (miUINT8 Latin-1 bytes, which this reader decodes as UTF-8, miUTF32, which it +// decodes as UTF-8 too, and CJK in miUINT16, of which MATLAB keeps the low byte of each unit), a +// char's UTF-8 that does not hold its count, a numeric class stored in another's type, a matrix +// its sub-elements do not fill, one MATLAB cannot read where it stands, a data part holding more +// or fewer elements than the dims say. Written fresh, each was this reader's guess at it, which +// MATLAB then loaded in its place: measured on MATLAB's verdict corpus (test/fixtures/mat-check), +// a 1x3 char stored as miUTF32 was written as the 1x12 of its bytes, and 'héllo' stored as miUINT8 +// as 'h\uFFFDllo'. Not a name (a fresh one is held to validateMatlabName), nor what only the file +// breaks around the element. +const VALUE_RULES = new Set(['char-type', 'utf8-count', 'int-storage', 'nbytes', 'element', 'data-size']); +// What `record`'s own element breaks of VALUE_RULES, as checkMatElement says it, or null. Of the +// element the reader read, which it holds whole (MatVariable._rawBytes), so nothing is inflated; +// once per record, whose bytes never change. +const storedVerdicts = new WeakMap(); +function storedRefusal(record) { + let verdict = storedVerdicts.get(record); + if (verdict === undefined) { + const element = record.variable?._rawBytes; + const broken = element ? checkMatElement(element).find((v) => VALUE_RULES.has(v.code)) : undefined; + verdict = broken ? broken.message.replace(/\.$/, '') : null; + storedVerdicts.set(record, verdict); + } + return verdict; +} /** * The first container at or under `at` that holds fewer elements than it declares, read short * out of a damaged record (MatParser's "declares 3 cell(s) and only 1 could be read"), with its @@ -448,6 +484,27 @@ function notPlain(v) { } return null; } +// Where an element's array flags keep its flags byte: past the element's tag and the flags' own, +// which MATLAB and MatWriter both write in the long form (8 bytes of tag, then 8 of data), and +// the byte after the class. Its bit 0x04 is MATLAB's global flag, which `save` sets on a variable +// declared global. +const FLAGS_BYTE = 17; +const GLOBAL_FLAG = 0x04; +// `element`, written fresh for the variable `record` holds, global when that one was. The flag is +// the workspace variable's and not its value's: no writer of a value sets it (MatWriter writes a +// value as `getByteStreamFromArray` holds it), and nothing in the node layer holds it, so written +// fresh a global variable was not one, and a rename splice alone kept it. +function globalAsRead(element, record) { + const read = record?.variable?._rawBytes; + const longFlags = (e) => e.byteLength > FLAGS_BYTE + 6 && u32At(e, 8) === 6 && u32At(e, 12) === 8; + if (!read || !longFlags(read) || !longFlags(element) || !(read[FLAGS_BYTE] & GLOBAL_FLAG) || element[FLAGS_BYTE] & GLOBAL_FLAG) { + return element; + } + // A copy: the element may be a view of the bytes the file was read from (_matStream's own). + const out = element.slice(); + out[FLAGS_BYTE] |= GLOBAL_FLAG; + return out; +} // The miMATRIX element `node`'s value is, with the empty name a stream's value has: the stream it // is written as in a dictionary (_matStream), which writes a sparse array no element row edited // and a struct array with no element rows as the bytes they were read from, and anything else as diff --git a/dist/datamodel/parser/MatFileWriter.js.map b/dist/datamodel/parser/MatFileWriter.js.map index 6e2be1dd..4c8eff5f 100644 --- a/dist/datamodel/parser/MatFileWriter.js.map +++ b/dist/datamodel/parser/MatFileWriter.js.map @@ -1 +1 @@ -{"version":3,"file":"MatFileWriter.js","sourceRoot":"","sources":["../../../src/datamodel/parser/MatFileWriter.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"MatFileWriter.js","sourceRoot":"","sources":["../../../src/datamodel/parser/MatFileWriter.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/parser/MatParser.d.ts.map b/dist/datamodel/parser/MatParser.d.ts.map index 477c87db..13a19bf3 100644 --- a/dist/datamodel/parser/MatParser.d.ts.map +++ b/dist/datamodel/parser/MatParser.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"MatParser.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/MatParser.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"MatParser.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/MatParser.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/parser/MatParser.js b/dist/datamodel/parser/MatParser.js index 90b62caa..0456fd56 100644 --- a/dist/datamodel/parser/MatParser.js +++ b/dist/datamodel/parser/MatParser.js @@ -1232,7 +1232,14 @@ export function parseMatrix(view, baseOffset, length, depth = 0) { // elements had 10,000 empty rows, and a 104 KB file holding 1,000 of them ran a // 512 MB heap out while it opened. MATLAB writes every field of every element, so an // array it wrote has every list already. - if (totalElements > 1) { + // + // So is every field of an array of NO element, each with its empty list: its names + // are all there is of it, `struct('a', {})` being a 0x0 struct with a field `a`. It + // held `{}`, and a writer writes the names a variable holds, so a .mat save of one + // and a copy of one into a dictionary's stream wrote a struct of no field (measured + // against MATLAB R2027a: the 0x0 a .mat save wrote for it loaded with fieldnames {}, + // where the file's had {'a'}). + if (totalElements !== 1) { for (const fn of fieldNames) { if (!Object.prototype.hasOwnProperty.call(fields, fn)) { setOwn(fields, fn, []); diff --git a/dist/datamodel/parser/MatParser.js.map b/dist/datamodel/parser/MatParser.js.map index 97502791..f100d5d6 100644 --- a/dist/datamodel/parser/MatParser.js.map +++ b/dist/datamodel/parser/MatParser.js.map @@ -1 +1 @@ -{"version":3,"file":"MatParser.js","sourceRoot":"","sources":["../../../src/datamodel/parser/MatParser.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"MatParser.js","sourceRoot":"","sources":["../../../src/datamodel/parser/MatParser.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/parser/SparseData.d.ts b/dist/datamodel/parser/SparseData.d.ts index bcd2ea24..d1f9a962 100644 --- a/dist/datamodel/parser/SparseData.d.ts +++ b/dist/datamodel/parser/SparseData.d.ts @@ -57,9 +57,10 @@ export declare function backedColumnsOf(s: SparseData): number; export declare function unbackedColumns(s: SparseData, dims: number[]): string | null; /** * One complex element as the node layer holds it, `1+2i`, `3-4i`, `1NaNi`, `1+Infi`: - * XmlUtils.formatComplexNum's spelling. The one spelling of an element of a complex array - * read out of MAT bytes, full or sparse (MatlabVariableNode._createFromMatNumeric), so the - * two show a value the same way, and the same way a binary dictionary's text shows it. + * XmlUtils.formatComplexNum's spelling, a -0 part's sign kept. The one spelling of an element + * of a complex array read out of MAT bytes, full or sparse (MatlabVariableNode. + * _createFromMatNumeric), so the two show a value the same way, and the same way a binary + * dictionary's text shows it. * Through 1.40.0 each part was String()'d, so an infinite part read `Infinity`, which MATLAB * neither writes nor reads (`{1+Infinityi}` is "Unrecognized function or variable * 'Infinityi'", R2027a): a text dictionary's complex(1, Inf) showed `1+Infinityi` beside diff --git a/dist/datamodel/parser/SparseData.d.ts.map b/dist/datamodel/parser/SparseData.d.ts.map index 99934b76..dd903147 100644 --- a/dist/datamodel/parser/SparseData.d.ts.map +++ b/dist/datamodel/parser/SparseData.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"SparseData.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/SparseData.ts"],"names":[],"mappings":"AAqBA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,UAAU,CAAC;IAChB,GAAG,EAAE,UAAU,CAAC;IAChB,EAAE,EAAE,YAAY,CAAC;IACjB,EAAE,EAAE,YAAY,GAAG,IAAI,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAE1C,0FAA0F;AAC1F,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,UAAU,CAMhF;AAED,uEAAuE;AACvE,wBAAgB,WAAW,CAAC,CAAC,EAAE,UAAU,GAAG,UAAU,CAMrD;AAED,0FAA0F;AAC1F,wBAAgB,eAAe,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAErD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAM5E;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAE/E;AAED,sFAAsF;AACtF,wBAAgB,WAAW,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAErE;AAkCD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,GAAG,IAAI,CASzE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,GAAG,UAAU,CAqBjG;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAOtD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,IAAI,CAiBvF"} \ No newline at end of file +{"version":3,"file":"SparseData.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/SparseData.ts"],"names":[],"mappings":"AAqBA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,UAAU,CAAC;IAChB,GAAG,EAAE,UAAU,CAAC;IAChB,EAAE,EAAE,YAAY,CAAC;IACjB,EAAE,EAAE,YAAY,GAAG,IAAI,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAE1C,0FAA0F;AAC1F,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,UAAU,CAMhF;AAED,uEAAuE;AACvE,wBAAgB,WAAW,CAAC,CAAC,EAAE,UAAU,GAAG,UAAU,CAMrD;AAED,0FAA0F;AAC1F,wBAAgB,eAAe,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAErD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAM5E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAW/E;AAED,sFAAsF;AACtF,wBAAgB,WAAW,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAErE;AAkCD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,GAAG,IAAI,CASzE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,GAAG,UAAU,CAqBjG;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAOtD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,IAAI,CAiBvF"} \ No newline at end of file diff --git a/dist/datamodel/parser/SparseData.js b/dist/datamodel/parser/SparseData.js index c0f66c34..4cd7551e 100644 --- a/dist/datamodel/parser/SparseData.js +++ b/dist/datamodel/parser/SparseData.js @@ -16,7 +16,7 @@ // // Parser-layer, so it imports nothing from the display or the node layer: MatParser // produces one of these, MatWriter consumes one, and the node layer edits one. -import { formatComplexNum, parseComplexNum, parseMatlabNum } from './XmlUtils.js'; +import { formatComplexNum, formatMatlabNum, parseComplexNum, parseMatlabNum } from './XmlUtils.js'; /** * The most elements this package lays out densely for a sparse array: the writers' fallback, * for an array MatWriter has no sparse storage for (a class or a rank MATLAB never stores @@ -61,15 +61,25 @@ export function unbackedColumns(s, dims) { } /** * One complex element as the node layer holds it, `1+2i`, `3-4i`, `1NaNi`, `1+Infi`: - * XmlUtils.formatComplexNum's spelling. The one spelling of an element of a complex array - * read out of MAT bytes, full or sparse (MatlabVariableNode._createFromMatNumeric), so the - * two show a value the same way, and the same way a binary dictionary's text shows it. + * XmlUtils.formatComplexNum's spelling, a -0 part's sign kept. The one spelling of an element + * of a complex array read out of MAT bytes, full or sparse (MatlabVariableNode. + * _createFromMatNumeric), so the two show a value the same way, and the same way a binary + * dictionary's text shows it. * Through 1.40.0 each part was String()'d, so an infinite part read `Infinity`, which MATLAB * neither writes nor reads (`{1+Infinityi}` is "Unrecognized function or variable * 'Infinityi'", R2027a): a text dictionary's complex(1, Inf) showed `1+Infinityi` beside * its binary twin's `1+Infi`. parseComplexNum still reads that spelling back. */ export function complexElement(re, im) { + // A part of -0 keeps its sign, which formatComplexNum does not spell (String(-0) is `0`): the + // text is the value (MatlabVariableNode._buildVarObject writes the array from it), so a .mat's + // `-3i`, complex(-0, -3), written again was complex(0, -3). It reads `-0-3i`, as the same value + // out of a binary dictionary's `-0.0-3.0i` does, and an imaginary -0 shows with a `+` + // (XmlUtils.shownComplexText). + if (Object.is(re, -0) || Object.is(im, -0)) { + const part = (x) => (Object.is(x, -0) ? '-0' : formatMatlabNum(x)); + return part(re) + (Number(im) >= 0 && !Object.is(im, -0) ? '+' : '') + part(im) + 'i'; + } return formatComplexNum(re, im); } /** Entry k as the node layer holds an element: a number, or complexElement's text. */ diff --git a/dist/datamodel/parser/SparseData.js.map b/dist/datamodel/parser/SparseData.js.map index 3cd0cc03..f8876127 100644 --- a/dist/datamodel/parser/SparseData.js.map +++ b/dist/datamodel/parser/SparseData.js.map @@ -1 +1 @@ -{"version":3,"file":"SparseData.js","sourceRoot":"","sources":["../../../src/datamodel/parser/SparseData.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"SparseData.js","sourceRoot":"","sources":["../../../src/datamodel/parser/SparseData.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/datamodel/node/data/MatlabVariableNode.ts b/src/datamodel/node/data/MatlabVariableNode.ts index 33b54ce4..1f70d33c 100644 --- a/src/datamodel/node/data/MatlabVariableNode.ts +++ b/src/datamodel/node/data/MatlabVariableNode.ts @@ -374,6 +374,13 @@ export default class MatlabVariableNode extends DataNode { // subtree rebuilt from that for the asking (_withCeilingTwin). Cleared by a Value typed over it // (_applyParsed), which gives it rows of its own. Absent on every other node. _cutByCeiling?: number; + // The field names of a struct array of NO element, `struct('a', {})`, in the file's order: it + // has no element row to hold them, and they are all there is of it. Set by + // _createFromMatStruct from the variable read (MatParser keeps them, each with an empty list), + // and read by what writes the struct from its rows (_buildVarObject, _serializeStructValue), so + // that it is not written as a struct of no field once something under or beside it is edited. + // Cleared by a Value typed over it (_applyParsed). Absent on every other node. + _emptyStructFields?: string[]; constructor(name: string, parent: BaseNode | null, serial?: Record) { super(name, parent, serial); @@ -562,14 +569,13 @@ export default class MatlabVariableNode extends DataNode { // The Class column says complex and sparse as MATLAB's Workspace browser does, // `int16 (complex)`, `double (sparse)` (DisplayConvention.classColumnText): className is // MATLAB's class(), which says neither. Complex is what the writers take it for - // (_isComplexValue), and for an empty, which has no element to say so, what it was read as - // (_elementType): a .mat's complex(zeros(1,0)), or a binary dictionary's IsComplex="1". + // (_isComplexValue), an empty's included: what it was read as, a .mat's complex(zeros(1,0)), + // or a binary dictionary's IsComplex="1". _classColumn(): string { if (this._isOpaque) { return super._classColumn(); } - const complexEmpty = this._kind === 'array' && this._elementType === 'complex' && this._liveElements().length === 0; - return classColumnText(this.className, { complex: this._isComplexValue() || complexEmpty, sparse: !!this._sparse }); + return classColumnText(this.className, { complex: this._isComplexValue(), sparse: !!this._sparse }); } // A primitive variable's data type ('double', 'string', 'cell', …) is a real @@ -1691,6 +1697,8 @@ export default class MatlabVariableNode extends DataNode { this._matVar = null; // A value typed in whole is built with all its rows, whatever the file's node ceiling did. delete this._cutByCeiling; + // Nor is it the empty struct array it may have been (_emptyStructFields). + delete this._emptyStructFields; this._rawInput = undefined; // Nor is it what a removal left of a complex array any more (_complexClass). this._collapsedClass = null; @@ -2022,7 +2030,8 @@ export default class MatlabVariableNode extends DataNode { } _addStructField(): MatlabVariableNode { - const uniqueName = newFieldName(this.children.map((c) => c.name)); + // Nor the name of a field a struct array of no element has without a row (_emptyStructFields). + const uniqueName = newFieldName([...(this._emptyStructFields ?? []), ...this.children.map((c) => c.name)]); const child = MatlabVariableNode._createScalar(0, 'double', uniqueName, this); this.addChild(child); this._markModified(); @@ -2416,6 +2425,12 @@ export default class MatlabVariableNode extends DataNode { // (_matStream), naming the entry and the reason, rather than written in the rank-2 form // below, which is not a form MATLAB writes there for it. Elsewhere it falls through as // before: a binary dictionary's XML spells it element by element. + // + // A complex array of no element too (_isComplexValue), whose stream says complex where + // `[]` cannot: MATLAB's own text dictionary spells one as the real empty, `[]` or + // `{"_type": "int16", "_value": "[]"}` (dispcat_text.sldd's dx_complex_0x0 and + // dx_complex_int16_1x0), so that a copy of one into it, or through it into a binary + // dictionary, whose spelling `IsComplex="1"` does say so (_serializeArrayXml), lost it. const nd = effectiveDims(this._dims).length > 2; if (this._sparse || nd || this._isComplexValue() || this._unexpandedStruct()) { const cdata = this._serializeCdata(nd && this._ownerFormat() === 'json'); @@ -2465,6 +2480,14 @@ export default class MatlabVariableNode extends DataNode { return false; } const elems = this._liveElements(); + // An array of no element has none to say so, and is complex when it was read as one + // (_elementType): a .mat's complex(zeros(1,0)), a binary dictionary's IsComplex="1". Asked + // of its elements, it was real, and once anything marked it edited it was written so + // (_buildVarObject): measured against MATLAB R2027a, a .mat save of complex(zeros(0,0)) + // loaded with isreal true. + if (elems.length === 0) { + return this._elementType === 'complex'; + } // ANY element, not the first: the element editor takes only a real number, so after // x(1) = 7 the first element is the number 7 and the rest are still complex, and // asking the first alone wrote [7+0i NaN+0i 3-4i] out as the real [7 0 3]. @@ -2929,6 +2952,16 @@ export default class MatlabVariableNode extends DataNode { // unchanged. _serializeStructValue(): unknown { const dims = effectiveDims(this._dims); + // A struct array of no element, with fields (_emptyStructFields): the bag the binary reader + // makes of MATLAB's own spelling of one, `

` + // (BinarySlddParser.structValue), with no element and its names in `_fields`, which is where + // StructNode writes them back from, as those ``s. Built of its rows like any other, it + // named no field: a copy of a .mat's struct('a', {}) went into a binary dictionary as a + // struct of none. + const named = elementCount(dims) === 0 && this.children.length === 0 ? this._emptyStructFields ?? [] : []; + if (named.length > 0) { + return { _array_type: 'Struct', _dimensions: dims, _elements: [], _fields: named.slice(), _mw_element_type: 'MATLABArray' }; + } // A .mat struct ARRAY hangs its ELEMENTS off this node (named 1..N, each a // struct-kind node whose own children are the fields); a 1x1 hangs the fields // directly. StructNode owns neither case on the .mat path, so both are here — @@ -3241,8 +3274,12 @@ export default class MatlabVariableNode extends DataNode { if (type === 'string' && (this._rawInput as Record | undefined)?._emptyDims && two.length === 2 && elementCount(two) === 0) { return DataNode._stringXml(tagName, attrStr, [], two, indent); } + // A complex empty says so, as MATLAB's own does: `Class="double" IsComplex="1" + // Dimension="0*0"/>` and `Class="int16" IsComplex="1" Dimension="1*0"/>` (dispcat_bin.sldd). + // Without it, it was read back real. + const complex = !this._sparse && this._isComplexValue() ? ' IsComplex="1"' : ''; return ( - p + '<' + tagName + attrStr + ' Class="' + escapeXml(type || 'double') + '" Dimension="' + dimAttr + '"/>' + p + '<' + tagName + attrStr + ' Class="' + escapeXml(type || 'double') + '"' + complex + ' Dimension="' + dimAttr + '"/>' ); } @@ -3586,6 +3623,14 @@ export default class MatlabVariableNode extends DataNode { })); } } else { + // An array of no element is its field names, each with no element, as MatParser reads + // one (_emptyStructFields): rebuilt from its rows, of which it has none, it was a + // struct of no field. + if (elementCount(this._dims) === 0) { + for (const fname of this._emptyStructFields ?? []) { + setOwn(fields, fname, []); + } + } for (const child of this.children) { setOwn(fields, child.name, MatlabVariableNode._memberVar(child)); } @@ -4018,6 +4063,12 @@ export default class MatlabVariableNode extends DataNode { } const fieldNames = Object.keys(variable.fields); const count = elementCount(node._dims); + // A struct array of no element has no row, and its field names nowhere but here + // (_emptyStructFields). + if (count === 0) { + node._emptyStructFields = fieldNames; + return node; + } if (count <= 1) { // Its fields are its rows, all of them or none past a .mat file's node ceiling // (matNodeCeiling). diff --git a/src/datamodel/parser/MatFileCheck.ts b/src/datamodel/parser/MatFileCheck.ts index c866edaf..c5dee323 100644 --- a/src/datamodel/parser/MatFileCheck.ts +++ b/src/datamodel/parser/MatFileCheck.ts @@ -359,6 +359,34 @@ export function checkMatFile(bytes: Uint8Array, options: MatCheckOptions = {}): return check.out.sort((a, b) => a.at - b.at); } +/** + * What one variable's miMATRIX element (its tag and body, as a record holds it inflated) breaks + * of the rules MATLAB reads a matrix by, at any depth: its char data, its storage, how its + * sub-elements fill it, its name. Not the rules of a file (its header, framing, compression, + * placement), which only a whole file has: those are checkMatFile's. Every `at` is 0, the + * element's own start, and each message says where in the element. Asked of a variable as it was + * read, whose element is in memory already, so nothing is inflated; and like checkMatFile it never + * throws, and stops at its budget with a `budget` note. + */ +export function checkMatElement(element: Uint8Array, options: MatCheckOptions = {}): MatViolation[] { + const check = new Check(options); + const view = new DataView(element.buffer, element.byteOffset, element.byteLength); + const space: Space = { view, fileAt: () => 0, where: (o) => `Byte ${o} of its element` }; + try { + if (element.byteLength < 8) { + check.file('element', 0, `The element holds ${element.byteLength} byte(s), fewer than one element's tag.`); + } else if (view.getUint32(0, true) !== MI_MATRIX) { + check.file('element', 0, `The element is a data element of ${typeName(view.getUint32(0, true))}, not a matrix.`); + } else { + topMatrix(check, space, 0, 8, Math.min(8 + view.getUint32(4, true), element.byteLength)); + } + } catch (err) { + const why = err instanceof OutOfBudget ? err.message : `an error in the check itself (${reasonOf(err)})`; + check.file('budget', 0, `The check of the element stopped at ${why}, so nothing from there on was checked.`, check.variable); + } + return check.out; +} + /** * The violations of `after` that `before` does not have: what a rewrite of a file added to it. * diff --git a/src/datamodel/parser/MatFileWriter.ts b/src/datamodel/parser/MatFileWriter.ts index 669d26ba..d720233c 100644 --- a/src/datamodel/parser/MatFileWriter.ts +++ b/src/datamodel/parser/MatFileWriter.ts @@ -38,8 +38,9 @@ // // EVERY DOUBT REFUSES THE SAVE. A save that cannot write a variable as what it is throws a // MatWriteError naming it, and nothing is written: an object, a function handle or a value the -// reader did not decode, whose edit this writer cannot write; a variable stored after the -// subsystem, where MATLAB does not read it; a file whose records do not tile it, or that was +// reader did not decode, whose edit this writer cannot write; a variable stored in a form MATLAB +// does not load as it is, whose value as read is this reader's guess at it; a variable stored +// after the subsystem, where MATLAB does not read it; a file whose records do not tile it, or that was // opened without them. And before the bytes are handed back they are read again, and a record // that does not read back as planned refuses the save as well (selfCheck), as does one that breaks // a rule MATLAB loads a file by that the file it was read from did not break (MatFileCheck). @@ -55,8 +56,8 @@ import { inflateZlib } from './Inflate.js'; import { parseMat, functionHandleOf } from './MatParser.js'; import type { MatRecord, MatVariable, ParsedMat } from './MatParser.js'; import { MatBudgetError, MatWriteError, classPhrase, elementNamed, encodeMatVariable } from './MatWriter.js'; -import { checkMatFile, violationsAdded } from './MatFileCheck.js'; -import type { MatViolation } from './MatFileCheck.js'; +import { checkMatElement, checkMatFile, violationsAdded } from './MatFileCheck.js'; +import type { MatViolation, MatViolationCode } from './MatFileCheck.js'; import { integerConversion } from './XmlUtils.js'; import { validateMatlabName } from '../matlabName.js'; import type BaseNode from '../node/BaseNode.js'; @@ -345,7 +346,7 @@ function freshOf(node: BaseNode, record: MatRecord | null, compress: boolean): P throw refused; } const value = valueNodeOf(node)!; - const named = elementNamed(freshElement(value), name); + const named = elementNamed(globalAsRead(freshElement(value), record), name); if (!named) { throw refusal(name, 'the element written for it has no name to replace'); } @@ -359,7 +360,8 @@ function freshOf(node: BaseNode, record: MatRecord | null, compress: boolean): P * held to; a variable that was not a plain value, or whose node is a typed object's (freshOf); one * holding what this writer cannot write at any depth (unwritableIn); one with no form at all, a * container none of whose elements could be read (_heldNone) or a size that is no count - * (_refuseNoSize); and one holding a container read short at any depth (shortIn). + * (_refuseNoSize); one holding a container read short at any depth (shortIn); and one stored in + * a form MATLAB does not load as it is (storedRefusal). * * One rule for freshOf, which throws it, and for the editor, which takes no edit a save would * refuse so (MatNode._editRefusal): the two cannot come to disagree. What it does not judge is @@ -396,9 +398,45 @@ export function freshRefusal(node: BaseNode, record: MatRecord | null): MatWrite if (short) { return refusal(name, short.path + ' is ' + short.what + ', and a save would write the ones it does not hold as empty'); } + // And one stored in a form MATLAB does not load as it is (storedRefusal). Last, so that a + // refusal that says more of the same damage (a container read short, a value not decoded) is + // the one given. + const stored = record ? storedRefusal(record) : null; + if (stored) { + return refusal(name, 'it is stored in a form MATLAB does not load as it is (' + stored + '), so there is no value of it a save ' + + 'can be held to: it is written only as it was read, or renamed'); + } return null; } +// The rules of MatFileCheck a variable's own element can break whose break says that what this +// package read of it is not a value MATLAB loads: char data MATLAB does not read as text, or +// reads otherwise (miUINT8 Latin-1 bytes, which this reader decodes as UTF-8, miUTF32, which it +// decodes as UTF-8 too, and CJK in miUINT16, of which MATLAB keeps the low byte of each unit), a +// char's UTF-8 that does not hold its count, a numeric class stored in another's type, a matrix +// its sub-elements do not fill, one MATLAB cannot read where it stands, a data part holding more +// or fewer elements than the dims say. Written fresh, each was this reader's guess at it, which +// MATLAB then loaded in its place: measured on MATLAB's verdict corpus (test/fixtures/mat-check), +// a 1x3 char stored as miUTF32 was written as the 1x12 of its bytes, and 'héllo' stored as miUINT8 +// as 'h\uFFFDllo'. Not a name (a fresh one is held to validateMatlabName), nor what only the file +// breaks around the element. +const VALUE_RULES: ReadonlySet = new Set(['char-type', 'utf8-count', 'int-storage', 'nbytes', 'element', 'data-size']); + +// What `record`'s own element breaks of VALUE_RULES, as checkMatElement says it, or null. Of the +// element the reader read, which it holds whole (MatVariable._rawBytes), so nothing is inflated; +// once per record, whose bytes never change. +const storedVerdicts = new WeakMap(); +function storedRefusal(record: MatRecord): string | null { + let verdict = storedVerdicts.get(record); + if (verdict === undefined) { + const element = record.variable?._rawBytes; + const broken = element ? checkMatElement(element).find((v) => VALUE_RULES.has(v.code)) : undefined; + verdict = broken ? broken.message.replace(/\.$/, '') : null; + storedVerdicts.set(record, verdict); + } + return verdict; +} + /** * The first container at or under `at` that holds fewer elements than it declares, read short * out of a damaged record (MatParser's "declares 3 cell(s) and only 1 could be read"), with its @@ -502,6 +540,29 @@ function notPlain(v: MatVariable): string | null { return null; } +// Where an element's array flags keep its flags byte: past the element's tag and the flags' own, +// which MATLAB and MatWriter both write in the long form (8 bytes of tag, then 8 of data), and +// the byte after the class. Its bit 0x04 is MATLAB's global flag, which `save` sets on a variable +// declared global. +const FLAGS_BYTE = 17; +const GLOBAL_FLAG = 0x04; + +// `element`, written fresh for the variable `record` holds, global when that one was. The flag is +// the workspace variable's and not its value's: no writer of a value sets it (MatWriter writes a +// value as `getByteStreamFromArray` holds it), and nothing in the node layer holds it, so written +// fresh a global variable was not one, and a rename splice alone kept it. +function globalAsRead(element: Uint8Array, record: MatRecord | null): Uint8Array { + const read = record?.variable?._rawBytes; + const longFlags = (e: Uint8Array) => e.byteLength > FLAGS_BYTE + 6 && u32At(e, 8) === 6 && u32At(e, 12) === 8; + if (!read || !longFlags(read) || !longFlags(element) || !(read[FLAGS_BYTE] & GLOBAL_FLAG) || element[FLAGS_BYTE] & GLOBAL_FLAG) { + return element; + } + // A copy: the element may be a view of the bytes the file was read from (_matStream's own). + const out = element.slice(); + out[FLAGS_BYTE] |= GLOBAL_FLAG; + return out; +} + // The miMATRIX element `node`'s value is, with the empty name a stream's value has: the stream it // is written as in a dictionary (_matStream), which writes a sparse array no element row edited // and a struct array with no element rows as the bytes they were read from, and anything else as diff --git a/src/datamodel/parser/MatParser.ts b/src/datamodel/parser/MatParser.ts index 706a68c4..dd316577 100644 --- a/src/datamodel/parser/MatParser.ts +++ b/src/datamodel/parser/MatParser.ts @@ -1388,7 +1388,14 @@ export function parseMatrix(view: DataView, baseOffset: number, length: number, // elements had 10,000 empty rows, and a 104 KB file holding 1,000 of them ran a // 512 MB heap out while it opened. MATLAB writes every field of every element, so an // array it wrote has every list already. - if (totalElements > 1) { + // + // So is every field of an array of NO element, each with its empty list: its names + // are all there is of it, `struct('a', {})` being a 0x0 struct with a field `a`. It + // held `{}`, and a writer writes the names a variable holds, so a .mat save of one + // and a copy of one into a dictionary's stream wrote a struct of no field (measured + // against MATLAB R2027a: the 0x0 a .mat save wrote for it loaded with fieldnames {}, + // where the file's had {'a'}). + if (totalElements !== 1) { for (const fn of fieldNames) { if (!Object.prototype.hasOwnProperty.call(fields, fn)) { setOwn(fields, fn, []); diff --git a/src/datamodel/parser/SparseData.ts b/src/datamodel/parser/SparseData.ts index bdd0e374..3888cb92 100644 --- a/src/datamodel/parser/SparseData.ts +++ b/src/datamodel/parser/SparseData.ts @@ -17,7 +17,7 @@ // Parser-layer, so it imports nothing from the display or the node layer: MatParser // produces one of these, MatWriter consumes one, and the node layer edits one. -import { formatComplexNum, parseComplexNum, parseMatlabNum } from './XmlUtils.js'; +import { formatComplexNum, formatMatlabNum, parseComplexNum, parseMatlabNum } from './XmlUtils.js'; /** * The non-zeros of a sparse array: entry k is at 0-based (row[k], col[k]) and holds re[k] @@ -104,15 +104,25 @@ export function unbackedColumns(s: SparseData, dims: number[]): string | null { /** * One complex element as the node layer holds it, `1+2i`, `3-4i`, `1NaNi`, `1+Infi`: - * XmlUtils.formatComplexNum's spelling. The one spelling of an element of a complex array - * read out of MAT bytes, full or sparse (MatlabVariableNode._createFromMatNumeric), so the - * two show a value the same way, and the same way a binary dictionary's text shows it. + * XmlUtils.formatComplexNum's spelling, a -0 part's sign kept. The one spelling of an element + * of a complex array read out of MAT bytes, full or sparse (MatlabVariableNode. + * _createFromMatNumeric), so the two show a value the same way, and the same way a binary + * dictionary's text shows it. * Through 1.40.0 each part was String()'d, so an infinite part read `Infinity`, which MATLAB * neither writes nor reads (`{1+Infinityi}` is "Unrecognized function or variable * 'Infinityi'", R2027a): a text dictionary's complex(1, Inf) showed `1+Infinityi` beside * its binary twin's `1+Infi`. parseComplexNum still reads that spelling back. */ export function complexElement(re: number | string, im: number | string): string { + // A part of -0 keeps its sign, which formatComplexNum does not spell (String(-0) is `0`): the + // text is the value (MatlabVariableNode._buildVarObject writes the array from it), so a .mat's + // `-3i`, complex(-0, -3), written again was complex(0, -3). It reads `-0-3i`, as the same value + // out of a binary dictionary's `-0.0-3.0i` does, and an imaginary -0 shows with a `+` + // (XmlUtils.shownComplexText). + if (Object.is(re, -0) || Object.is(im, -0)) { + const part = (x: number | string) => (Object.is(x, -0) ? '-0' : formatMatlabNum(x)); + return part(re) + (Number(im) >= 0 && !Object.is(im, -0) ? '+' : '') + part(im) + 'i'; + } return formatComplexNum(re, im); } diff --git a/test/budgetFailsClosed.test.ts b/test/budgetFailsClosed.test.ts index c2afa256..69ca64c7 100644 --- a/test/budgetFailsClosed.test.ts +++ b/test/budgetFailsClosed.test.ts @@ -130,9 +130,16 @@ describe('past the budget, a paste, a copy and a save fail, and nothing is writt // Unedited, each member is the bytes it was read from and costs nothing; edited, it is // encoded from its non-zeros, and 999 of its columns no data backs, 3,996 bytes apiece. const member = sparseVar({ name: '', dimensions: [1000, 1000], ir: [0], jc: [0, 1], real: [5], nzmax: 1, sparseFlag: true }); - const c: any = createSession().addMatSource('c.mat', matFile([cellVar('c', Array.from({ length: 4199 }, () => member))])).children[0]; + const mat: any = createSession().addMatSource('c.mat', matFile([cellVar('c', Array.from({ length: 4199 }, () => member))])); + const c: any = mat.children[0]; expect(thrownBy(() => copyOf(c))[0]).toBeNull(); + // Taken out of the .mat to be edited: a member's column index is short of its columns, which + // MATLAB does not load, so the file takes no edit of it (MatFileWriter.freshRefusal); on its + // own, the node takes it, and is put back to be copied. + expect(c.children[0].children[0].setProperty('Value', '7')).toMatchObject({ error: true }); + mat.removeChild(c); for (const m of c.children) expect(m.children[0].setProperty('Value', '7')).toBe(true); + mat.addChild(c); const [thrown, ms] = thrownBy(() => copyOf(c)); expect([thrown?.name, thrown?.message, ms < 5000]).toEqual([ 'MatBudgetError', diff --git a/test/emptyCopiesReadback.test.ts b/test/emptyCopiesReadback.test.ts new file mode 100644 index 00000000..deaab1aa --- /dev/null +++ b/test/emptyCopiesReadback.test.ts @@ -0,0 +1,54 @@ +// Copyright 2026 The MathWorks, Inc. +// +// A copy of a struct array of no element with fields, and of a complex empty, pasted into a text +// and a binary dictionary, as MATLAB reads it back: as `load` reads the .mat variable it was +// copied from, its field names and its complexity kept, as an entry's value, a struct field and a +// cell's element, copied as read and once marked edited. +// +// parity/matlab/empty_copies_readback.mjs makes the saves through core's API from MATLAB's own +// variables (fixtures/display/dispcat.mat), into sparse_text.sldd and sparse_binary.sldd; +// parity/matlab/probe_empty_copies_readback.m had MATLAB R2027a reopen them and wrote what it read, +// beside what `load` reads of each variable, to parity/matlab/empty_copies_readback.truth.json. +// This test makes the same saves from the package's source and asks that each value is still +// written as MATLAB read it, so that a change to the spelling fails here until MATLAB is asked +// again. test/emptyNamesAndComplexityCopy.test.ts holds the spellings and the other venues. +import { describe, it, expect } from 'vitest'; +import { readFileSync } from 'node:fs'; +import { fileURLToPath } from 'node:url'; +import { createSession, ingest } from '../src/index.js'; +import { emptyCopiesReadback, PLACES, VARIABLES } from './parity/matlab/empty_copies_readback.mjs'; +import './../src/datamodel/node/data/NodeClassMap.js'; + +type Shape = { class: string; size: number[]; isreal: boolean; fields: string[] }; +type Case = { file: string; format: string; variable: string; edited: boolean; place: string; entry: string; fragment: string; matlab: Shape | { error: string }; loaded: Shape }; + +const at = (rel: string) => fileURLToPath(new URL(rel, import.meta.url)); +const TRUTH: { version: string; release: string; cases: Case[] } = JSON.parse(readFileSync(at('./parity/matlab/empty_copies_readback.truth.json'), 'utf8')); +const read = (rel: string) => new Uint8Array(readFileSync(at('./fixtures/' + rel))); + +describe('a copy of an empty struct with fields, and of a complex empty, pasted into a dictionary, as MATLAB reads it back', () => { + const { cases } = emptyCopiesReadback({ createSession, ingest }, read); + + it('MATLAB read every place of every save as load reads the variable', () => { + expect(TRUTH.release).toBe('2027a'); + expect(TRUTH.cases.length).toBe(2 * VARIABLES.length * 2 * PLACES.length); + for (const c of TRUTH.cases) { + expect(c.matlab, `${c.file} ${c.entry} ${c.variable} ${c.place}`).toEqual(c.loaded); + } + // What load reads: field names for each struct, and complexity for each numeric empty. + const loaded = new Map(TRUTH.cases.map((c) => [c.variable, c.loaded])); + expect([...loaded.entries()].map(([v, s]) => [v, s.class, s.size, s.fields, s.class === 'struct' || s.isreal])).toEqual([ + ['dx_struct_0x0_fields', 'struct', [0, 0], ['a'], true], + ['dx_struct_1x0', 'struct', [1, 0], ['a'], true], + ['dx_complex_0x0', 'double', [0, 0], [], false], + ['dx_complex_1x0', 'double', [1, 0], [], false], + ['dx_complex_int16_1x0', 'int16', [1, 0], [], false], + ['e_single_complex_1x0', 'single', [1, 0], [], false], + ]); + }); + + it('and core still writes the values MATLAB read', () => { + const asked = TRUTH.cases.map(({ file, format, variable, edited, place, entry, fragment }) => ({ file, format, variable, edited, place, entry, fragment })); + expect(cases).toEqual(asked); + }); +}); diff --git a/test/emptyNamesAndComplexityCopy.test.ts b/test/emptyNamesAndComplexityCopy.test.ts new file mode 100644 index 00000000..63fe0440 --- /dev/null +++ b/test/emptyNamesAndComplexityCopy.test.ts @@ -0,0 +1,226 @@ +// Copyright 2026 The MathWorks, Inc. +// +// A struct array of no element keeps its field names, and an empty array its complexity, +// wherever a value read out of MAT bytes goes: copied into a text or a binary dictionary, at +// rank 2 and N-D, alone and as a member of a cell or a struct, edited or not, and written again +// as a text dictionary's own stream. +// +// `struct('a', {})` is a 0x0 struct with a field `a`, and its names are all there is of it. +// MatParser held `fields: {}` for a struct array of no element, so every writer wrote a struct +// of no field: a .mat save (MATLAB R2027a loaded it with fieldnames {}, the live gate's +// sibling_struct_field), a copy's MAT stream (cdata in a text dictionary), and a copy's bag, +// which named its fields from its element rows, of which it has none (`

` in a binary dictionary). And a complex empty is complex only by what it was +// read as (MatlabVariableNode._elementType), which the writers did not ask: an edited N-D one's +// stream was real, and a copy of a rank-2 one was the literal `[]`, which a binary dictionary +// wrote as `Class="double" Dimension="0*0"`, losing its complexity, and a single's class and its +// 0x3 with it. +// +// Where MATLAB has a spelling that keeps them, the copy is held to MATLAB's own bytes: a binary +// dictionary's `` of an empty struct and `IsComplex="1"` of an empty +// (dispcat_bin.sldd, written by MATLAB from the variables of dispcat.mat). MATLAB's own text +// dictionary spells both as what loses them (`{"_type": "struct", "_value": "[]"}`, `[]`; +// dispcat_text.sldd), so there a struct's copy is the bag of its names and an empty's its MAT +// stream, which hold them. MATLAB R2027a reads each back, in both, as `load` reads the .mat +// variable (test/emptyCopiesReadback.test.ts, parity/matlab/probe_empty_copies_readback.m). +import { describe, it, expect } from 'vitest'; +import { readFileSync } from 'node:fs'; +import { fileURLToPath } from 'node:url'; +import { strFromU8, strToU8, unzipSync } from 'fflate'; +import { createSession } from '../src/index.js'; +import { ingest } from '../src/core/ingest.js'; +import { uudecode } from '../src/datamodel/parser/CdataCodec.js'; +import { CLASS, cellVar, matFile, numericVar, sparseVar, structVar } from './tools/matBytes.js'; +import { elementValue, type ElementValue } from './tools/matElements.js'; +import { BINARY, TEXT, copyOf, sparseFixture } from './tools/pasteVenues.js'; +import '../src/datamodel/node/data/NodeClassMap.js'; + +/* eslint-disable @typescript-eslint/no-explicit-any */ + +const fixture = (rel: string) => new Uint8Array(readFileSync(fileURLToPath(new URL('./fixtures/' + rel, import.meta.url)))); +const arrayBufferOf = (u8: Uint8Array) => u8.buffer.slice(u8.byteOffset, u8.byteOffset + u8.byteLength) as ArrayBuffer; + +const es = (dims: number[]) => structVar('', ['a', 'bb'], [], dims); +const cx = (dims: number[], cls: number = CLASS.DOUBLE) => numericVar({ name: '', cls, dimensions: dims, real: [], imag: [] }); +const one = numericVar({ name: '', cls: CLASS.DOUBLE, dimensions: [1, 1], real: [1] }); +const sp = sparseVar({ name: '', dimensions: [1, 1], ir: [0], jc: [0, 1], real: [5] }); + +// Every place a struct of no element and a complex empty can stand in a .mat. +const FILE = matFile([ + structVar('es00', ['a', 'bb'], [], [0, 0]), + structVar('es10', ['a', 'bb'], [], [1, 0]), + structVar('esNd', ['a', 'bb'], [], [0, 0, 2]), + numericVar({ name: 'cx00', cls: CLASS.DOUBLE, dimensions: [0, 0], real: [], imag: [] }), + numericVar({ name: 'cx03s', cls: CLASS.SINGLE, dimensions: [0, 3], real: [], imag: [] }), + numericVar({ name: 'cxNd', cls: CLASS.DOUBLE, dimensions: [0, 0, 2], real: [], imag: [] }), + cellVar('cNd', [es([0, 0]), cx([1, 0])], [1, 1, 2]), + cellVar('cSp', [es([0, 0]), cx([1, 0]), sp], [1, 3]), + structVar('s', ['es', 'cx', 'x', 'sp'], [{ es: es([0, 0]), cx: cx([0, 0]), x: one, sp }]), + structVar('sNd', ['es', 'cx'], [{ es: es([0, 0]), cx: cx([0, 0]) }, { es: es([1, 0]), cx: cx([0, 0], CLASS.INT16) }], [1, 1, 2]), +]); + +/** The variable `name` of FILE, opened as a host opens it, marked edited first when `edited`. */ +function variable(name: string, edited = false): any { + const root: any = createSession().addMatSource('v.mat', FILE); + const node = root.children.find((c: any) => c.name === name); + if (edited) { + // The mark an edit and its undo leave (DataNode._valueEdited): the value rebuilt from its rows. + node._markModified(); + } + return node; +} + +/** What a MAT stream (a cdata `_value`) holds, read by the test's own walker. */ +const streamOf = (cdata: { _value: string }): ElementValue => elementValue(uudecode(cdata._value).subarray(8)); + +let seq = 0; + +/** + * `value` pasted into a fresh `file`, saved and opened again: the entry's value as written (the + * JSON of a text dictionary's entry; a binary one's `

` block, whitespace + * folded) and the entry reopened. + */ +function pasteSaved(file: string, value: unknown): { written: any; entry: any } { + const session = createSession(); + const root: any = ingest(session, sparseFixture(file), { filename: file }); + root.getSection('design').parseEntry({ name: 'pasted', metadata: { uuid: `00000000-0000-4000-e900-${String(++seq).padStart(12, '0')}` }, value }); + const out = session.serializeSource(root.name)!; + const bytes = out.kind === 'text' ? strToU8(out.text!) : out.bytes!; + let written: any; + if (out.kind === 'text') { + const find = (x: any): any => (x && typeof x === 'object' ? (x.name === 'pasted' && 'value' in x ? x : Object.values(x).map(find).find(Boolean)) : null); + written = find(JSON.parse(out.text!)).value; + } else { + written = valueBlock(strFromU8(unzipSync(bytes)['data/chunk0.xml']), 'pasted'); + } + const reopened: any = ingest(createSession(), arrayBufferOf(bytes), { filename: file }); + return { written, entry: reopened.getSection('design').children.find((e: any) => e.name === 'pasted') }; +} + +/** An entry's `

` block in a binary dictionary's chunk, whitespace folded. */ +function valueBlock(xml: string, entry: string): string { + const at = xml.indexOf('

' + entry + '

'); + expect(at, entry).toBeGreaterThan(-1); + const from = xml.indexOf('

', from)).replace(/\s+/g, ' ').trim(); +} + +describe("a .mat's struct array of no element and complex empty, copied into a text dictionary", () => { + for (const edited of [false, true]) { + const as = edited ? ', edited' : ''; + + it(`a rank-2 struct of no element is the bag of its field names${as}`, () => { + for (const [name, dims] of [['es00', [0, 0]], ['es10', [1, 0]]] as const) { + const copy = copyOf(variable(name, edited)); + // The bag the binary reader makes of MATLAB's `` (BinarySlddParser.structValue). + expect(copy, name).toEqual({ _array_type: 'Struct', _dimensions: dims, _elements: [], _fields: ['a', 'bb'], _mw_element_type: 'MATLABArray' }); + const { written, entry } = pasteSaved(TEXT, copy); + expect(written, name).toEqual(copy); + expect([entry.className, entry.dims, entry.serial._fields, entry.children.length], name).toEqual(['struct', dims, ['a', 'bb'], 0]); + } + }); + + it(`an N-D one, and one in an N-D cell or struct, is a stream holding its names${as}`, () => { + const esNd = copyOf(variable('esNd', edited)) as any; + expect(streamOf(esNd)).toMatchObject({ cls: CLASS.STRUCT, dims: [0, 0, 2], fields: ['a', 'bb'], members: [] }); + const cNd = streamOf(copyOf(variable('cNd', edited)) as any); + expect(cNd.members!.map((m) => [m.cls, m.dims, m.fields, m.complex])).toEqual([ + [CLASS.STRUCT, [0, 0], ['a', 'bb'], false], + [CLASS.DOUBLE, [1, 0], undefined, true], + ]); + const sNd = streamOf(copyOf(variable('sNd', edited)) as any); + expect(sNd.fields).toEqual(['es', 'cx']); + expect(sNd.members!.map((m) => [m.cls, m.dims, m.fields, m.complex])).toEqual([ + [CLASS.STRUCT, [0, 0], ['a', 'bb'], false], + [CLASS.DOUBLE, [0, 0], undefined, true], + [CLASS.STRUCT, [1, 0], ['a', 'bb'], false], + [CLASS.INT16, [0, 0], undefined, true], + ]); + // Written as pasted, and read back so. + const { written, entry } = pasteSaved(TEXT, esNd); + expect(written).toEqual(esNd); + expect([entry.className, entry.dims, entry._emptyStructFields]).toEqual(['struct', [0, 0, 2], ['a', 'bb']]); + }); + + it(`a complex empty is a stream that says complex, at every rank and class${as}`, () => { + for (const [name, cls, dims, column] of [ + ['cx00', CLASS.DOUBLE, [0, 0], 'double (complex)'], + ['cx03s', CLASS.SINGLE, [0, 3], 'single (complex)'], + ['cxNd', CLASS.DOUBLE, [0, 0, 2], 'double (complex)'], + ] as const) { + const copy = copyOf(variable(name, edited)) as any; + expect(copy._type, name).toBe('cdata'); + expect(streamOf(copy), name).toMatchObject({ cls, dims, complex: true, re: [], im: [] }); + const { written, entry } = pasteSaved(TEXT, copy); + expect(written, name).toEqual(copy); + expect([entry.className, entry.dims, entry._classColumn()], name).toEqual([cls === CLASS.SINGLE ? 'single' : 'double', dims, column]); + } + }); + + it(`and as a member of a rank-2 cell or struct, each as itself${as}`, () => { + const cSp = copyOf(variable('cSp', edited)) as any; + expect(cSp._elements[0]).toEqual({ _array_type: 'Struct', _dimensions: [0, 0], _elements: [], _fields: ['a', 'bb'], _mw_element_type: 'MATLABArray' }); + expect(streamOf(cSp._elements[1])).toMatchObject({ cls: CLASS.DOUBLE, dims: [1, 0], complex: true }); + const s = copyOf(variable('s', edited)) as any; + expect(s._elements[0].es._fields).toEqual(['a', 'bb']); + expect(streamOf(s._elements[0].cx)).toMatchObject({ cls: CLASS.DOUBLE, dims: [0, 0], complex: true }); + }); + } +}); + +describe('copied into a binary dictionary, as MATLAB spells each there', () => { + // MATLAB's own spelling of dispcat.mat's variables, in the binary dictionary it wrote of them. + const matlab = strFromU8(unzipSync(fixture('display/dispcat_bin.sldd'))['data/chunk0.xml']); + const dispcat = () => createSession().addMatSource('dispcat.mat', arrayBufferOf(fixture('display/dispcat.mat'))) as any; + + for (const edited of [false, true]) { + it(`each of dispcat.mat's empties is the Value block MATLAB wrote for it${edited ? ', edited' : ''}`, () => { + for (const name of ['dx_struct_0x0', 'dx_struct_0x0_fields', 'dx_struct_1x0', 'dx_complex_0x0', 'dx_complex_1x0', 'dx_complex_int16_1x0', 'e_single_complex_1x0']) { + const node = dispcat().children.find((c: any) => c.name === name); + if (edited) { + node._markModified(); + } + const { written } = pasteSaved(BINARY, copyOf(node)); + expect(written, name).toBe(valueBlock(matlab, name)); + } + }); + } + + it('and the empties a cell or a struct holds, read back as they were', () => { + const { written: cell, entry: c } = pasteSaved(BINARY, copyOf(variable('cSp', true))); + expect(cell).toContain(' '); + expect(cell).toContain(''); + expect([c.children[0].className, c.children[0].dims, c.children[0].serial._fields]).toEqual(['struct', [0, 0], ['a', 'bb']]); + expect([c.children[1].dims, c.children[1]._classColumn()]).toEqual([[1, 0], 'double (complex)']); + + const { written: struct, entry: s } = pasteSaved(BINARY, copyOf(variable('s', true))); + expect(struct).toContain('

'); + expect(struct).toContain('

'); + const field = (n: string) => s.children.find((f: any) => f.name === n); + expect([field('es').serial._fields, field('cx')._classColumn()]).toEqual([['a', 'bb'], 'double (complex)']); + + const { written: nd } = pasteSaved(BINARY, copyOf(variable('sNd', true))); + expect(nd).toContain('

'); + expect(nd).toContain('

'); + }); +}); + +describe("a text dictionary's own stream of them, written again", () => { + it('keeps the names and the complexity, unedited and once rebuilt from its rows', () => { + // A text dictionary holding cNd as the stream a copy writes for it, as one saved before. + const { entry } = pasteSaved(TEXT, copyOf(variable('cNd'))); + const raw = entry._rawInput; + expect(entry._readFromStream).toBe(true); + // Unedited, it is written as the stream it was read from. + expect(entry.serializeValue()).toBe(raw); + // Rebuilt from its rows (what a value edit leaves, though the editor takes none here: a text + // dictionary's stream is shown and not edited), the stream MatWriter writes holds them too. + entry._markModified(); + const again = entry.serializeValue() as any; + expect(again).not.toBe(raw); + expect(streamOf(again).members!.map((m) => [m.cls, m.dims, m.fields, m.complex])).toEqual([ + [CLASS.STRUCT, [0, 0], ['a', 'bb'], false], + [CLASS.DOUBLE, [1, 0], undefined, true], + ]); + }); +}); diff --git a/test/matFreshFidelity.test.ts b/test/matFreshFidelity.test.ts new file mode 100644 index 00000000..40c5b188 --- /dev/null +++ b/test/matFreshFidelity.test.ts @@ -0,0 +1,255 @@ +// Copyright 2026 The MathWorks, Inc. +// +// Every plain variable of every Level-5 .mat here, written fresh by a save, is the variable the +// file held: compared with the file's own element, not with what the package's model of it says. +// +// The save's own self-check (MatFileWriter.selfCheck) holds what it wrote to the node's variable +// (MatlabVariableNode._var), and the live MATLAB gate (test/parity/matlab/probe_mat_writeback) +// found two losses that check could not see, because the model carried them too: a complex empty +// rebuilt as a real one once its node was marked edited, and a struct array of no element read +// with no field names, so written with none. MATLAB loaded both as another value. So here each +// variable the writer can write is marked edited without being changed (the mark an edit and its +// undo leave, DataNode._valueEdited), the file is saved, and the record the save wrote for it is +// compared with the record the file held: +// - by an element walker of the test's own (test/tools/matElements), which reads class, the +// complex, global, logical and sparse bits, dims, every field name of every struct (of no +// element too) in order, every member of every cell and struct, every element's value as +// its class holds it, double and single by their bits (-0 apart from 0), int64 and uint64 +// exactly, a char's code units; +// - and by the package's reader, the original parse beside the parse of the save: the class, +// size, complexity, sparsity, field names and order, members and values it reads. +// A NaN's payload is not compared (matElements says why). Any other difference is a value the +// writer changed, and fails here: what the writer cannot write as it was read, it must refuse. +// +// The candidates are what an edit can make the save write fresh: the variables whose edit the +// save takes (MatFileWriter.freshRefusal, the rule the editor offers edits by). A file whose +// save refuses a variable for what only its bytes can say (MatWriter's budget) is saved again +// without it, and the refusal is held to name it. +import { describe, it, expect } from 'vitest'; +import { readdirSync, readFileSync } from 'node:fs'; +import { join } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { unzlibSync } from 'fflate'; +import { parseMat, type MatRecord, type MatVariable } from '../src/datamodel/parser/MatParser.js'; +import { freshRefusal } from '../src/datamodel/parser/MatFileWriter.js'; +import { MatWriteError } from '../src/datamodel/parser/MatWriter.js'; +import { createSession } from '../src/index.js'; +import { elementDifference, elementValue } from './tools/matElements.js'; +import { CLASS, cellVar, matFile, numericVar, structVar } from './tools/matBytes.js'; + +const TEST_ROOT = fileURLToPath(new URL('.', import.meta.url)); +const MAT_CHECK = join(TEST_ROOT, 'fixtures', 'mat-check'); +// The one .mat here the reader refuses: a `-v7.3` file is HDF5, not Level 5. +const REFUSED = new Set(['strings_v73.mat']); + +function matFilesUnder(dir: string): string[] { + const out: string[] = []; + for (const entry of readdirSync(dir, { withFileTypes: true })) { + const abs = join(dir, entry.name); + if (entry.isDirectory()) { + if (abs !== MAT_CHECK) { + out.push(...matFilesUnder(abs)); + } + } else if (entry.isFile() && entry.name.endsWith('.mat') && !REFUSED.has(entry.name)) { + out.push(abs); + } + } + return out.sort(); +} + +const arrayBufferOf = (bytes: Uint8Array): ArrayBuffer => bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength) as ArrayBuffer; + +/** A record's miMATRIX element, its tag included, inflated when the record is compressed. */ +function elementOf(record: MatRecord): Uint8Array { + const view = new DataView(record.bytes.buffer, record.bytes.byteOffset, record.bytes.byteLength); + return view.getUint32(0, true) === 15 ? unzlibSync(record.bytes.subarray(8, 8 + view.getUint32(4, true))) : record.bytes; +} + +// The parts of a parsed variable that are where it came from rather than what it is. +const NOT_THE_VALUE = new Set(['name', '_rawBytes', '_modified', 'mcosHandle']); + +/** The first difference between two variables the reader made, or null. NaN equals NaN; -0 is not 0. */ +function parsedDifference(was: unknown, is: unknown, at: string): string | null { + const shown = (x: unknown) => (Object.is(x, -0) ? '-0' : String(x)); + if (typeof was === 'number' && typeof is === 'number') { + return (Number.isNaN(was) && Number.isNaN(is)) || Object.is(was, is) ? null : at + ': ' + shown(was) + ' read, ' + shown(is) + ' written'; + } + if (was === null || is === null || typeof was !== 'object' || typeof is !== 'object') { + return was === is ? null : at + ': ' + shown(was) + ' read, ' + shown(is) + ' written'; + } + if (ArrayBuffer.isView(was) || ArrayBuffer.isView(is)) { + const a = Array.from(was as ArrayLike); + const b = Array.from(is as ArrayLike); + return parsedDifference(a, b, at); + } + const keys = (o: object) => Object.keys(o).filter((k) => !NOT_THE_VALUE.has(k) && (o as Record)[k] !== undefined); + const a = keys(was); + const b = keys(is); + // A struct's field names, in order, are its keys. + if (a.join(',') !== b.join(',')) { + return at + ': keys ' + a.join(',') + ' read, ' + b.join(',') + ' written'; + } + for (const k of a) { + const d = parsedDifference((was as Record)[k], (is as Record)[k], at + '.' + k); + if (d) { + return d; + } + } + return null; +} + +interface Swept { + written: string[]; + refused: string[]; + differences: string[]; + unwalked: string[]; +} + +/** `bytes` opened, its every writable variable marked edited, saved, and each compared with its own record. */ +function sweep(file: string, bytes: Uint8Array, refusedBefore: string[] = []): Swept | { saveRefused: string } { + const session = createSession(); + const root: any = session.addMatSource(file, arrayBufferOf(bytes)); + const candidates = root.children.filter((node: any) => { + const record = root.recordOf(node); + return record && !refusedBefore.includes(node.name) && freshRefusal(node, record) === null; + }); + candidates.forEach((node: any) => node._markModified()); + let saved: Uint8Array; + try { + saved = (session.serializeSource(file) as { bytes: Uint8Array }).bytes; + } catch (e) { + if (!(e instanceof MatWriteError)) { + throw e; + } + // Refused for a variable's bytes (MatWriter's budget): saved again without it. Anything else + // refuses the file, which the caller judges. + const named = candidates.find((node: any) => e.message.startsWith('Cannot write "' + node.name + '"') || e.message.includes('"' + node.name + '"')); + if (named && refusedBefore.length < candidates.length + refusedBefore.length) { + return sweep(file, bytes, [...refusedBefore, named.name]); + } + return { saveRefused: e.message }; + } + const before = parseMat(arrayBufferOf(bytes)); + const after = parseMat(arrayBufferOf(saved)); + const out: Swept = { written: [], refused: refusedBefore, differences: [], unwalked: [] }; + for (const node of candidates) { + const name = node.name; + const was = before.records.find((r) => r.name === name)!; + const is = after.records.find((r) => r.name === name)!; + out.written.push(name); + let walked: string | null = null; + try { + walked = elementDifference(elementValue(elementOf(was)), elementValue(elementOf(is)), name); + } catch (e) { + // The file's element is one the walker cannot read (a damaged corpus file): the reader's + // comparison below still holds it. + out.unwalked.push(name + ': ' + (e as Error).message); + } + if (walked) { + out.differences.push(walked); + } + const parsed = parsedDifference(was.variable as MatVariable, is.variable as MatVariable, name); + if (parsed) { + out.differences.push(parsed); + } + } + return out; +} + +const fixtureFiles = matFilesUnder(TEST_ROOT); + +describe('every plain variable of every .mat, written fresh, is the variable its file held', () => { + it('sweeps every Level-5 fixture', () => { + expect(fixtureFiles.length).toBeGreaterThanOrEqual(35); + }); + + let total = 0; + for (const abs of fixtureFiles) { + const rel = abs.slice(TEST_ROOT.length); + it(rel, () => { + const result = sweep(rel.slice(rel.lastIndexOf('/') + 1), new Uint8Array(readFileSync(abs))); + expect('saveRefused' in result ? result.saveRefused : null, rel).toBeNull(); + const swept = result as Swept; + expect(swept.differences, rel).toEqual([]); + expect(swept.unwalked, rel).toEqual([]); + total += swept.written.length; + if (process.env.DEX_SWEEP_COUNTS) console.log(rel, 'written', swept.written.length, 'refused', swept.refused); + }); + } + + it('and writes over 150 variables fresh doing so', () => { + expect(total).toBeGreaterThanOrEqual(150); + }); +}); + +describe("and of every file of MATLAB's verdict corpus core opens (test/fixtures/mat-check)", () => { + const verdicts: { file: string; matlab: string }[] = JSON.parse(readFileSync(join(MAT_CHECK, 'verdicts.json'), 'utf8')); + + it('each variable written fresh is the one the file held, or its save is refused', () => { + let written = 0; + const differences: string[] = []; + for (const { file, matlab } of verdicts) { + const bytes = new Uint8Array(readFileSync(join(MAT_CHECK, file))); + let result: ReturnType; + try { + result = sweep(file, bytes); + } catch (e) { + // A file core does not open. + expect((e as Error).message, file).toBeTruthy(); + continue; + } + if ('saveRefused' in result) { + expect(result.saveRefused, file).toMatch(/^Cannot (save|write) "/); + continue; + } + written += result.written.length; + // A file MATLAB loads is held to every part of its elements; one it refuses was damaged on + // purpose, and its damaged part may be one the walker does not read. + if (matlab === 'loads') { + expect(result.unwalked, file).toEqual([]); + } + differences.push(...result.differences.map((d) => file + ': ' + d)); + } + expect(differences).toEqual([]); + if (process.env.DEX_SWEEP_COUNTS) console.log('corpus written', written); + expect(written).toBeGreaterThanOrEqual(150); + }); +}); + +describe('and of the values no fixture holds, built byte by byte', () => { + // A variable `save` marks global (its array flags' bit 0x04): the flag is the variable's, and + // nothing but the record's bytes holds it. + const global = (element: Uint8Array) => { + const out = element.slice(); + out[17] |= 0x04; + return out; + }; + const es = (dims: number[]) => structVar('', ['a', 'bb'], [], dims); + const cx = (dims: number[], cls: number = CLASS.DOUBLE) => numericVar({ name: '', cls, dimensions: dims, real: [], imag: [] }); + const one = numericVar({ name: '', cls: CLASS.DOUBLE, dimensions: [1, 1], real: [1] }); + const file = new Uint8Array( + matFile([ + global(numericVar({ name: 'g', cls: CLASS.DOUBLE, dimensions: [1, 2], real: [1, 2] })), + global(structVar('gs', ['es'], [{ es: es([0, 0]) }])), + numericVar({ name: 'negZero', cls: CLASS.DOUBLE, dimensions: [1, 3], real: [-0, 0, -0], imag: [-0, -0, 3] }), + numericVar({ name: 'negZeroScalar', cls: CLASS.DOUBLE, dimensions: [1, 1], real: [-0], imag: [-0] }), + numericVar({ name: 'negZeroSingle', cls: CLASS.SINGLE, dimensions: [1, 2], real: [-0, 1], imag: [2, -0] }), + numericVar({ name: 'realNegZero', cls: CLASS.DOUBLE, dimensions: [1, 2], real: [-0, 1] }), + numericVar({ name: 'cx03s', cls: CLASS.SINGLE, dimensions: [0, 3], real: [], imag: [] }), + numericVar({ name: 'cxNd', cls: CLASS.INT16, dimensions: [0, 2, 2], real: [], imag: [] }), + structVar('esNd', ['a', 'bb'], [], [0, 0, 2]), + cellVar('c', [es([0, 0]), cx([1, 0]), es([2, 0]), cx([0, 3], CLASS.SINGLE)], [1, 4]), + structVar('sa', ['es', 'x'], [{ es: es([0, 0]), x: one }, { es: es([1, 0]), x: one }], [1, 2]), + structVar('nested', ['inner'], [{ inner: structVar('', ['deep'], [{ deep: es([0, 1]) }]) }]), + ]), + ); + + it('each is written fresh as the variable the file held: global, -0 parts, empties with fields and complexity', () => { + const result = sweep('built.mat', file); + expect('saveRefused' in result ? result.saveRefused : null).toBeNull(); + const swept = result as Swept; + expect(swept.written.length).toBe(12); + expect(swept.differences).toEqual([]); + expect(swept.unwalked).toEqual([]); + }); +}); diff --git a/test/matNoPayload.test.ts b/test/matNoPayload.test.ts index 8ac906fe..beb146fb 100644 --- a/test/matNoPayload.test.ts +++ b/test/matNoPayload.test.ts @@ -87,7 +87,10 @@ describe('a numeric MAT value with no data is shown as not decoded, with no edit notDecoded('b1', '1x1', 'logical'), notDecoded('i32', '3x2', 'int16'), ]); - expect(rows[7]).toEqual(['e0', '[ ]', 'double', true, []]); + // Shown as [], as before, and taking no edit: a matrix whose sub-elements end before its data + // is one MATLAB does not load, so a save writes it only as it was read, or renamed + // (MatFileWriter.freshRefusal). + expect(rows[7]).toEqual(['e0', '[ ]', 'double', false, []]); expect([rows[0], ...rows.slice(8)]).toEqual(control.children.map(row)); // Before: no warning at all. expect(mat.warnings).toEqual([ diff --git a/test/matParser.test.ts b/test/matParser.test.ts index f6792fe0..da9dc0f9 100644 --- a/test/matParser.test.ts +++ b/test/matParser.test.ts @@ -1386,9 +1386,11 @@ describe('parseMat — old-style (class 3) objects', () => { // A sparse matrix was the other user of the same channel, past a million elements, // until it came to be held as its non-zeros: it is its summary and its rows now, as // every sparse matrix is. This input's jc is short (three starts for 2000 columns), so - // it is a damaged array: read as far as its index goes, and reported. Its row is - // editable: the index its dims declare past the two columns it held is 8 KB, which one - // write's budget of 16 MiB covers. + // it is a damaged array: read as far as its index goes, and reported. Its row takes no edit + // in the .mat: a column index short of its columns is a matrix MATLAB does not load, so a + // save writes it only as it was read (MatFileWriter.freshRefusal). Out of a .mat, it would: + // the index its dims declare past the two columns it held is 8 KB, which one write's budget + // of 16 MiB covers. const session = createSession(); const mat = session.addMatSource( 'big.mat', @@ -1402,7 +1404,9 @@ describe('parseMat — old-style (class 3) objects', () => { ]); expect(node.valueEditable).toBe(false); expect([node.className, node.dataType]).toEqual(['double', 'double']); - expect([mat.warnings.map((w: any) => w.part), node.children[0].valueEditable]).toEqual([['big'], true]); + expect([mat.warnings.map((w: any) => w.part), node.children[0].valueEditable]).toEqual([['big'], false]); + mat.removeChild(node); + expect(node.children[0].valueEditable).toBe(true); // Its full-jc twin, the shape MATLAB writes: the same, with nothing to report and its // row editable. const real = session.addMatSource( diff --git a/test/parity/matlab/README.md b/test/parity/matlab/README.md index 7ad10d6a..1bd3a37f 100644 --- a/test/parity/matlab/README.md +++ b/test/parity/matlab/README.md @@ -134,6 +134,7 @@ directory, because `Simulink.data.dictionary.open` rejects a relative one with | `probe_m9_merged_reopen.m` + `m9_merged_saves.mjs` | does MATLAB reopen S2's merged saves of a binary dictionary (an edited entry saved as its bytes, with only what the edit changed written from the model) and read every entry as it should (M9)? In every compressed-binary fixture under `test/fixtures` and `test/parity/artifacts`, and in a copy of each as an earlier core save left it (1x1 cells spelled `Dimension="1*1"`, so that the merge differs from writing the entry whole), one entry of each kind is renamed, has its Description set, and where it is cheap a bus element's Description or a struct field edited, each through `session.editProperty` and saved by `serializeSource` into a file of its own. MATLAB opens each save and a copy of its original: every unedited entry must read as in the original (class, `isequaln`, `fullsig`), the edited one as the original with the same edit made in MATLAB, with no error or warning. Opens only the copies and the saves in `$M9_OUT`; graded by `../m9MergedSaves.truth.test.ts`. Ends `M9_MERGED_REOPEN OK` | `$M9_OUT` | `m9_merged_saves.truth.json` (here), written by `27.1.0.3409468 (R2027a) Prerelease` | | `probe_old_saves_readback.m` + `old_saves.mjs` | what does MATLAB read of a binary dictionary core saved before two of its fixes, and of what core copies now from a binary dictionary into a text one (M4, M7, D15)? `../oldsaves/` holds untouched saves, by core built at `50549bd^`, `69664b0^` and `90caf06^`, of every binary fixture holding a dynamic property or a struct entry of no element, and of `old_saves_r2027a_binary.sldd` (`make_old_saves_r2027a.m`: an AUTOSAR config set, a config set holding an `SSC.SimscapeCC`, a `dexdata.DerivedSignal` beside a `Simulink.Signal`, and empty structs of five shapes); the `.mjs` makes them once per build (`save`), and the pastes into the text twin with this checkout (`cases`). MATLAB opens each save and paste and a copy of its original: every entry as in the original, each dynamic property by `get_param`, each empty struct's shape. Opens only the files in `$OLD_SAVES_OUT`; graded by `../oldSaves.truth.test.ts`. Ends `OLD_SAVES_READBACK OK` | `$OLD_SAVES_OUT` | `old_saves_readback.truth.json` (here), written by `27.1.0.3409468 (R2027a) Prerelease` | | `probe_fieldless_struct_readback.m` + `fieldless_struct_readback.mjs` | does MATLAB read back core's one-stream spelling of a field-less `repmat(struct(),1e4,1e4)` (a 132-byte cdata in text, a 72-byte hex stream in binary), as an entry, a struct field and a cell's element, where its own spelling is 1e8 elements? (F1-9; graded by `../../fieldlessStructReadback.test.ts`). Ends `FIELDLESS_STRUCT_READBACK OK` | `$FIELDLESS_OUT` | `fieldless_struct_readback.truth.json` (here), from `../../fixtures/mcos/fieldless_1e4x1e4.mat` (MATLAB's `save`), written by `27.1.0.3409468 (R2027a) Prerelease` | +| `probe_empty_copies_readback.m` + `empty_copies_readback.mjs` | does MATLAB read back core's copy of a struct array of no element with fields (`struct('a', {})`, 0x0 and 1x0) and of a complex empty (double 0x0 and 1x0, int16 and single 1x0), dispcat.mat's own, pasted into a text and a binary dictionary as an entry, a struct field and a cell's element, as read and once marked edited, as `load` reads the variable? Yes for all 72: field names, size, class and complexity kept (a text dictionary's bag `{"_elements": [], "_fields": ["a"]}` and a complex empty's MAT stream; a binary one's `` and `IsComplex="1"`, MATLAB's own spelling). Graded by `../../emptyCopiesReadback.test.ts`. Opens only the files the `.mjs` writes. Ends `EMPTY_COPIES_READBACK OK` | `$EMPTY_COPIES_OUT` | `empty_copies_readback.truth.json` (here), written by `27.1.0.3409468 (R2027a) Prerelease` | | `probe_nd_undecoded_copy_readback.m` + `nd_undecoded_copy_readback.mjs` | does MATLAB read back, as `load` reads the `.mat` variable, the MAT stream a 1x1x2 cell or struct holding a sparse array core did not decode (values absent, of no width, or 2 of 4) used to copy as, pasted into a text and a binary dictionary? Not for a struct whose member's values are absent (a 1x0 double in text, an error in binary), so the copy stays refused (B-11; graded by `../../undecodedCopy.test.ts`). Opens only the files the `.mjs` writes. Ends `ND_UNDECODED_COPY_READBACK OK` | `$ND_UNDECODED_OUT` | `nd_undecoded_copy_readback.truth.json` (here), written by `27.1.0.3409468 (R2027a) Prerelease` | | `probe_short_array_copy_readback.m` + `short_array_copy_readback.mjs` | does MATLAB read back, as the padded value core shows, the copy of a `.mat` struct array or cell whose bytes hold fewer elements than it declares (some held, none held, rank 2 and N-D, a struct cut inside an element; one holding every element as the control), pasted into a text and a binary dictionary? Yes for each holding some, and for an N-D one holding none; not for a rank-2 struct array holding none (a struct with no fields), nor a rank-2 cell holding none in a binary dictionary (a 0x0 cell), so those copies are refused (B-26; graded by `../../shortArrayCopy.test.ts`). `load` refuses every damaged file. Opens only the files the `.mjs` writes. Ends `SHORT_ARRAY_COPY_READBACK OK` | `$SHORT_COPY_OUT` | `short_array_copy_readback.truth.json` (here), written by `27.1.0.3409468 (R2027a) Prerelease` | | `probe_text_empty_readback.m` | how does MATLAB read back a classed or shaped EMPTY out of a text dictionary, at an entry, a cell, a struct field, a Parameter's Value and an object's property, in each candidate spelling; and how does it spell one there itself? (1A-TEXT, CELL-EMPTIES-87, D8; graded by `test/textEmptyReadback.test.ts`). Ends `TEXT_EMPTY_READBACK OK` | `$TEXT_EMPTY_OUT` or `tempdir/textempty` | `text_empty_readback.truth.json` (here) and `../../fixtures/text_empty_readback_binary.sldd`, written by `27.1.0.3409468 (R2027a) Prerelease` | @@ -278,8 +279,11 @@ each saved file **the same edit as MATLAB statements** on a struct `S` loaded fr the statements make of it, so the two halves describe one edit. `probe_mat_writeback.m` then loads the original, makes the edit in MATLAB, loads the save, and compares: -- the same variables in the same order (load's, and `whos -file`'s class and size of each); -- each variable to the leaf: class, size, sparsity, complexity, `isequaln` on every value, +- the same variables in the same order (load's, and `whos -file`'s class, size and global flag + of each); +- each variable to the leaf: class, size, sparsity, complexity, `isequaln` on every value and + the bits of every double and single (the sign of a zero, which `isequaln` does not see; a + NaN's payload apart), field names in order, every element of a cell or a struct array, every readable property of an object, a function handle's text and an anonymous one's workspace, and handle sharing (one object held twice is still one object); @@ -303,21 +307,29 @@ The fixtures are `cases.mat`, `dispcat.mat`, `dispcat_opaque.mat` (function hand enumerations, `fi`, `categorical`, `table`), `nested_objects.mat`, `strings.mat`, `strings_mixed.mat`, `sparse_values.mat`, `sparse_cases.mat`, `complex_inf.mat` (no subsystem), `dag4.mat` (a handle DAG), the two `-v6` files `nested_handles.mat` and `hexobj_values.mat`, and -one file the JS half assembles from `dispcat.mat`'s own elements, an empty complex array and an -empty struct array with a field held in a struct and a cell beside a value to edit. The MATLAB +two files the JS half assembles: one of `dispcat.mat`'s own elements, an empty complex array and +an empty struct array with a field held in a struct and a cell beside a value to edit; and one +built by hand as MATLAB writes each part, of what no fixture holds: a struct of no element with two +fields in a cell, `complex(zeros(0,3,'single'))` alone and in a struct, empty structs with a field +in each element of a struct array, a variable saved as global, and a complex row whose zero parts +are -0, each beside a value to edit. The MATLAB half puts the classes those need on the path (`../../fixtures/display`, `../../fixtures/sparse`, `../../fixtures/mcos/shared`, and `DispColor` by `Simulink.defineIntEnumType`). -Twelve cases are **negative controls**: MATLAB's half makes one change more than the save does +Thirteen cases are **negative controls**: MATLAB's half makes one change more than the save does (a value, a class, complexity, a Parameter's `Value` and its `CoderInfo.StorageClass`, a string, the variables' order, a struct's field order, handle sharing, an anonymous handle's -text, an enumeration member, a `categorical`), and each passes only when the comparison -reports that difference. They are what makes a PASS mean the comparison looked. +text, an enumeration member, a `categorical`, a complex zero's -0 parts made +0), and each +passes only when the comparison reports that difference. They are what makes a PASS mean the +comparison looked. `matWriteback.live.test.ts` runs both halves (Tier 2, below). `matWritebackDefects.test.ts` -holds, without MATLAB, the two defects the first run found: a complex empty written fresh loads -real, and an empty struct array written fresh loads with no field, which an edit of a field or -a cell member beside it is enough to cause. +holds, without MATLAB, the two losses the first run found, fixed: a complex empty written fresh +loaded real, and an empty struct array written fresh loaded with no field, which an edit of a +field or a cell member beside it was enough to cause. Neither was visible to core, whose reader +carried the same loss; `../../matFreshFidelity.test.ts` now holds every plain variable of every +fixture, written fresh, to the file's own element, read by a walker of its own +(`../../tools/matElements.ts`). ## The catalog diff --git a/test/parity/matlab/empty_copies_readback.mjs b/test/parity/matlab/empty_copies_readback.mjs new file mode 100644 index 00000000..96ebc9e7 --- /dev/null +++ b/test/parity/matlab/empty_copies_readback.mjs @@ -0,0 +1,130 @@ +// Copyright 2026 The MathWorks, Inc. +// +// The core half of probe_empty_copies_readback.m: does MATLAB read back, as `load` reads the .mat +// variable, a copy of a struct array of no element with fields, and of a complex empty, pasted +// through core's API into a text and a binary dictionary, as an entry's value, a struct field and +// a cell's element? +// +// The values are MATLAB's own, dispcat.mat's: struct('a', {}) as a 0x0 and a 1x0, and +// complex(zeros(0,0)), complex(zeros(1,0)), a complex int16 1x0 and a complex single 1x0. Each is +// copied as a host copies it (serialize().value), as read and once marked edited (the mark an +// edit and its undo leave, which writes the value from its rows). Core spells them: +// - in a binary dictionary, as MATLAB's own binary dictionary of the same variables does +// (dispcat_bin.sldd): `` inside a struct of no element, `IsComplex="1"` on +// an empty; +// - in a text dictionary, where MATLAB's own spelling of each loses it (`{"_type": "struct", +// "_value": "[]"}`, `[]`; dispcat_text.sldd), a struct of no element as the bag +// `{"_elements": [], "_fields": ["a"]}` and a complex empty as its MAT stream (cdata). +// +// emptyCopiesReadback(core, read) returns { files, cases }: the saved dictionaries by name, and +// one row per place, its `fragment` the value as written there (a text dictionary's JSON, a binary +// one's `

` or `` span). test/emptyCopiesReadback.test.ts calls it with the +// package's source and compares each fragment with the one MATLAB read back. +// +// Run: node test/parity/matlab/empty_copies_readback.mjs /tmp/emptycopies +// with dist built; then probe_empty_copies_readback.m with EMPTY_COPIES_OUT set to the same directory. +import { strFromU8, unzipSync } from 'fflate'; + +const ab = (u8) => u8.buffer.slice(u8.byteOffset, u8.byteOffset + u8.byteLength); +export const HOSTS = ['sparse/sparse_text.sldd', 'sparse/sparse_binary.sldd']; +export const VARIABLES = ['dx_struct_0x0_fields', 'dx_struct_1x0', 'dx_complex_0x0', 'dx_complex_1x0', 'dx_complex_int16_1x0', 'e_single_complex_1x0']; +export const PLACES = ['entry', 'field', 'cell']; + +/** The `

` or `` starting at `from` in `xml`, through its close (or its own `/>`). */ +function spanFrom(xml, from) { + const tag = xml.startsWith('', from); + if (xml[end - 1] === '/') { + return xml.slice(from, end + 1); + } + const close = ''; + return xml.slice(from, xml.indexOf(close, from) + close.length).replace(/\s+/g, ' '); +} + +/** The value at `place` of the entry named `name` in a saved dictionary. */ +function fragmentAt(saved, name, place) { + if (saved.kind === 'text') { + const entries = JSON.parse(saved.text).__MW_TEXT_PARTS__['__MW_TEXT_PART__/data/chunk0'].__MW_TEXT_content.entries; + const value = entries.find((e) => e.name === name).value; + return JSON.stringify(place === 'entry' ? value : place === 'field' ? value._elements[0].f : value._elements[0]); + } + const xml = strFromU8(unzipSync(saved.bytes)['data/chunk0.xml']); + const at = xml.indexOf('

' + name + '

'); + const value = xml.indexOf('

{ + const mat = createSession().addMatSource('dispcat.mat', ab(read('display/dispcat.mat'))); + const node = mat.children.find((c) => c.name === name); + if (edited) { + node._markModified(); + } + return JSON.parse(JSON.stringify(node.serialize().value)); + }; + const files = {}; + const cases = []; + HOSTS.forEach((host, h) => { + const base = host.split('/').pop(); + const s = createSession(); + const root = ingest(s, ab(read(host)), { filename: base }); + const design = root.getSection('design'); + let k = 0; + // The section's own metadata, as a host's paste gives it: an entry with no namespace makes a + // dictionary MATLAB refuses to open at all. + const meta = () => ({ ...design.children[0].metadata, uuid: '00000000-0000-4000-e9fa-' + String(h * 100 + ++k).padStart(12, '0') }); + const rows = []; + VARIABLES.forEach((variable, v) => { + for (const edited of [false, true]) { + const value = copyOf(variable, edited); + for (const place of PLACES) { + const entry = 'e' + v + (edited ? 'm' : 'u') + place[0]; + const held = + place === 'entry' + ? value + : place === 'field' + ? { _array_type: 'Struct', _dimensions: [1, 1], _elements: [{ f: value }], _mw_element_type: 'MATLABArray' } + : { _array_type: 'Cell', _dimensions: [1, 1], _elements: [value], _mw_element_type: 'MATLABArray' }; + design.parseEntry({ name: entry, metadata: meta(), value: held }); + rows.push({ variable, edited, place, entry }); + } + } + }); + const saved = s.serializeSource(root.name); + const file = 'empty_copies_' + base; + files[file] = saved.kind === 'text' ? saved.text : saved.bytes; + for (const row of rows) { + cases.push({ file, format: saved.kind, ...row, fragment: fragmentAt(saved, row.entry, row.place) }); + } + }); + return { files, cases }; +} + +// As a script: the saves, dispcat.mat (the values MATLAB compares them with) and cases.json into a +// directory, from the built package. +if (process.argv[1] && import.meta.url === new URL('file://' + process.argv[1]).href) { + const { mkdirSync, readFileSync, writeFileSync } = await import('node:fs'); + const { join } = await import('node:path'); + const { fileURLToPath } = await import('node:url'); + const [outDir] = process.argv.slice(2); + if (!outDir) { + throw new Error('usage: node empty_copies_readback.mjs '); + } + const here = fileURLToPath(new URL('.', import.meta.url)); + const core = await import(join(here, '..', '..', '..', 'dist', 'index.js')); + const read = (rel) => new Uint8Array(readFileSync(join(here, '..', '..', 'fixtures', rel))); + const { files, cases } = emptyCopiesReadback(core, read); + mkdirSync(outDir, { recursive: true }); + for (const [name, bytes] of Object.entries(files)) { + writeFileSync(join(outDir, name), bytes); + } + writeFileSync(join(outDir, 'dispcat.mat'), read('display/dispcat.mat')); + writeFileSync(join(outDir, 'cases.json'), JSON.stringify(cases, null, 2) + '\n'); + console.log('wrote', Object.keys(files).length, 'saves and', cases.length, 'cases to', outDir); +} diff --git a/test/parity/matlab/empty_copies_readback.truth.json b/test/parity/matlab/empty_copies_readback.truth.json new file mode 100644 index 00000000..d0de1968 --- /dev/null +++ b/test/parity/matlab/empty_copies_readback.truth.json @@ -0,0 +1,2047 @@ +{ + "version": "27.1.0.3409468 (R2027a) Prerelease", + "release": "2027a", + "date": "2026-10-20", + "cases": [ + { + "file": "empty_copies_sparse_text.sldd", + "format": "text", + "variable": "dx_struct_0x0_fields", + "edited": false, + "place": "entry", + "entry": "e0ue", + "fragment": "{\"_array_type\":\"Struct\",\"_dimensions\":[0,0],\"_elements\":[],\"_fields\":[\"a\"],\"_mw_element_type\":\"MATLABArray\"}", + "matlab": { + "class": "struct", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + }, + "loaded": { + "class": "struct", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + } + }, + { + "file": "empty_copies_sparse_text.sldd", + "format": "text", + "variable": "dx_struct_0x0_fields", + "edited": false, + "place": "field", + "entry": "e0uf", + "fragment": "{\"_array_type\":\"Struct\",\"_dimensions\":[0,0],\"_elements\":[],\"_fields\":[\"a\"],\"_mw_element_type\":\"MATLABArray\"}", + "matlab": { + "class": "struct", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + }, + "loaded": { + "class": "struct", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + } + }, + { + "file": "empty_copies_sparse_text.sldd", + "format": "text", + "variable": "dx_struct_0x0_fields", + "edited": false, + "place": "cell", + "entry": "e0uc", + "fragment": "{\"_array_type\":\"Struct\",\"_dimensions\":[0,0],\"_elements\":[],\"_fields\":[\"a\"],\"_mw_element_type\":\"MATLABArray\"}", + "matlab": { + "class": "struct", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + }, + "loaded": { + "class": "struct", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + } + }, + { + "file": "empty_copies_sparse_text.sldd", + "format": "text", + "variable": "dx_struct_0x0_fields", + "edited": true, + "place": "entry", + "entry": "e0me", + "fragment": "{\"_array_type\":\"Struct\",\"_dimensions\":[0,0],\"_elements\":[],\"_fields\":[\"a\"],\"_mw_element_type\":\"MATLABArray\"}", + "matlab": { + "class": "struct", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + }, + "loaded": { + "class": "struct", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + } + }, + { + "file": "empty_copies_sparse_text.sldd", + "format": "text", + "variable": "dx_struct_0x0_fields", + "edited": true, + "place": "field", + "entry": "e0mf", + "fragment": "{\"_array_type\":\"Struct\",\"_dimensions\":[0,0],\"_elements\":[],\"_fields\":[\"a\"],\"_mw_element_type\":\"MATLABArray\"}", + "matlab": { + "class": "struct", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + }, + "loaded": { + "class": "struct", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + } + }, + { + "file": "empty_copies_sparse_text.sldd", + "format": "text", + "variable": "dx_struct_0x0_fields", + "edited": true, + "place": "cell", + "entry": "e0mc", + "fragment": "{\"_array_type\":\"Struct\",\"_dimensions\":[0,0],\"_elements\":[],\"_fields\":[\"a\"],\"_mw_element_type\":\"MATLABArray\"}", + "matlab": { + "class": "struct", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + }, + "loaded": { + "class": "struct", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + } + }, + { + "file": "empty_copies_sparse_text.sldd", + "format": "text", + "variable": "dx_struct_1x0", + "edited": false, + "place": "entry", + "entry": "e1ue", + "fragment": "{\"_array_type\":\"Struct\",\"_dimensions\":[1,0],\"_elements\":[],\"_fields\":[\"a\"],\"_mw_element_type\":\"MATLABArray\"}", + "matlab": { + "class": "struct", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + }, + "loaded": { + "class": "struct", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + } + }, + { + "file": "empty_copies_sparse_text.sldd", + "format": "text", + "variable": "dx_struct_1x0", + "edited": false, + "place": "field", + "entry": "e1uf", + "fragment": "{\"_array_type\":\"Struct\",\"_dimensions\":[1,0],\"_elements\":[],\"_fields\":[\"a\"],\"_mw_element_type\":\"MATLABArray\"}", + "matlab": { + "class": "struct", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + }, + "loaded": { + "class": "struct", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + } + }, + { + "file": "empty_copies_sparse_text.sldd", + "format": "text", + "variable": "dx_struct_1x0", + "edited": false, + "place": "cell", + "entry": "e1uc", + "fragment": "{\"_array_type\":\"Struct\",\"_dimensions\":[1,0],\"_elements\":[],\"_fields\":[\"a\"],\"_mw_element_type\":\"MATLABArray\"}", + "matlab": { + "class": "struct", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + }, + "loaded": { + "class": "struct", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + } + }, + { + "file": "empty_copies_sparse_text.sldd", + "format": "text", + "variable": "dx_struct_1x0", + "edited": true, + "place": "entry", + "entry": "e1me", + "fragment": "{\"_array_type\":\"Struct\",\"_dimensions\":[1,0],\"_elements\":[],\"_fields\":[\"a\"],\"_mw_element_type\":\"MATLABArray\"}", + "matlab": { + "class": "struct", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + }, + "loaded": { + "class": "struct", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + } + }, + { + "file": "empty_copies_sparse_text.sldd", + "format": "text", + "variable": "dx_struct_1x0", + "edited": true, + "place": "field", + "entry": "e1mf", + "fragment": "{\"_array_type\":\"Struct\",\"_dimensions\":[1,0],\"_elements\":[],\"_fields\":[\"a\"],\"_mw_element_type\":\"MATLABArray\"}", + "matlab": { + "class": "struct", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + }, + "loaded": { + "class": "struct", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + } + }, + { + "file": "empty_copies_sparse_text.sldd", + "format": "text", + "variable": "dx_struct_1x0", + "edited": true, + "place": "cell", + "entry": "e1mc", + "fragment": "{\"_array_type\":\"Struct\",\"_dimensions\":[1,0],\"_elements\":[],\"_fields\":[\"a\"],\"_mw_element_type\":\"MATLABArray\"}", + "matlab": { + "class": "struct", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + }, + "loaded": { + "class": "struct", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + } + }, + { + "file": "empty_copies_sparse_text.sldd", + "format": "text", + "variable": "dx_complex_0x0", + "edited": false, + "place": "entry", + "entry": "e2ue", + "fragment": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( !@@ % \\\" 0 ) D \\u0000\"}", + "matlab": { + "class": "double", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "double", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_text.sldd", + "format": "text", + "variable": "dx_complex_0x0", + "edited": false, + "place": "field", + "entry": "e2uf", + "fragment": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( !@@ % \\\" 0 ) D \\u0000\"}", + "matlab": { + "class": "double", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "double", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_text.sldd", + "format": "text", + "variable": "dx_complex_0x0", + "edited": false, + "place": "cell", + "entry": "e2uc", + "fragment": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( !@@ % \\\" 0 ) D \\u0000\"}", + "matlab": { + "class": "double", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "double", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_text.sldd", + "format": "text", + "variable": "dx_complex_0x0", + "edited": true, + "place": "entry", + "entry": "e2me", + "fragment": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( !@@ % \\\" 0 ) D \\u0000\"}", + "matlab": { + "class": "double", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "double", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_text.sldd", + "format": "text", + "variable": "dx_complex_0x0", + "edited": true, + "place": "field", + "entry": "e2mf", + "fragment": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( !@@ % \\\" 0 ) D \\u0000\"}", + "matlab": { + "class": "double", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "double", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_text.sldd", + "format": "text", + "variable": "dx_complex_0x0", + "edited": true, + "place": "cell", + "entry": "e2mc", + "fragment": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( !@@ % \\\" 0 ) D \\u0000\"}", + "matlab": { + "class": "double", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "double", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_text.sldd", + "format": "text", + "variable": "dx_complex_1x0", + "edited": false, + "place": "entry", + "entry": "e3ue", + "fragment": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( !@@ % \\\" $ 0 ) D \\u0000\"}", + "matlab": { + "class": "double", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "double", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_text.sldd", + "format": "text", + "variable": "dx_complex_1x0", + "edited": false, + "place": "field", + "entry": "e3uf", + "fragment": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( !@@ % \\\" $ 0 ) D \\u0000\"}", + "matlab": { + "class": "double", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "double", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_text.sldd", + "format": "text", + "variable": "dx_complex_1x0", + "edited": false, + "place": "cell", + "entry": "e3uc", + "fragment": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( !@@ % \\\" $ 0 ) D \\u0000\"}", + "matlab": { + "class": "double", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "double", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_text.sldd", + "format": "text", + "variable": "dx_complex_1x0", + "edited": true, + "place": "entry", + "entry": "e3me", + "fragment": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( !@@ % \\\" $ 0 ) D \\u0000\"}", + "matlab": { + "class": "double", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "double", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_text.sldd", + "format": "text", + "variable": "dx_complex_1x0", + "edited": true, + "place": "field", + "entry": "e3mf", + "fragment": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( !@@ % \\\" $ 0 ) D \\u0000\"}", + "matlab": { + "class": "double", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "double", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_text.sldd", + "format": "text", + "variable": "dx_complex_1x0", + "edited": true, + "place": "cell", + "entry": "e3mc", + "fragment": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( !@@ % \\\" $ 0 ) D \\u0000\"}", + "matlab": { + "class": "double", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "double", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_text.sldd", + "format": "text", + "variable": "dx_complex_int16_1x0", + "edited": false, + "place": "entry", + "entry": "e4ue", + "fragment": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( \\\"@@ % \\\" $ 0 # , \\u0000\"}", + "matlab": { + "class": "int16", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "int16", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_text.sldd", + "format": "text", + "variable": "dx_complex_int16_1x0", + "edited": false, + "place": "field", + "entry": "e4uf", + "fragment": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( \\\"@@ % \\\" $ 0 # , \\u0000\"}", + "matlab": { + "class": "int16", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "int16", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_text.sldd", + "format": "text", + "variable": "dx_complex_int16_1x0", + "edited": false, + "place": "cell", + "entry": "e4uc", + "fragment": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( \\\"@@ % \\\" $ 0 # , \\u0000\"}", + "matlab": { + "class": "int16", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "int16", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_text.sldd", + "format": "text", + "variable": "dx_complex_int16_1x0", + "edited": true, + "place": "entry", + "entry": "e4me", + "fragment": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( \\\"@@ % \\\" $ 0 # , \\u0000\"}", + "matlab": { + "class": "int16", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "int16", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_text.sldd", + "format": "text", + "variable": "dx_complex_int16_1x0", + "edited": true, + "place": "field", + "entry": "e4mf", + "fragment": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( \\\"@@ % \\\" $ 0 # , \\u0000\"}", + "matlab": { + "class": "int16", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "int16", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_text.sldd", + "format": "text", + "variable": "dx_complex_int16_1x0", + "edited": true, + "place": "cell", + "entry": "e4mc", + "fragment": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( \\\"@@ % \\\" $ 0 # , \\u0000\"}", + "matlab": { + "class": "int16", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "int16", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_text.sldd", + "format": "text", + "variable": "e_single_complex_1x0", + "edited": false, + "place": "entry", + "entry": "e5ue", + "fragment": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( !P@ % \\\" $ 0 ' < \\u0000\"}", + "matlab": { + "class": "single", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "single", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_text.sldd", + "format": "text", + "variable": "e_single_complex_1x0", + "edited": false, + "place": "field", + "entry": "e5uf", + "fragment": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( !P@ % \\\" $ 0 ' < \\u0000\"}", + "matlab": { + "class": "single", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "single", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_text.sldd", + "format": "text", + "variable": "e_single_complex_1x0", + "edited": false, + "place": "cell", + "entry": "e5uc", + "fragment": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( !P@ % \\\" $ 0 ' < \\u0000\"}", + "matlab": { + "class": "single", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "single", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_text.sldd", + "format": "text", + "variable": "e_single_complex_1x0", + "edited": true, + "place": "entry", + "entry": "e5me", + "fragment": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( !P@ % \\\" $ 0 ' < \\u0000\"}", + "matlab": { + "class": "single", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "single", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_text.sldd", + "format": "text", + "variable": "e_single_complex_1x0", + "edited": true, + "place": "field", + "entry": "e5mf", + "fragment": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( !P@ % \\\" $ 0 ' < \\u0000\"}", + "matlab": { + "class": "single", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "single", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_text.sldd", + "format": "text", + "variable": "e_single_complex_1x0", + "edited": true, + "place": "cell", + "entry": "e5mc", + "fragment": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( !P@ % \\\" $ 0 ' < \\u0000\"}", + "matlab": { + "class": "single", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "single", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_binary.sldd", + "format": "binary", + "variable": "dx_struct_0x0_fields", + "edited": false, + "place": "entry", + "entry": "e0ue", + "fragment": "

", + "matlab": { + "class": "struct", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + }, + "loaded": { + "class": "struct", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + } + }, + { + "file": "empty_copies_sparse_binary.sldd", + "format": "binary", + "variable": "dx_struct_0x0_fields", + "edited": false, + "place": "field", + "entry": "e0uf", + "fragment": "

", + "matlab": { + "class": "struct", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + }, + "loaded": { + "class": "struct", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + } + }, + { + "file": "empty_copies_sparse_binary.sldd", + "format": "binary", + "variable": "dx_struct_0x0_fields", + "edited": false, + "place": "cell", + "entry": "e0uc", + "fragment": " ", + "matlab": { + "class": "struct", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + }, + "loaded": { + "class": "struct", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + } + }, + { + "file": "empty_copies_sparse_binary.sldd", + "format": "binary", + "variable": "dx_struct_0x0_fields", + "edited": true, + "place": "entry", + "entry": "e0me", + "fragment": "

", + "matlab": { + "class": "struct", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + }, + "loaded": { + "class": "struct", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + } + }, + { + "file": "empty_copies_sparse_binary.sldd", + "format": "binary", + "variable": "dx_struct_0x0_fields", + "edited": true, + "place": "field", + "entry": "e0mf", + "fragment": "

", + "matlab": { + "class": "struct", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + }, + "loaded": { + "class": "struct", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + } + }, + { + "file": "empty_copies_sparse_binary.sldd", + "format": "binary", + "variable": "dx_struct_0x0_fields", + "edited": true, + "place": "cell", + "entry": "e0mc", + "fragment": " ", + "matlab": { + "class": "struct", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + }, + "loaded": { + "class": "struct", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + } + }, + { + "file": "empty_copies_sparse_binary.sldd", + "format": "binary", + "variable": "dx_struct_1x0", + "edited": false, + "place": "entry", + "entry": "e1ue", + "fragment": "

", + "matlab": { + "class": "struct", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + }, + "loaded": { + "class": "struct", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + } + }, + { + "file": "empty_copies_sparse_binary.sldd", + "format": "binary", + "variable": "dx_struct_1x0", + "edited": false, + "place": "field", + "entry": "e1uf", + "fragment": "

", + "matlab": { + "class": "struct", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + }, + "loaded": { + "class": "struct", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + } + }, + { + "file": "empty_copies_sparse_binary.sldd", + "format": "binary", + "variable": "dx_struct_1x0", + "edited": false, + "place": "cell", + "entry": "e1uc", + "fragment": " ", + "matlab": { + "class": "struct", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + }, + "loaded": { + "class": "struct", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + } + }, + { + "file": "empty_copies_sparse_binary.sldd", + "format": "binary", + "variable": "dx_struct_1x0", + "edited": true, + "place": "entry", + "entry": "e1me", + "fragment": "

", + "matlab": { + "class": "struct", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + }, + "loaded": { + "class": "struct", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + } + }, + { + "file": "empty_copies_sparse_binary.sldd", + "format": "binary", + "variable": "dx_struct_1x0", + "edited": true, + "place": "field", + "entry": "e1mf", + "fragment": "

", + "matlab": { + "class": "struct", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + }, + "loaded": { + "class": "struct", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + } + }, + { + "file": "empty_copies_sparse_binary.sldd", + "format": "binary", + "variable": "dx_struct_1x0", + "edited": true, + "place": "cell", + "entry": "e1mc", + "fragment": " ", + "matlab": { + "class": "struct", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + }, + "loaded": { + "class": "struct", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [ + "a" + ] + } + }, + { + "file": "empty_copies_sparse_binary.sldd", + "format": "binary", + "variable": "dx_complex_0x0", + "edited": false, + "place": "entry", + "entry": "e2ue", + "fragment": "

", + "matlab": { + "class": "double", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "double", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_binary.sldd", + "format": "binary", + "variable": "dx_complex_0x0", + "edited": false, + "place": "field", + "entry": "e2uf", + "fragment": "

", + "matlab": { + "class": "double", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "double", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_binary.sldd", + "format": "binary", + "variable": "dx_complex_0x0", + "edited": false, + "place": "cell", + "entry": "e2uc", + "fragment": "", + "matlab": { + "class": "double", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "double", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_binary.sldd", + "format": "binary", + "variable": "dx_complex_0x0", + "edited": true, + "place": "entry", + "entry": "e2me", + "fragment": "

", + "matlab": { + "class": "double", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "double", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_binary.sldd", + "format": "binary", + "variable": "dx_complex_0x0", + "edited": true, + "place": "field", + "entry": "e2mf", + "fragment": "

", + "matlab": { + "class": "double", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "double", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_binary.sldd", + "format": "binary", + "variable": "dx_complex_0x0", + "edited": true, + "place": "cell", + "entry": "e2mc", + "fragment": "", + "matlab": { + "class": "double", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "double", + "size": [ + 0, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_binary.sldd", + "format": "binary", + "variable": "dx_complex_1x0", + "edited": false, + "place": "entry", + "entry": "e3ue", + "fragment": "

", + "matlab": { + "class": "double", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "double", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_binary.sldd", + "format": "binary", + "variable": "dx_complex_1x0", + "edited": false, + "place": "field", + "entry": "e3uf", + "fragment": "

", + "matlab": { + "class": "double", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "double", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_binary.sldd", + "format": "binary", + "variable": "dx_complex_1x0", + "edited": false, + "place": "cell", + "entry": "e3uc", + "fragment": "", + "matlab": { + "class": "double", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "double", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_binary.sldd", + "format": "binary", + "variable": "dx_complex_1x0", + "edited": true, + "place": "entry", + "entry": "e3me", + "fragment": "

", + "matlab": { + "class": "double", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "double", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_binary.sldd", + "format": "binary", + "variable": "dx_complex_1x0", + "edited": true, + "place": "field", + "entry": "e3mf", + "fragment": "

", + "matlab": { + "class": "double", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "double", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_binary.sldd", + "format": "binary", + "variable": "dx_complex_1x0", + "edited": true, + "place": "cell", + "entry": "e3mc", + "fragment": "", + "matlab": { + "class": "double", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "double", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_binary.sldd", + "format": "binary", + "variable": "dx_complex_int16_1x0", + "edited": false, + "place": "entry", + "entry": "e4ue", + "fragment": "

", + "matlab": { + "class": "int16", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "int16", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_binary.sldd", + "format": "binary", + "variable": "dx_complex_int16_1x0", + "edited": false, + "place": "field", + "entry": "e4uf", + "fragment": "

", + "matlab": { + "class": "int16", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "int16", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_binary.sldd", + "format": "binary", + "variable": "dx_complex_int16_1x0", + "edited": false, + "place": "cell", + "entry": "e4uc", + "fragment": "", + "matlab": { + "class": "int16", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "int16", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_binary.sldd", + "format": "binary", + "variable": "dx_complex_int16_1x0", + "edited": true, + "place": "entry", + "entry": "e4me", + "fragment": "

", + "matlab": { + "class": "int16", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "int16", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_binary.sldd", + "format": "binary", + "variable": "dx_complex_int16_1x0", + "edited": true, + "place": "field", + "entry": "e4mf", + "fragment": "

", + "matlab": { + "class": "int16", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "int16", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_binary.sldd", + "format": "binary", + "variable": "dx_complex_int16_1x0", + "edited": true, + "place": "cell", + "entry": "e4mc", + "fragment": "", + "matlab": { + "class": "int16", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "int16", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_binary.sldd", + "format": "binary", + "variable": "e_single_complex_1x0", + "edited": false, + "place": "entry", + "entry": "e5ue", + "fragment": "

", + "matlab": { + "class": "single", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "single", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_binary.sldd", + "format": "binary", + "variable": "e_single_complex_1x0", + "edited": false, + "place": "field", + "entry": "e5uf", + "fragment": "

", + "matlab": { + "class": "single", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "single", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_binary.sldd", + "format": "binary", + "variable": "e_single_complex_1x0", + "edited": false, + "place": "cell", + "entry": "e5uc", + "fragment": "", + "matlab": { + "class": "single", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "single", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_binary.sldd", + "format": "binary", + "variable": "e_single_complex_1x0", + "edited": true, + "place": "entry", + "entry": "e5me", + "fragment": "

", + "matlab": { + "class": "single", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "single", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_binary.sldd", + "format": "binary", + "variable": "e_single_complex_1x0", + "edited": true, + "place": "field", + "entry": "e5mf", + "fragment": "

", + "matlab": { + "class": "single", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "single", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + } + }, + { + "file": "empty_copies_sparse_binary.sldd", + "format": "binary", + "variable": "e_single_complex_1x0", + "edited": true, + "place": "cell", + "entry": "e5mc", + "fragment": "", + "matlab": { + "class": "single", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + }, + "loaded": { + "class": "single", + "size": [ + 1, + 0 + ], + "isreal": false, + "fields": [] + } + } + ] +} diff --git a/test/parity/matlab/matWritebackDefects.test.ts b/test/parity/matlab/matWritebackDefects.test.ts index a55f27d8..904385bf 100644 --- a/test/parity/matlab/matWritebackDefects.test.ts +++ b/test/parity/matlab/matWritebackDefects.test.ts @@ -1,22 +1,24 @@ // Copyright 2026 The MathWorks, Inc. // -// Two defects of the MAT-file save that the live gate (probe_mat_writeback.{mjs,m}) found, held -// here without MATLAB so that they stay in sight on every run until they are fixed. Neither is -// visible to core: its reader carries neither thing either, so the save's own re-parse -// (MatFileWriter's self-check) agrees with what it wrote, and the strict checker breaks no load -// rule. Only MATLAB, loading the save beside the original, reads a different value. +// Two losses of the MAT-file save that the live gate (probe_mat_writeback.{mjs,m}) found, held +// here without MATLAB, fixed. Neither was visible to core: its reader carried neither thing +// either, so the save's own re-parse (MatFileWriter's self-check) agreed with what it wrote, and +// the strict checker broke no load rule. Only MATLAB, loading the save beside the original, read +// a different value. test/matFreshFidelity.test.ts now holds every variable of every fixture to +// the file's own element, by a walker that does not use the package's reader. // -// Each test states the defect AS IT IS: the bytes the save writes today, beside the bytes -// MATLAB's own element holds. A fix makes it fail; it should then assert the bytes MATLAB -// wrote, and the gate's three failing cases (fresh_dispcat, sibling_struct_field, -// sibling_cell_member) pass. -// -// Measured against MATLAB R2027a (27.1.0.3409468): -// A. complex(zeros(0,0)) and the other complex empties of dispcat.mat, written fresh, load -// real: isreal is true where the original's is false. -// B. a 0x0 or 1x0 struct array with a field `a`, written fresh, loads with no field: -// fieldnames is {} where the original's is {'a'}. A struct field or a cell member edited -// beside one writes it fresh, so an ordinary edit loses the names. +// Measured against MATLAB R2027a (27.1.0.3409468), before the fix: +// A. complex(zeros(0,0)) and the other complex empties of dispcat.mat, written fresh, loaded +// real: isreal was true where the original's is false. The node rebuilt its variable from +// its elements, and an empty has none to be complex (MatlabVariableNode._isComplexValue). +// B. a 0x0 or 1x0 struct array with a field `a`, written fresh, loaded with no field: +// fieldnames was {} where the original's is {'a'}. The reader held `fields: {}` for a +// struct array of no element (MatParser), and a struct field or a cell member edited +// beside one wrote it fresh, so an ordinary edit lost the names. +// Each test asks for MATLAB's own element: what the save writes for each is the element MATLAB +// wrote, byte for byte but for the storage type of an empty double's two parts (MATLAB's +// miUINT8, MatWriter's miDOUBLE, which MATLAB loads as the same complex empty: the gate's +// sibling cases). import { describe, it, expect } from 'vitest'; import { readFileSync } from 'node:fs'; import { unzlibSync } from 'fflate'; @@ -77,46 +79,69 @@ function fieldElement(structElement: Uint8Array, index: number): Uint8Array { /** An element's complex bit: byte 1 of its array-flags data. */ const complexOf = (el: Uint8Array) => (subElementsOf(el)[0].data[1] & 0x08) !== 0; -describe('KNOWN DEFECTS of the MAT-file save, found by the live gate', () => { - it('A: a complex empty, its node marked edited, is written real', () => { +describe('the losses of the MAT-file save the live gate found, fixed', () => { + it('A: a complex empty, its node marked edited, is written complex', () => { const session = createSession(); const root: any = session.addMatSource('dispcat.mat', DISPCAT); - const node = root.children.find((c: any) => c.name === 'dx_complex_0x0'); - expect(complexOf(elementOf(DISPCAT, 'dx_complex_0x0'))).toBe(true); - // The state an edit leaves the node in (DataNode._valueEdited, MatlabVariableNode's stale - // _var), which MatFileWriter writes fresh. The node rebuilds its variable from its - // elements, and an empty has none to be complex: _isComplexValue() is false, so the - // variable's isComplex is, though _elementType still says 'complex' (the Class column - // reads that, and says complex). - node._markModified(); - expect(node._var.isComplex).toBe(false); + const names = ['dx_complex_0x0', 'dx_complex_1x0', 'dx_complex_int16_1x0', 'e_single_complex_1x0']; + // The state an edit leaves a node in (DataNode._valueEdited, MatlabVariableNode's stale + // _var), which MatFileWriter writes fresh. + for (const name of names) { + const node = root.children.find((c: any) => c.name === name); + expect(complexOf(elementOf(DISPCAT, name)), name).toBe(true); + node._markModified(); + expect([name, node._var.isComplex, node._classColumn()]).toEqual([name, true, expect.stringContaining('(complex)')]); + } const saved = (session.serializeSource('dispcat.mat') as { bytes: Uint8Array }).bytes; - expect(complexOf(elementOf(saved, 'dx_complex_0x0'))).toBe(false); + for (const name of names) { + // Its class, flags, dims and name as MATLAB wrote them, and its two parts, empty. + const [was, is] = [subElementsOf(elementOf(DISPCAT, name)), subElementsOf(elementOf(saved, name))]; + expect(is.slice(0, 3), name).toEqual(was.slice(0, 3)); + expect(is.slice(3).map((p) => p.data.byteLength), name).toEqual([0, 0]); + expect(complexOf(elementOf(saved, name)), name).toBe(true); + } + // The int16 and the single ones are MATLAB's bytes exactly: MATLAB stores their parts in their + // own class's type, as MatWriter does. + for (const name of ['dx_complex_int16_1x0', 'e_single_complex_1x0']) { + expect(elementOf(saved, name), name).toEqual(elementOf(DISPCAT, name)); + } }); - it('B: an empty struct array with a field, written fresh beside an edited field, keeps no field name', () => { - // MATLAB's own element first, so that the reader below is seen to read names at all. - expect(fieldNamesOf(elementOf(DISPCAT, 'dx_struct_0x0_fields'))).toEqual(['a']); + it("B: an empty struct array with a field, written fresh, keeps its field names, as MATLAB's own element has them", () => { + // Written fresh itself: MATLAB's own element, byte for byte. + const session = createSession(); + const root: any = session.addMatSource('dispcat.mat', DISPCAT); + for (const name of ['dx_struct_0x0_fields', 'dx_struct_1x0']) { + root.children.find((c: any) => c.name === name)._markModified(); + } + const fresh = (session.serializeSource('dispcat.mat') as { bytes: Uint8Array }).bytes; + for (const name of ['dx_struct_0x0_fields', 'dx_struct_1x0']) { + expect(fieldNamesOf(elementOf(DISPCAT, name)), name).toEqual(['a']); + expect(elementOf(fresh, name), name).toEqual(elementOf(DISPCAT, name)); + } + // And written fresh beside an edited field, as the gate's sibling_struct_field case writes it. const empty = structVar('', ['inner'], [], [0, 0]); const x = numericVar({ name: '', cls: CLASS.DOUBLE, dimensions: [1, 1], real: [1] }); const file = matFile([structVar('s', ['es', 'x'], [{ es: empty, x }])]); - const session = createSession(); - const root: any = session.addMatSource('f.mat', file); - const field = root.children[0].children.find((c: any) => c.name === 'x'); - session.setActive(root, field); - expect(session.editProperty(field.id, 'Value', '2')).toBe(true); - const saved = (session.serializeSource('f.mat') as { bytes: Uint8Array }).bytes; + const edited = createSession(); + const top: any = edited.addMatSource('f.mat', file); + const field = top.children[0].children.find((c: any) => c.name === 'x'); + edited.setActive(top, field); + expect(edited.editProperty(field.id, 'Value', '2')).toBe(true); + const saved = (edited.serializeSource('f.mat') as { bytes: Uint8Array }).bytes; - // es as the file holds it, and as the save writes it: a 0x0 struct both times, whose - // field-name table the save leaves empty. The reader holds `fields: {}` for an empty struct - // array, its names dropped, and the writer writes what the reader holds. + // es as the file holds it, and as the save writes it: a 0x0 struct with the field `inner` + // both times. const esOf = (file_: Uint8Array | ArrayBuffer) => { const s = elementOf(file_, 's'); expect(fieldNamesOf(s)).toEqual(['es', 'x']); return fieldElement(s, 0); }; expect([fieldNamesOf(esOf(file)), subElementsOf(esOf(file))[1].data]).toEqual([['inner'], new Uint8Array(8)]); - expect([fieldNamesOf(esOf(saved)), subElementsOf(esOf(saved))[1].data]).toEqual([[], new Uint8Array(8)]); + expect([fieldNamesOf(esOf(saved)), subElementsOf(esOf(saved))[1].data]).toEqual([['inner'], new Uint8Array(8)]); + // And the reader reads the names back, as it reads them out of the file. + const es = parseMat(arrayBufferOf(saved)).variables[0].fields!.es as { fields: Record }; + expect(Object.keys(es.fields)).toEqual(['inner']); }); }); diff --git a/test/parity/matlab/probe_empty_copies_readback.m b/test/parity/matlab/probe_empty_copies_readback.m new file mode 100644 index 00000000..8aa71bf2 --- /dev/null +++ b/test/parity/matlab/probe_empty_copies_readback.m @@ -0,0 +1,65 @@ +% Copyright 2026 The MathWorks, Inc. +% +% Does MATLAB read back core's copy of a struct array of no element with fields, and of a complex +% empty, pasted into a text and a binary dictionary, as `load` reads the .mat variable it was +% copied from? The values are dispcat.mat's: struct('a', {}) as a 0x0 and a 1x0, and +% complex(zeros(0,0)), complex(zeros(1,0)), a complex int16 1x0 and a complex single 1x0. The +% saves are core's, made by empty_copies_readback.mjs beside this file, each value as an entry's +% value, a struct field and a cell's element, copied as read and once marked edited: +% +% node test/parity/matlab/empty_copies_readback.mjs /tmp/emptycopies +% env EMPTY_COPIES_OUT=/tmp/emptycopies mw -using Bmain matlab -nodesktop \ +% -batch "run('$PWD/test/parity/matlab/probe_empty_copies_readback.m')" +% cp /tmp/emptycopies/empty_copies_readback.truth.json test/parity/matlab/ +% +% Prints EMPTY_COPIES_READBACK OK on its last line. Output: empty_copies_readback.truth.json, +% {version, release, date, cases}: each row of cases.json, as it was, with `matlab`, what MATLAB +% read at that place, {class, size, isreal, fields}, or {error}, and `loaded`, the same of the +% variable `load` reads from dispcat.mat. test/emptyCopiesReadback.test.ts reads it. +% +% Opens only the files in EMPTY_COPIES_OUT, and writes nothing else there. + +outdir = getenv('EMPTY_COPIES_OUT'); +if isempty(outdir) && exist('EMPTY_COPIES_OUT', 'var'), outdir = EMPTY_COPIES_OUT; end %#ok +if isempty(outdir), error('set EMPTY_COPIES_OUT to the directory empty_copies_readback.mjs wrote'); end +cd(outdir); +Simulink.data.dictionary.closeAll('-discard'); +fprintf('VERSION %s\n', version); +S = load(fullfile(outdir, 'dispcat.mat')); +cases = jsondecode(fileread(fullfile(outdir, 'cases.json'))); +if isstruct(cases), cases = num2cell(cases); end +for i = 1:numel(cases) + c = cases{i}; + try + dd = Simulink.data.dictionary.open(fullfile(outdir, c.file)); + v = getValue(getEntry(getSection(dd, 'Design Data'), c.entry)); + switch c.place + case 'field', v = v.f; + case 'cell', v = v{1}; + end + m = shapeOf(v); + close(dd); + catch e + m = struct('error', strrep(e.message, newline, ' ')); + end + Simulink.data.dictionary.closeAll('-discard'); + c.matlab = m; + c.loaded = shapeOf(S.(c.variable)); + cases{i} = c; + fprintf('%-32s %-6s %-22s %s\n', c.file, c.place, c.variable, jsonencode(m)); +end +truth = struct('version', version, 'release', version('-release'), 'date', char(datetime('now', 'Format', 'yyyy-MM-dd')), 'cases', {cases}); +fid = fopen(fullfile(outdir, 'empty_copies_readback.truth.json'), 'w', 'n', 'UTF-8'); +fprintf(fid, '%s\n', jsonencode(truth, 'PrettyPrint', true)); +fclose(fid); +fprintf('EMPTY_COPIES_READBACK OK\n'); + +% A value's class, size, complexity, and its field names (none for anything but a struct), each +% as a list so that JSON keeps one of one as a list. +function m = shapeOf(v) +fields = {}; +if isstruct(v) + fields = fieldnames(v)'; +end +m = struct('class', class(v), 'size', size(v), 'isreal', isreal(v), 'fields', {fields}); +end diff --git a/test/parity/matlab/probe_mat_writeback.m b/test/parity/matlab/probe_mat_writeback.m index 536918fb..30331b28 100644 --- a/test/parity/matlab/probe_mat_writeback.m +++ b/test/parity/matlab/probe_mat_writeback.m @@ -17,9 +17,10 @@ % 2. S = load(original) with the case's MATLAB statements applied, which must differ from % S0 for a case that edits and equal it for one that does not; % 3. T = load(saved), which must load with no warning and print nothing; -% 4. T must be S: the same variables in the same order (load's, and whos -file's class and -% size of each), and each variable the same to the leaf (dcmp below: class, size, -% sparsity, complexity, isequaln on every value, field names in order, every element of +% 4. T must be S: the same variables in the same order (load's, and whos -file's class, +% size and global flag of each), and each variable the same to the leaf (dcmp below: class, +% size, sparsity, complexity, isequaln on every value and the bits of every double and +% single but a NaN's payload, field names in order, every element of % a cell or struct array, every readable property of an object, a function handle's text % and an anonymous one's workspace), and its handles shared as S's are (the same object % held twice is still one object); @@ -166,6 +167,15 @@ end end end +% And global where the original's variable of that name was global: `save` marks a variable +% declared global, which is the variable's and not its value's, so load's struct does not show it. +wo = whos('-file', e.original); +for i = 1:numel(w) + o = wo(strcmp({wo.name}, w(i).name)); + if (isempty(o) && w(i).global) || (~isempty(o) && o(1).global ~= w(i).global) + why{end + 1} = sprintf('whos -file says %s is global %d, where the original''s is %d', w(i).name, w(i).global, ~isempty(o) && o(1).global); %#ok + end +end if strcmp(e.expect, 'identical') && ~isequal(bytesOf(e.original), bytesOf(e.saved)) why{end + 1} = 'a save with no edit is not the original, byte for byte'; @@ -333,9 +343,36 @@ end elseif ~isequaln(a, b) d{end + 1} = sprintf('%s: %s vs %s', path, show(a), show(b)); +elseif (isa(a, 'double') || isa(a, 'single')) && ~issparse(a) && ~sameBits(a, b) + % isequaln holds -0 and 0 equal; the bits of a double or a single do not. + d{end + 1} = sprintf('%s: equal, but not bit for bit (the sign of a zero): %s vs %s', path, bitsShown(a), bitsShown(b)); +end +end + +% Whether two doubles or singles of one size hold the same bits, part by part: the sign of a +% zero included, a NaN's payload not (MATLAB's own NaN and the one a JavaScript writer stores +% differ in it, and nothing MATLAB computes on a NaN reads it). +function same = sameBits(a, b) +cls = 'uint64'; +if isa(a, 'single') + cls = 'uint32'; +end +same = true; +parts = {@real, @imag}; +for i = 1:2 + pa = parts{i}(a(:)); + pb = parts{i}(b(:)); + keep = ~isnan(pa) & ~isnan(pb); + if any(keep) + same = same && isequal(typecast(pa(keep), cls), typecast(pb(keep), cls)); + end end end +function s = bitsShown(v) +s = mat2str(1 ./ [real(v(:)); imag(v(:))]'); +end + % Every readable property of every element, and whether there was one. The elements are the % object's own, builtin('numel'): a table or a categorical is one object whatever size it % says it is, and t(i) is an error for a table. diff --git a/test/parity/matlab/probe_mat_writeback.mjs b/test/parity/matlab/probe_mat_writeback.mjs index 7c5396da..0d11771b 100644 --- a/test/parity/matlab/probe_mat_writeback.mjs +++ b/test/parity/matlab/probe_mat_writeback.mjs @@ -157,6 +157,57 @@ function nestedEmpties() { } const NESTED_EMPTIES = 'crafted/nested_empties.mat'; +// ---- and one of the shapes the fix of those two losses has to hold, byte by byte -------- +// +// What no fixture MATLAB wrote holds, built by hand the way MATLAB writes each (a field-name +// stride of 32, as MATLAB's own older saves have it; an empty part as an empty sub-element of +// its class's type, as dispcat.mat's e_single_complex_1x0 has it): +// c2 a cell {struct('a', {}, 'b', {}), 1}: a struct of no element with two fields, beside a +// member to edit; +// z03 complex(zeros(0, 3, 'single')), and sz, a struct holding one beside a field to edit; +// sa a 1x2 struct array whose elements each hold an empty struct with a field (a 0x0 and a +// 1x0) beside a field to edit; +// g a variable `save` marks global (bit 0x04 of its array flags), and h beside it, not; +// nz [-3i, 1+2i, complex(-0, -0)], whose zero parts are -0 (MATLAB's `-3i` is complex(-0, +// -3)), beside an element to edit. +const flagsOf = (cls, bits = 0) => sub(6, concat([u32(cls | (bits << 8)), u32(0)])); +const emptyStruct = (dims, fields) => { + const len = 32; + const names = new Uint8Array(len * fields.length); + fields.forEach((f, i) => names.set(new TextEncoder().encode(f), i * len)); + return miMatrix(concat([flagsOf(2), DIMS(dims), EMPTY_NAME, concat([u32(5 | (4 << 16)), u32(len)]), sub(1, names)])); +}; +const singleComplexEmpty = (name) => miMatrix(concat([flagsOf(7, 0x08), DIMS([0, 3]), name ? NAME(name) : EMPTY_NAME, sub(7, new Uint8Array(0)), sub(7, new Uint8Array(0))])); +const doubles = (values) => new Uint8Array(new Float64Array(values).buffer); +function structArray(name, dims, fields, elements) { + const len = 32; + const names = new Uint8Array(len * fields.length); + fields.forEach((f, i) => names.set(new TextEncoder().encode(f), i * len)); + return miMatrix(concat([flagsOf(2), DIMS(dims), NAME(name), concat([u32(5 | (4 << 16)), u32(len)]), sub(1, names), ...elements.flat()])); +} +function emptiesMore() { + const header = new Uint8Array(128).fill(0x20); + header.set(new TextEncoder().encode('MATLAB 5.0 MAT-file, assembled by probe_mat_writeback.mjs')); + header.set([0, 0, 0, 0, 0, 0, 0, 0, 0x00, 0x01, 0x49, 0x4d], 116); + return concat([ + header, + cellVar('c2', [emptyStruct([0, 0], ['a', 'b']), doubleScalar(1)]), + singleComplexEmpty('z03'), + structVar('sz', [ + ['z', singleComplexEmpty('')], + ['x', doubleScalar(1)], + ]), + structArray('sa', [1, 2], ['es', 'x'], [ + [emptyStruct([0, 0], ['q']), doubleScalar(1)], + [emptyStruct([1, 0], ['q']), doubleScalar(2)], + ]), + miMatrix(concat([flagsOf(6, 0x04), DIMS([1, 2]), NAME('g'), sub(9, doubles([1, 2]))])), + miMatrix(concat([flagsOf(6), DIMS([1, 2]), NAME('h'), sub(9, doubles([3, 4]))])), + miMatrix(concat([flagsOf(6, 0x08), DIMS([1, 3]), NAME('nz'), sub(9, doubles([-0, 1, -0])), sub(9, doubles([-3, 2, -0]))])), + ]); +} +const EMPTIES_MORE = 'crafted/empties_more.mat'; + /** * A fixture opened through the session, as a host opens one, and the edits a host makes on * it. Each edit throws when the session refuses it, or when the node does not then show what @@ -604,6 +655,41 @@ add( ['S.c{3} = 9;'], ); +crafted.set(EMPTIES_MORE, emptiesMore()); +zero('zero_empties_more', EMPTIES_MORE, 'a save with no edit is the file (and MATLAB loads the assembled file)'); +add( + 'sibling_cell_two_fields', + EMPTIES_MORE, + 'a cell member edited beside a struct of no element with two fields, written fresh with it', + (f) => f.set(['c2', 'c2{2}'], '9', 'double', '9'), + ['S.c2{2} = 9;'], +); +add('fresh_complex_single_0x3', EMPTIES_MORE, 'every plain variable written fresh: complex(zeros(0,3,\'single\')), and the rest of the file', (f) => f.freshAll(), [], 'unchanged'); +add( + 'sibling_complex_single_0x3', + EMPTIES_MORE, + "a struct field edited beside complex(zeros(0,3,'single')), written fresh with it", + (f) => f.set(['sz', 'x'], '2', 'double', '2'), + ['S.sz.x = 2;'], +); +add( + 'struct_array_nested_empty', + EMPTIES_MORE, + "a field of a struct array's element edited beside an empty struct with a field in each element", + (f) => f.set(['sa', 'sa(2)', 'x'], '5', 'double', '5'), + ['S.sa(2).x = 5;'], +); +add('global_element', EMPTIES_MORE, 'an element of a variable saved as global: written fresh, and still global', (f) => f.set(['g', 'g(2)'], '7', 'double', '7'), [ + 'S.g(2) = 7;', +]); +add( + 'negative_zero_parts', + EMPTIES_MORE, + 'an element of a complex row edited beside elements whose zero parts are -0, which keep their sign', + (f) => f.set(['nz', 'nz(2)'], '5', 'double', '5'), + ['S.nz(2) = 5;'], +); + // ---- function handles, enumerations, fi, categorical, table ------------------------- add( 'rename_fhandles', @@ -798,6 +884,14 @@ control( ["S = renameStructField(S, 'en_on', 'en_onR');", 'S.en_onR = matlab.lang.OnOffSwitchState.off;'], 'en_onR: off vs on', ); +control( + 'control_negative_zero', + EMPTIES_MORE, + "a complex zero's -0 parts made +0, which isequaln does not see and the bits do", + (f) => f.set(['nz', 'nz(2)'], '5', 'double', '5'), + ['S.nz(2) = 5;', 'S.nz(3) = complex(0, 0);'], + 'nz: equal, but not bit for bit', +); control( 'control_categorical', OPAQUE, diff --git a/test/sparseFixtures.test.ts b/test/sparseFixtures.test.ts index 88e23c30..5258a00f 100644 --- a/test/sparseFixtures.test.ts +++ b/test/sparseFixtures.test.ts @@ -36,6 +36,7 @@ import { fileURLToPath } from 'node:url'; import { loadFile } from './parity/loadFile.js'; import { nodeAt } from './tools/matlabPath.js'; import { parseComplexNum } from '../src/datamodel/parser/XmlUtils.js'; +import { parseMat } from '../src/datamodel/parser/MatParser.js'; import { uudecode } from '../src/datamodel/parser/CdataCodec.js'; import { matStreamPrefix } from '../src/datamodel/parser/EncodedValue.js'; import { readMxArrayRecords } from '../src/datamodel/parser/MxArrayParser.js'; @@ -128,9 +129,21 @@ function columnMajor(node: any, size: number[]): unknown[] { const numberText = (n: number): string => (Number.isNaN(n) ? 'NaN' : n === Infinity ? 'Inf' : n === -Infinity ? '-Inf' : String(n)); +/** + * `re` with the sign of its zero, which a truth's JSON cannot carry (numberOf), as MATLAB's own + * bytes hold it: the non-zero `k` of `path` in sparse_values.mat, which MATLAB wrote. Its `-3i` + * is complex(-0, -3), and its real part reads `-0`, as a binary dictionary's `-0.0-3.0i` reads. + */ +const MATLAB_MAT = parseMat(new Uint8Array(readFileSync(fileURLToPath(new URL('./fixtures/sparse/sparse_values.mat', import.meta.url)))).buffer as ArrayBuffer); +function signedZero(path: string, k: number, re: number): number { + const v = MATLAB_MAT.variables.find((x) => x.name === path); + return re === 0 && v?.sparse && Object.is(v.sparse.re[k], -0) ? -0 : re; +} + function elementText(t: ValueTruth, re: number, im: number): string { if (t.class === 'logical') return re ? 'true' : 'false'; - if (!t.isreal) return numberText(re) + (im >= 0 ? '+' : '') + numberText(im) + 'i'; + // A real part of -0 is shown as it is (XmlUtils.shownComplexText), an imaginary one with a `+`. + if (!t.isreal) return (Object.is(re, -0) ? '-0' : numberText(re)) + (im >= 0 ? '+' : '') + numberText(im) + 'i'; return numberText(re); } @@ -202,7 +215,7 @@ function expectNonzeroRows(node: any, t: ValueTruth, label: string): void { // a complex one's `re+imi`, in this package's spelling of the numbers MATLAB recorded. expect([c.className, c.displayValue], `${label} row ${k + 1} shown`).toEqual([ t.class, - elementText(t, numberOf(nz.real[k]), numberOf(nz.imag[k])), + elementText(t, signedZero(label.slice(label.indexOf(' ') + 1), k, numberOf(nz.real[k])), numberOf(nz.imag[k])), ]); }); expect(node.children.length, `${label} nnz`).toBe(t.nnz); @@ -217,14 +230,13 @@ const isValueTruth = (t: PathTruth): boolean => 'real' in t || 'fullOmitted' in const OMITTED_AT_DEFAULT = new Set(['text numAlias.K']); // Where two venues spell one value differently on screen, and why. Not ours to change -// here: both are about how a FULL value is written, which this suite holds only as the -// dense control beside each sparse one. +// here: it is about how a FULL value is written, which this suite holds only as the dense +// control beside each sparse one. +// +// No longer dComplex's complex(-0, -3): the binary dictionary's text `-0.0-3.0i` reads `-0-3i`, +// and the same -0 read out of MAT bytes, the .mat's and the text dictionary's stream, keeps its +// sign too (SparseData.complexElement), where it printed as 0 and was written again as 0. const SPELLED_DIFFERENTLY: Record = { - // MATLAB's binary dictionary writes the element complex(-0, -3) as `-0.0-3.0i`, and this - // package's complex text keeps the sign; the .mat and the text dictionary's cdata hold - // the same -0 as a double, which prints as 0. The numbers are equal (the per-venue check - // above says so); the spelling of the zero is not. - dComplex: 'binary -0-3i, elsewhere 0-3i', // OMITTED_AT_DEFAULT: the text dictionary has no K. numAlias: 'text has no K', }; diff --git a/test/sparseMemberBytes.test.ts b/test/sparseMemberBytes.test.ts index 16c4e0d2..da3df48e 100644 --- a/test/sparseMemberBytes.test.ts +++ b/test/sparseMemberBytes.test.ts @@ -35,9 +35,15 @@ const HEAVY_TIMEOUT = 60_000; describe('a sparse member nothing has edited is written as the bytes it was read from', () => { it('in a cell out of a .mat, and an edited member alone is encoded again', () => { const members = [real(), bare(), real()]; - const c: any = createSession().addMatSource('c.mat', matFile([cellVar('c', members)])).children[0]; + const mat: any = createSession().addMatSource('c.mat', matFile([cellVar('c', members)])); + const c: any = mat.children[0]; expect(encodeMatStream(c._var)).toEqual(new Uint8Array(streamOf(cellVar('', members)))); // An element row of the first edited: that member is its non-zeros, the others their bytes. + // Taken out of the .mat to be edited: the damaged member is stored as MATLAB does not load + // it, so the file takes no edit of the cell (MatFileWriter.freshRefusal); on its own, the node + // takes it. + expect(c.children[0].children[1].setProperty('Value', '9')).toMatchObject({ error: true }); + mat.removeChild(c); expect(c.children[0].children[1].setProperty('Value', '9')).toBe(true); const edited = encodeMatStream(c._var); const back = decodeMatStream(edited); diff --git a/test/tools/matElements.ts b/test/tools/matElements.ts new file mode 100644 index 00000000..8f492ecd --- /dev/null +++ b/test/tools/matElements.ts @@ -0,0 +1,305 @@ +// Copyright 2026 The MathWorks, Inc. +// +// What a Level-5 miMATRIX element holds, read straight off its bytes by a walker of its own, +// with no help from the package's reader (MatParser) or writer (MatWriter). A test that compares +// the variable a save wrote with the one the file held through the package's own reader sees +// only what that reader keeps: a struct array of no element read as `fields: {}`, so a save +// that wrote its field-name table empty read back as the variable it was read as, and MATLAB +// loaded a struct of no field (test/parity/matlab/matWritebackDefects.test.ts). This reads every +// part of the element MATLAB's `load` reads for a plain value, so that two elements are the same +// value exactly when what it gives them is the same. +// +// What it keeps of an element, `ElementValue`: +// - the array class and the flags byte's complex, global, logical and sparse bits, and the +// dims; +// - a struct's (or a class-3 object's) field names, in order, from its field-name table, +// whatever its stride, and an object's class name; +// - the members of a cell, and of a struct, element by element and field by field, each the +// same way; +// - a numeric array's elements, as its class holds them whatever type the file stored them +// in (MATLAB narrows a double's storage to the smallest integer type that holds it): +// a double or a single as the bits of its IEEE value, so -0 is not 0, and NaN as `NaN` +// whatever its payload (see `nan`); an integer as its exact decimal, int64 and uint64 +// included; complex parts apart; +// - a char's UTF-16 code units, however the file stored them (miUTF8, miUTF16, miUINT16, +// miUINT8); +// - a sparse array's row index, column starts and non-zeros, nzmax apart (the capacity +// MATLAB reserves, not the value). +// A class-17 (MCOS opaque) element is kept as its bytes: no save writes one fresh. + +export interface ElementValue { + cls: number; + complex: boolean; + global: boolean; + logical: boolean; + sparse: boolean; + dims: number[]; + name: string; + className?: string; + fields?: string[]; + members?: ElementValue[]; + re?: string[]; + im?: string[]; + text?: number[]; + ir?: number[]; + jc?: number[]; + opaque?: number[]; +} + +const MI_INT8 = 1; +const MI_UINT8 = 2; +const MI_INT16 = 3; +const MI_UINT16 = 4; +const MI_INT32 = 5; +const MI_UINT32 = 6; +const MI_SINGLE = 7; +const MI_DOUBLE = 9; +const MI_INT64 = 12; +const MI_UINT64 = 13; +const MI_MATRIX = 14; +const MI_UTF8 = 16; +const MI_UTF16 = 17; + +const CELL = 1; +const STRUCT = 2; +const OBJECT = 3; +const CHAR = 4; +const SPARSE = 5; +const DOUBLE = 6; +const SINGLE = 7; +const INT64 = 14; +const UINT64 = 15; +const OPAQUE = 17; + +interface Sub { + type: number; + data: Uint8Array; + next: number; +} + +// One data element at `at`: its type, its data, and where the next one starts. The small form +// packs type and length into one word and its data into the next; the long one pads to 8. +function subAt(view: DataView, bytes: Uint8Array, at: number): Sub { + const word = view.getUint32(at, true); + if (word >>> 16) { + const n = word >>> 16; + return { type: word & 0xffff, data: bytes.subarray(at + 4, at + 4 + n), next: at + 8 }; + } + const n = view.getUint32(at + 4, true); + return { type: word, data: bytes.subarray(at + 8, at + 8 + n), next: at + 8 + Math.ceil(n / 8) * 8 }; +} + +// What NaN is kept as. A NaN's payload is not compared: this package's reader holds a double as +// a JavaScript number, and V8 does not promise a NaN's payload through one (it may hand back +// the canonical NaN), so a payload is not something a save of a value read here can be held to. +// MATLAB's own arithmetic makes the canonical NaN; a file holding another is MATLAB's own write +// of a value someone built bit by bit. +const nan = 'NaN'; + +function bitsOf64(x: number): string { + if (Number.isNaN(x)) { + return nan; + } + const b = new DataView(new ArrayBuffer(8)); + b.setFloat64(0, x, true); + return b.getBigUint64(0, true).toString(16); +} + +function bitsOf32(x: number): string { + if (Number.isNaN(x)) { + return nan; + } + const b = new DataView(new ArrayBuffer(4)); + b.setFloat32(0, x, true); + return b.getUint32(0, true).toString(16); +} + +// The elements a data element holds, as numbers, or as bigints for the 64-bit integer types. +function numbersOf(sub: Sub): (number | bigint)[] { + const v = new DataView(sub.data.buffer, sub.data.byteOffset, sub.data.byteLength); + const out: (number | bigint)[] = []; + const each = (size: number, read: (at: number) => number | bigint) => { + for (let at = 0; at + size <= sub.data.byteLength; at += size) { + out.push(read(at)); + } + }; + switch (sub.type) { + case MI_INT8: + each(1, (at) => v.getInt8(at)); + break; + case MI_UINT8: + case MI_UTF8: + each(1, (at) => v.getUint8(at)); + break; + case MI_INT16: + each(2, (at) => v.getInt16(at, true)); + break; + case MI_UINT16: + case MI_UTF16: + each(2, (at) => v.getUint16(at, true)); + break; + case MI_INT32: + each(4, (at) => v.getInt32(at, true)); + break; + case MI_UINT32: + each(4, (at) => v.getUint32(at, true)); + break; + case MI_SINGLE: + each(4, (at) => v.getFloat32(at, true)); + break; + case MI_DOUBLE: + each(8, (at) => v.getFloat64(at, true)); + break; + case MI_INT64: + each(8, (at) => v.getBigInt64(at, true)); + break; + case MI_UINT64: + each(8, (at) => v.getBigUint64(at, true)); + break; + default: + throw new Error('a numeric part of data type ' + sub.type); + } + return out; +} + +// A numeric part's elements as its class holds them (see the file header). +function partOf(sub: Sub, cls: number): string[] { + return numbersOf(sub).map((x) => { + if (cls === DOUBLE) { + return bitsOf64(Number(x)); + } + if (cls === SINGLE) { + return bitsOf32(Number(x)); + } + return typeof x === 'bigint' ? x.toString() : cls === INT64 || cls === UINT64 ? BigInt(x).toString() : String(x); + }); +} + +// A char's UTF-16 code units: miUTF8 decoded, every other type one unit per element. +function codeUnitsOf(sub: Sub): number[] { + if (sub.type === MI_UTF8) { + const text = new TextDecoder().decode(sub.data); + return Array.from({ length: text.length }, (_, i) => text.charCodeAt(i)); + } + return numbersOf(sub).map(Number); +} + +const textOf = (data: Uint8Array) => new TextDecoder().decode(data).replace(/\0+$/, ''); + +/** What the miMATRIX element whose tag is at `at` of `bytes` holds (see the file header). */ +export function elementValue(bytes: Uint8Array, at = 0): ElementValue { + const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength); + const tag = subAt(view, bytes, at); + if (tag.type !== MI_MATRIX) { + throw new Error('not a matrix element (data type ' + tag.type + ')'); + } + const end = at + 8 + tag.data.byteLength; + let o = at + 8; + const next = () => { + const s = subAt(view, bytes, o); + o = s.next; + return s; + }; + const flags = next(); + const cls = flags.data[0]; + const out: ElementValue = { + cls, + complex: (flags.data[1] & 0x08) !== 0, + global: (flags.data[1] & 0x04) !== 0, + logical: (flags.data[1] & 0x02) !== 0, + // Class 5, or the sparse bit, which is all a sparse single has (MatWriter.encodeSparse). + sparse: cls === SPARSE || (flags.data[1] & 0x10) !== 0, + dims: [], + name: '', + }; + if (cls === OPAQUE) { + out.opaque = Array.from(bytes.subarray(at, end)); + return out; + } + const dims = next(); + const dv = new DataView(dims.data.buffer, dims.data.byteOffset, dims.data.byteLength); + for (let i = 0; i + 4 <= dims.data.byteLength; i += 4) { + out.dims.push(dv.getInt32(i, true)); + } + out.name = textOf(next().data); + const n = out.dims.reduce((a, b) => a * b, 1); + const members = (count: number) => { + const list: ElementValue[] = []; + for (let i = 0; i < count && o < end; i++) { + list.push(elementValue(bytes, o)); + o = subAt(view, bytes, o).next; + } + return list; + }; + if (cls === CELL) { + out.members = members(n); + } else if (cls === STRUCT || cls === OBJECT) { + if (cls === OBJECT) { + out.className = textOf(next().data); + } + const stride = next(); + const len = new DataView(stride.data.buffer, stride.data.byteOffset, 4).getInt32(0, true); + const names = next(); + out.fields = []; + for (let i = 0; len > 0 && i < names.data.byteLength; i += len) { + out.fields.push(textOf(names.data.subarray(i, i + len))); + } + out.members = members(n * out.fields.length); + } else if (cls === CHAR) { + out.text = o < end ? codeUnitsOf(next()) : []; + } else if (out.sparse) { + out.ir = numbersOf(next()).map(Number); + out.jc = numbersOf(next()).map(Number); + // A logical's non-zeros as the numbers they are, a double's and a single's as their bits. + const sparseCls = out.logical ? 9 : cls === SPARSE ? DOUBLE : cls; + out.re = o < end ? partOf(next(), sparseCls) : []; + if (out.complex) { + out.im = o < end ? partOf(next(), sparseCls) : []; + } + } else { + out.re = o < end ? partOf(next(), cls) : []; + if (out.complex) { + out.im = o < end ? partOf(next(), cls) : []; + } + } + return out; +} + +/** + * The first difference between two element values, as a path and what differs, or null when + * they are the same value. The element's own name is not compared: a top-level variable's is its + * record's, which the caller asks after; every member's is empty. + */ +export function elementDifference(was: ElementValue, is: ElementValue, at = ''): string | null { + const said = (what: string, a: unknown, b: unknown) => (at || 'the value') + ': ' + what + ' ' + JSON.stringify(a) + ' read, ' + JSON.stringify(b) + ' written'; + for (const key of ['cls', 'complex', 'global', 'logical', 'sparse', 'className'] as const) { + if (was[key] !== is[key]) { + return said(key, was[key], is[key]); + } + } + if (was.dims.join('x') !== is.dims.join('x')) { + return said('dims', was.dims, is.dims); + } + for (const key of ['fields', 're', 'im', 'text', 'ir', 'jc', 'opaque'] as const) { + if (JSON.stringify(was[key]) !== JSON.stringify(is[key])) { + return said(key, was[key], is[key]); + } + } + const a = was.members ?? []; + const b = is.members ?? []; + if (a.length !== b.length) { + return said('member count', a.length, b.length); + } + const fields = was.fields; + const n = was.dims.reduce((x, y) => x * y, 1); + for (let i = 0; i < a.length; i++) { + const where = fields + ? at + (n === 1 ? '' : '(' + (Math.floor(i / fields.length) + 1) + ')') + '.' + fields[i % fields.length] + : at + '{' + (i + 1) + '}'; + const d = elementDifference(a[i], b[i], where); + if (d) { + return d; + } + } + return null; +} From c04986ff8ef1a9395c197b2b1e2b0ba559246fa2 Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Tue, 20 Oct 2026 19:19:36 -0400 Subject: [PATCH 10/13] [wip] Keep a variable saved as global global when a save writes it again `save` marks a variable declared global by bit 0x04 of its array flags, and `load(f)` declares it global again. The flag is the variable's, not its value's, and nothing between the reader and the writer held it, so a value edit, which writes the variable fresh, wrote it as not global; only a rename, which keeps the element it was read as, kept it. The fix in the previous commit read the bit back off the record's bytes at the write. Now the reader holds it (MatVariable.isGlobal), the save sets it on the top-level element it writes for a variable that had it, and the self-check refuses a save whose fresh record is not global exactly when its record was. MATLAB R2027a sets the bit on a global's top-level element and on no element nested in one, measured by make_global_fixtures.m, whose two files (-v7 and -v6) are now fixtures. MatWriter, which also writes dictionary streams, still does not write it: a dictionary holds no globals. The gate gains eight cases on those files, and checks both whos -file's global attribute and what a load inside a function declares global: 112 of 112 pass, and against the build before these fixes the same cases fail exactly the fifteen they were added for. --- dist/datamodel/parser/MatFileWriter.d.ts.map | 2 +- dist/datamodel/parser/MatFileWriter.js | 24 ++-- dist/datamodel/parser/MatFileWriter.js.map | 2 +- dist/datamodel/parser/MatParser.d.ts | 1 + dist/datamodel/parser/MatParser.d.ts.map | 2 +- dist/datamodel/parser/MatParser.js | 3 + dist/datamodel/parser/MatParser.js.map | 2 +- src/datamodel/parser/MatFileWriter.ts | 24 ++-- src/datamodel/parser/MatParser.ts | 10 ++ test/fixtures/global/global_v6.mat | Bin 0 -> 880 bytes test/fixtures/global/global_v7.mat | Bin 0 -> 473 bytes test/fixtures/global/make_global_fixtures.m | 99 ++++++++++++++ test/matGlobal.test.ts | 132 +++++++++++++++++++ test/parity/matlab/README.md | 8 +- test/parity/matlab/probe_mat_writeback.m | 41 +++++- test/parity/matlab/probe_mat_writeback.mjs | 37 ++++++ 16 files changed, 354 insertions(+), 33 deletions(-) create mode 100644 test/fixtures/global/global_v6.mat create mode 100644 test/fixtures/global/global_v7.mat create mode 100644 test/fixtures/global/make_global_fixtures.m create mode 100644 test/matGlobal.test.ts diff --git a/dist/datamodel/parser/MatFileWriter.d.ts.map b/dist/datamodel/parser/MatFileWriter.d.ts.map index 8c3b6ab2..60869bea 100644 --- a/dist/datamodel/parser/MatFileWriter.d.ts.map +++ b/dist/datamodel/parser/MatFileWriter.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"MatFileWriter.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/MatFileWriter.ts"],"names":[],"mappings":"AAwDA,OAAO,KAAK,EAAE,SAAS,EAA0B,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAkB,aAAa,EAAgD,MAAM,gBAAgB,CAAC;AAK7G,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAEhD,OAAO,KAAK,OAAO,MAAM,8BAA8B,CAAC;AAMxD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,CAuB7D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,GAAG,IAAI,CA6BvE;AAsBD,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,SAAS,GAAG,IAAI,CAKpF;AAgED,wGAAwG;AACxG,eAAO,MAAM,cAAc,QAEmC,CAAC;AAE/D;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,GAAG,aAAa,GAAG,IAAI,CAmB1H;AAkBD,oIAAoI;AACpI,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAmCD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAQ1D;AA0BD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,GAAG,aAAa,GAAG,IAAI,CAwC3F;AAuLD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAOhF"} \ No newline at end of file +{"version":3,"file":"MatFileWriter.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/MatFileWriter.ts"],"names":[],"mappings":"AAwDA,OAAO,KAAK,EAAE,SAAS,EAA0B,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAkB,aAAa,EAAgD,MAAM,gBAAgB,CAAC;AAK7G,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAEhD,OAAO,KAAK,OAAO,MAAM,8BAA8B,CAAC;AAMxD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,CAuB7D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,GAAG,IAAI,CA6BvE;AAsBD,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,SAAS,GAAG,IAAI,CAKpF;AAgED,wGAAwG;AACxG,eAAO,MAAM,cAAc,QAEmC,CAAC;AAE/D;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,GAAG,aAAa,GAAG,IAAI,CAmB1H;AAkBD,oIAAoI;AACpI,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAmCD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAQ1D;AA0BD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,GAAG,aAAa,GAAG,IAAI,CAwC3F;AAsLD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAOhF"} \ No newline at end of file diff --git a/dist/datamodel/parser/MatFileWriter.js b/dist/datamodel/parser/MatFileWriter.js index b928076d..66afc4a0 100644 --- a/dist/datamodel/parser/MatFileWriter.js +++ b/dist/datamodel/parser/MatFileWriter.js @@ -486,21 +486,20 @@ function notPlain(v) { } // Where an element's array flags keep its flags byte: past the element's tag and the flags' own, // which MATLAB and MatWriter both write in the long form (8 bytes of tag, then 8 of data), and -// the byte after the class. Its bit 0x04 is MATLAB's global flag, which `save` sets on a variable -// declared global. +// the byte after the class; and its bit for global. const FLAGS_BYTE = 17; const GLOBAL_FLAG = 0x04; -// `element`, written fresh for the variable `record` holds, global when that one was. The flag is -// the workspace variable's and not its value's: no writer of a value sets it (MatWriter writes a -// value as `getByteStreamFromArray` holds it), and nothing in the node layer holds it, so written -// fresh a global variable was not one, and a rename splice alone kept it. +// `element`, written fresh for the variable `record` holds, global when that one was +// (MatVariable.isGlobal). The flag is the workspace variable's and not its value's, so no writer +// of a value writes it, and written fresh a variable saved as global was not one: `load(f)` no +// longer declared it global. A rename splice keeps it with the rest of the element. Only the +// top-level element, the one MATLAB sets it on; and on a copy, since the element may be a view +// of the bytes the file was read from (_matStream's own, which then hold it already). function globalAsRead(element, record) { - const read = record?.variable?._rawBytes; - const longFlags = (e) => e.byteLength > FLAGS_BYTE + 6 && u32At(e, 8) === 6 && u32At(e, 12) === 8; - if (!read || !longFlags(read) || !longFlags(element) || !(read[FLAGS_BYTE] & GLOBAL_FLAG) || element[FLAGS_BYTE] & GLOBAL_FLAG) { + const longFlags = element.byteLength > FLAGS_BYTE && u32At(element, 8) === 6 && u32At(element, 12) === 8; + if (!record?.variable?.isGlobal || !longFlags || element[FLAGS_BYTE] & GLOBAL_FLAG) { return element; } - // A copy: the element may be a view of the bytes the file was read from (_matStream's own). const out = element.slice(); out[FLAGS_BYTE] |= GLOBAL_FLAG; return out; @@ -737,6 +736,11 @@ function selfCheck(file, bytes, plan, assembled, headerBytes) { if (difference) { fail(difference); } + // Global as the variable it was written for was (globalAsRead), and a variable added since not. + if (!!p.record?.variable?.isGlobal !== !!got.variable?.isGlobal) { + const is = got.variable?.isGlobal ? 'global, where the variable it was written for was not' : 'not global, where the variable it was written for was'; + fail('"' + p.name + '" reads back ' + is); + } }); } // The bytes about to be handed back, judged by the rules MATLAB loads a file by (MatFileCheck), diff --git a/dist/datamodel/parser/MatFileWriter.js.map b/dist/datamodel/parser/MatFileWriter.js.map index 4c8eff5f..c232d48e 100644 --- a/dist/datamodel/parser/MatFileWriter.js.map +++ b/dist/datamodel/parser/MatFileWriter.js.map @@ -1 +1 @@ -{"version":3,"file":"MatFileWriter.js","sourceRoot":"","sources":["../../../src/datamodel/parser/MatFileWriter.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"MatFileWriter.js","sourceRoot":"","sources":["../../../src/datamodel/parser/MatFileWriter.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/parser/MatParser.d.ts b/dist/datamodel/parser/MatParser.d.ts index d8db4a8d..8930a01b 100644 --- a/dist/datamodel/parser/MatParser.d.ts +++ b/dist/datamodel/parser/MatParser.d.ts @@ -7,6 +7,7 @@ export interface MatVariable { isComplex: boolean; isLogical: boolean; isSparse?: boolean; + isGlobal?: boolean; sparse?: SparseData; value: unknown; fields: Record | null; diff --git a/dist/datamodel/parser/MatParser.d.ts.map b/dist/datamodel/parser/MatParser.d.ts.map index 13a19bf3..f090bd2e 100644 --- a/dist/datamodel/parser/MatParser.d.ts.map +++ b/dist/datamodel/parser/MatParser.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"MatParser.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/MatParser.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"MatParser.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/MatParser.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/parser/MatParser.js b/dist/datamodel/parser/MatParser.js index 0456fd56..947f3166 100644 --- a/dist/datamodel/parser/MatParser.js +++ b/dist/datamodel/parser/MatParser.js @@ -913,6 +913,9 @@ export function parseMatrix(view, baseOffset, length, depth = 0) { if (isSparse) { result.isSparse = true; } + if (flags & 0x04) { + result.isGlobal = true; + } // Past MAX_NESTING levels a matrix is recorded with its class, size and name, and nothing in // it is read. What holds it keeps its bytes, as for every value this reader does not decode: // a struct field always, and a cell element when it is not decoded. diff --git a/dist/datamodel/parser/MatParser.js.map b/dist/datamodel/parser/MatParser.js.map index f100d5d6..088e3c0f 100644 --- a/dist/datamodel/parser/MatParser.js.map +++ b/dist/datamodel/parser/MatParser.js.map @@ -1 +1 @@ -{"version":3,"file":"MatParser.js","sourceRoot":"","sources":["../../../src/datamodel/parser/MatParser.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"MatParser.js","sourceRoot":"","sources":["../../../src/datamodel/parser/MatParser.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/datamodel/parser/MatFileWriter.ts b/src/datamodel/parser/MatFileWriter.ts index d720233c..beb6f56f 100644 --- a/src/datamodel/parser/MatFileWriter.ts +++ b/src/datamodel/parser/MatFileWriter.ts @@ -542,22 +542,21 @@ function notPlain(v: MatVariable): string | null { // Where an element's array flags keep its flags byte: past the element's tag and the flags' own, // which MATLAB and MatWriter both write in the long form (8 bytes of tag, then 8 of data), and -// the byte after the class. Its bit 0x04 is MATLAB's global flag, which `save` sets on a variable -// declared global. +// the byte after the class; and its bit for global. const FLAGS_BYTE = 17; const GLOBAL_FLAG = 0x04; -// `element`, written fresh for the variable `record` holds, global when that one was. The flag is -// the workspace variable's and not its value's: no writer of a value sets it (MatWriter writes a -// value as `getByteStreamFromArray` holds it), and nothing in the node layer holds it, so written -// fresh a global variable was not one, and a rename splice alone kept it. +// `element`, written fresh for the variable `record` holds, global when that one was +// (MatVariable.isGlobal). The flag is the workspace variable's and not its value's, so no writer +// of a value writes it, and written fresh a variable saved as global was not one: `load(f)` no +// longer declared it global. A rename splice keeps it with the rest of the element. Only the +// top-level element, the one MATLAB sets it on; and on a copy, since the element may be a view +// of the bytes the file was read from (_matStream's own, which then hold it already). function globalAsRead(element: Uint8Array, record: MatRecord | null): Uint8Array { - const read = record?.variable?._rawBytes; - const longFlags = (e: Uint8Array) => e.byteLength > FLAGS_BYTE + 6 && u32At(e, 8) === 6 && u32At(e, 12) === 8; - if (!read || !longFlags(read) || !longFlags(element) || !(read[FLAGS_BYTE] & GLOBAL_FLAG) || element[FLAGS_BYTE] & GLOBAL_FLAG) { + const longFlags = element.byteLength > FLAGS_BYTE && u32At(element, 8) === 6 && u32At(element, 12) === 8; + if (!record?.variable?.isGlobal || !longFlags || element[FLAGS_BYTE] & GLOBAL_FLAG) { return element; } - // A copy: the element may be a view of the bytes the file was read from (_matStream's own). const out = element.slice(); out[FLAGS_BYTE] |= GLOBAL_FLAG; return out; @@ -809,6 +808,11 @@ function selfCheck(file: string, bytes: Uint8Array, plan: Planned[], assembled: if (difference) { fail(difference); } + // Global as the variable it was written for was (globalAsRead), and a variable added since not. + if (!!p.record?.variable?.isGlobal !== !!got.variable?.isGlobal) { + const is = got.variable?.isGlobal ? 'global, where the variable it was written for was not' : 'not global, where the variable it was written for was'; + fail('"' + p.name + '" reads back ' + is); + } }); } diff --git a/src/datamodel/parser/MatParser.ts b/src/datamodel/parser/MatParser.ts index dd316577..4b78c275 100644 --- a/src/datamodel/parser/MatParser.ts +++ b/src/datamodel/parser/MatParser.ts @@ -52,6 +52,13 @@ export interface MatVariable { // them. It is what MatWriter writes sparse storage on (encodeSparse), since writing the // array full would change the variable's storage in the file. Absent on everything else. isSparse?: boolean; + // The array flags' global bit (0x04 of the flags byte): `save` sets it on a variable declared + // global, on its top-level element and on no element nested in it (measured against MATLAB + // R2027a, test/fixtures/global/make_global_fixtures.m), and `load(f)` declares such a + // variable global again. It is the workspace variable's, not its value's, so no writer of a + // value writes it: the MAT-file save sets it on the element it writes for the variable that + // had it (MatFileWriter). Absent when the bit is clear. + isGlobal?: boolean; // A sparse array's non-zeros, which are all of it: a sparse array is never held as a // dense list, so what it costs is what it holds. Its `value` is its summary, // `<10000000x2 sparse double>`, which a host that renders values without knowing this @@ -1077,6 +1084,9 @@ export function parseMatrix(view: DataView, baseOffset: number, length: number, if (isSparse) { result.isSparse = true; } + if (flags & 0x04) { + result.isGlobal = true; + } // Past MAX_NESTING levels a matrix is recorded with its class, size and name, and nothing in // it is read. What holds it keeps its bytes, as for every value this reader does not decode: diff --git a/test/fixtures/global/global_v6.mat b/test/fixtures/global/global_v6.mat new file mode 100644 index 0000000000000000000000000000000000000000..df6a69fabf8c04e56a407b908ee401608d6da489 GIT binary patch literal 880 zcma)4K~BRk5VYNZfCFcaen3GU3Qeb@`%K%UI_hrM`cz z^(fTQO&mq>`4#?0W4$Ycg`8x^_zz+Gumk!4A7Bs0wS)~Cuf+UL2!)kY13}&iHZ4!} z@W_>5%paLAX!96OA;c55n>-zT1_4*!`+s?`O+%=OcUO^EcOYQ-^&KZa=OL=fISHeY`Vb8;{fD9(klN4+_d3Zb(zScP89B43T?`52BDR6)##n9>NS%*uAb^^xDnQCn%>1=Fv3bz{=7tZTt47TNI zW)PmhY9tgZ&(2ue<8XrOYIx(4{>}!wum!n5XLabcbWMJoH$jR)eg<4~u!B(#2#d^n?1@$TftMoEwVf6gCZU{LB{mICR}fa}-*4ycAp3ZP(8N}Lek=$Dix RHzAFwtAHt!!Q>^=1ORxakTL)O literal 0 HcmV?d00001 diff --git a/test/fixtures/global/make_global_fixtures.m b/test/fixtures/global/make_global_fixtures.m new file mode 100644 index 00000000..b13cae77 --- /dev/null +++ b/test/fixtures/global/make_global_fixtures.m @@ -0,0 +1,99 @@ +function make_global_fixtures(outDir) + % Copyright 2026 The MathWorks, Inc. + % Authors global_v7.mat and global_v6.mat: variables declared global, saved by MATLAB's own + % `save`, beside one that is not. test/matGlobal.test.ts and the MAT-file gate + % (test/parity/matlab/probe_mat_writeback) read them. Run: + % + % mw -using Bmain matlab -nodesktop -batch "make_global_fixtures('/tmp/globals')" + % + % with this folder on the path, then copy the two files here. `outDir` must be a temp folder: + % the function cds there before it writes anything. + % + % WHAT IT MEASURES. `save` marks a variable declared global by bit 0x04 of its array flags' + % flags byte (the flags word 0x0406 for a global double), on the top-level element alone; it + % prints the -v6 file's every element's flags as it finds them (FLAGS lines: depth, class, + % flags byte; the -v7 file's records are compressed, and test/matGlobal.test.ts reads them), + % and what MATLAB reads back of both: `whos -file`'s global attribute, and the globals a + % `load` inside a function declares (GLOBAL lines). Measured on R2027a: 04 on every global + % top-level element, 00 on every element nested in one. + cd(outDir); + clear global + global gD gS gC gI %#ok + gD = [1 2 3]; + gS = struct('a', 1, 'b', {{2, 'x'}}); + gC = {4, int8(5), struct('q', 6)}; + gI = int16(-7); + plain = 9; %#ok + save('global_v7.mat', 'gD', 'gS', 'gC', 'gI', 'plain', '-v7'); + save('global_v6.mat', 'gD', 'gS', 'gC', 'gI', 'plain', '-v6'); + clear global + for f = {'global_v7.mat', 'global_v6.mat'} + w = whos('-file', f{1}); + fprintf('GLOBAL whos %s %s\n', f{1}, strjoin(arrayfun(@(x) sprintf('%s=%d', x.name, x.global), w, 'UniformOutput', false), ' ')); + fprintf('GLOBAL load %s %s\n', f{1}, strjoin(globalsLoaded(f{1}), ' ')); + end + fprintf('FLAGS global_v6.mat %s\n', strjoin(flagsOf('global_v6.mat'), ' ')); + fprintf('MAKE_GLOBAL_FIXTURES_DONE %s\n', version); +end + +% The globals `load` declares inside a function: every variable the file marks global. +function names = globalsLoaded(fixtureFile__) + clear global + load(fixtureFile__); %#ok + w__ = whos('global'); + names = sort({w__.name}); + clear global +end + +% The flags byte of every miMATRIX element of an uncompressed (-v6) file, nested ones included, +% as `d/c:` in file order. +function out = flagsOf(f) + out = {}; + fid = fopen(f, 'r'); + b = fread(fid, Inf, '*uint8')'; + fclose(fid); + at = 129; + while at + 7 <= numel(b) + n = double(typecast(b(at+4:at+7), 'uint32')); + out = [out, walk(b(at:at+7+n), 1, 0)]; %#ok + at = at + 8 + n + mod(8 - mod(n, 8), 8); + end +end + +function out = walk(el, at, depth) + out = {}; + n = double(typecast(el(at+4:at+7), 'uint32')); + flags = el(at+17); + cls = el(at+16); + out{end+1} = sprintf('d%d/c%d:%02x', depth, cls, flags); + % Members: past flags (16), dims, name; a cell's members follow, a struct's after its two + % name sub-elements. + p = at + 8 + 16; + for k = 1:2 + [len, small] = subLen(el, p); + if small, p = p + 8; else, p = p + 8 + len + mod(8 - mod(len, 8), 8); end + end + if cls == 2 + for k = 1:2 + [len, small] = subLen(el, p); + if small, p = p + 8; else, p = p + 8 + len + mod(8 - mod(len, 8), 8); end + end + end + if cls == 1 || cls == 2 + stop = at + 8 + n; + while p < stop + out = [out, walk(el, p, depth + 1)]; %#ok + p = p + 8 + double(typecast(el(p+4:p+7), 'uint32')); + end + end +end + +function [len, small] = subLen(el, p) + w = typecast(el(p:p+3), 'uint32'); + small = bitshift(w, -16) ~= 0; + if small + len = double(bitshift(w, -16)); + else + len = double(typecast(el(p+4:p+7), 'uint32')); + end +end diff --git a/test/matGlobal.test.ts b/test/matGlobal.test.ts new file mode 100644 index 00000000..6b7e2f8f --- /dev/null +++ b/test/matGlobal.test.ts @@ -0,0 +1,132 @@ +// Copyright 2026 The MathWorks, Inc. +// +// A variable saved as global stays global when a save writes it again. +// +// `save` marks a variable declared global by bit 0x04 of its array flags' flags byte (the flags +// word 0x0406 for a global double), on its top-level element and on no element nested in it, and +// `load(f)` declares it global again: measured against MATLAB R2027a by +// fixtures/global/make_global_fixtures.m, which wrote global_v7.mat and global_v6.mat (gD, gS, +// gC, gI global; plain not) and read each back by `whos -file` and by a `load` inside a function. +// The flag is the workspace variable's, not its value's. No reader layer held it, so a value edit, +// which writes the variable fresh, wrote it as not global, and `load(f)` no longer declared it +// (MATLAB's verdict on the save, the MAT-file gate's global_* cases); a rename, which writes the +// element it was read as, kept it. The reader now holds it (MatVariable.isGlobal), and the save +// sets it on the element it writes for a variable that had it (MatFileWriter.globalAsRead). +import { describe, it, expect } from 'vitest'; +import { readFileSync } from 'node:fs'; +import { fileURLToPath } from 'node:url'; +import { unzlibSync } from 'fflate'; +import { parseMat, type MatRecord, type MatVariable } from '../src/datamodel/parser/MatParser.js'; +import { createSession } from '../src/index.js'; +import { elementValue } from './tools/matElements.js'; + +/* eslint-disable @typescript-eslint/no-explicit-any */ + +const arrayBufferOf = (u8: Uint8Array) => u8.buffer.slice(u8.byteOffset, u8.byteOffset + u8.byteLength) as ArrayBuffer; +const fixture = (name: string) => arrayBufferOf(new Uint8Array(readFileSync(fileURLToPath(new URL('./fixtures/global/' + name, import.meta.url))))); +const GLOBALS = ['gC', 'gD', 'gI', 'gS']; + +function elementOf(record: MatRecord): Uint8Array { + const view = new DataView(record.bytes.buffer, record.bytes.byteOffset, record.bytes.byteLength); + return view.getUint32(0, true) === 15 ? unzlibSync(record.bytes.subarray(8, 8 + view.getUint32(4, true))) : record.bytes; +} + +/** Each record's name and whether its element is global, by the bytes and by the reader. */ +const globalsOf = (bytes: ArrayBuffer | Uint8Array) => { + const parsed = parseMat(bytes instanceof Uint8Array ? arrayBufferOf(bytes) : bytes); + return parsed.records.map((r) => [r.name, elementValue(elementOf(r)).global, !!r.variable?.isGlobal]); +}; + +/** Every variable nested in `v`, at any depth. */ +function nested(v: MatVariable): MatVariable[] { + const out: MatVariable[] = []; + const walk = (x: MatVariable) => { + for (const held of Object.values(x.fields ?? {})) { + for (const one of Array.isArray(held) ? held : [held]) { + out.push(one); + walk(one); + } + } + if (x.className === 'cell' && Array.isArray(x.value)) { + for (const one of x.value as MatVariable[]) { + out.push(one); + walk(one); + } + } + }; + walk(v); + return out; +} + +function opened(name: string) { + const session = createSession(); + const root: any = session.addMatSource(name, fixture(name)); + const at = (...labels: string[]) => { + let node = root.children.find((c: any) => c.name === labels[0]); + for (const label of labels.slice(1)) node = node.children.find((c: any) => c.displayName === label); + return node; + }; + const edit = (node: any, prop: string, value: string) => { + session.setActive(root, node); + expect(session.editProperty(node.id, prop, value), prop + ' ' + value).toBe(true); + }; + const save = () => (session.serializeSource(name) as { bytes: Uint8Array }).bytes; + return { session, root, at, edit, save }; +} + +describe.each(['global_v7.mat', 'global_v6.mat'])('%s, as MATLAB saved it', (file) => { + it('the reader holds the global flag of each variable that has it, and of nothing nested in one', () => { + expect(globalsOf(fixture(file))).toEqual([ + ['gD', true, true], + ['gS', true, true], + ['gC', true, true], + ['gI', true, true], + ['plain', false, false], + ]); + for (const v of parseMat(fixture(file)).variables) { + expect(nested(v).filter((x) => x.isGlobal).map((x) => v.name), v.name).toEqual([]); + } + }); + + it('each global edited is written fresh, global, and the rest as it was', () => { + const { at, edit, save } = opened(file); + edit(at('gD', 'gD(2)'), 'Value', '20'); + edit(at('gS', 'a'), 'Value', '5'); + edit(at('gC', 'gC{1}'), 'Value', '40'); + edit(at('gI'), 'Value', '-8'); + edit(at('plain'), 'Value', '10'); + const saved = save(); + expect(globalsOf(saved)).toEqual(globalsOf(fixture(file))); + const parsed = parseMat(arrayBufferOf(saved)); + const v = (n: string) => parsed.variables.find((x) => x.name === n)!; + expect([v('gD').value, (v('gS').fields!.a as MatVariable).value, (v('gC').value as MatVariable[])[0].value, v('gI').className, v('gI').value, v('plain').value]).toEqual([ + [1, 20, 3], + 5, + 40, + 'int16', + -8, + 10, + ]); + // Nothing nested in a global written fresh is global, as in MATLAB's own element. + for (const name of GLOBALS) { + expect(nested(v(name)).filter((x) => x.isGlobal), name).toEqual([]); + } + // A -v6 file stays one: no record compressed. + expect(parsed.records.some((r) => r.compressed)).toBe(file === 'global_v7.mat'); + }); + + it('a global renamed stays global, one deleted is gone, and one added is not global', () => { + const { root, at, edit, save, session } = opened(file); + edit(at('gD'), 'Name', 'gD2'); + session.setActive(root, at('gI')); + expect(session.deleteNodeById(at('gI').id)).toBe(true); + root.execAddEntry(undefined, 'added'); + expect(globalsOf(save())).toEqual([ + ['gD2', true, true], + ['gS', true, true], + ['gC', true, true], + ['plain', false, false], + ['added', false, false], + ]); + }); +}); diff --git a/test/parity/matlab/README.md b/test/parity/matlab/README.md index 1bd3a37f..3493f334 100644 --- a/test/parity/matlab/README.md +++ b/test/parity/matlab/README.md @@ -280,7 +280,8 @@ the statements make of it, so the two halves describe one edit. `probe_mat_write loads the original, makes the edit in MATLAB, loads the save, and compares: - the same variables in the same order (load's, and `whos -file`'s class, size and global flag - of each); + of each, the globals renamed and deleted as the statements do, and the globals a `load` inside + a function declares); - each variable to the leaf: class, size, sparsity, complexity, `isequaln` on every value and the bits of every double and single (the sign of a zero, which `isequaln` does not see; a NaN's payload apart), @@ -306,8 +307,9 @@ Its last line is `PROBE_MAT_WRITEBACK DONE pass=N fail=M`, with one The fixtures are `cases.mat`, `dispcat.mat`, `dispcat_opaque.mat` (function handles, enumerations, `fi`, `categorical`, `table`), `nested_objects.mat`, `strings.mat`, `strings_mixed.mat`, `sparse_values.mat`, `sparse_cases.mat`, `complex_inf.mat` (no subsystem), -`dag4.mat` (a handle DAG), the two `-v6` files `nested_handles.mat` and `hexobj_values.mat`, and -two files the JS half assembles: one of `dispcat.mat`'s own elements, an empty complex array and +`dag4.mat` (a handle DAG), the two `-v6` files `nested_handles.mat` and `hexobj_values.mat`, +`global_v7.mat` and `global_v6.mat` (variables MATLAB saved as global, beside one it did not; +`../../fixtures/global/make_global_fixtures.m`), and two files the JS half assembles: one of `dispcat.mat`'s own elements, an empty complex array and an empty struct array with a field held in a struct and a cell beside a value to edit; and one built by hand as MATLAB writes each part, of what no fixture holds: a struct of no element with two fields in a cell, `complex(zeros(0,3,'single'))` alone and in a struct, empty structs with a field diff --git a/test/parity/matlab/probe_mat_writeback.m b/test/parity/matlab/probe_mat_writeback.m index 30331b28..c38b67dd 100644 --- a/test/parity/matlab/probe_mat_writeback.m +++ b/test/parity/matlab/probe_mat_writeback.m @@ -167,13 +167,32 @@ end end end -% And global where the original's variable of that name was global: `save` marks a variable -% declared global, which is the variable's and not its value's, so load's struct does not show it. +% And global as the original's variables were, renamed and deleted as the statements rename and +% delete them: `save` marks a variable declared global, which is the variable's and not its +% value's, so load's struct does not show it. Asked of whos -file, and of what a `load` inside a +% function declares global. wo = whos('-file', e.original); -for i = 1:numel(w) - o = wo(strcmp({wo.name}, w(i).name)); - if (isempty(o) && w(i).global) || (~isempty(o) && o(1).global ~= w(i).global) - why{end + 1} = sprintf('whos -file says %s is global %d, where the original''s is %d', w(i).name, w(i).global, ~isempty(o) && o(1).global); %#ok +row = @(c) reshape(sort(c), 1, []); +expected = row({wo([wo.global]).name}); +if ~isempty(expected) || any([w.global]) + for i = 1:numel(stmts) + r = regexp(stmts{i}, 'renameStructField\(S, ''(\w+)'', ''(\w+)''\)', 'tokens', 'once'); + if ~isempty(r) + expected(strcmp(expected, r{1})) = r(2); + end + r = regexp(stmts{i}, 'rmfield\(S, ''(\w+)''\)', 'tokens', 'once'); + if ~isempty(r) + expected(strcmp(expected, r{1})) = []; + end + end + expected = row(expected); + said = row({w([w.global]).name}); + if ~isequal(said, expected) + why{end + 1} = sprintf('whos -file says [%s] are global, where [%s] should be', strjoin(said, ','), strjoin(expected, ',')); + end + declared = globalsLoaded(e.saved); + if ~isequal(declared, expected) + why{end + 1} = sprintf('load inside a function declares [%s] global, where [%s] should be', strjoin(declared, ','), strjoin(expected, ',')); end end @@ -202,6 +221,16 @@ end end +% The variables a `load` inside a function declares global, sorted; the global workspace cleared +% before and after, so that no case sees another's. +function names = globalsLoaded(fileLoaded__) +clear global +evalc('load(fileLoaded__);'); +w__ = whos('global'); +names = reshape(sort({w__.name}), 1, []); +clear global +end + % load, with what it warns or prints, and its error, instead of letting either escape. function [V, w, err] = loadQuietly(path) V = struct(); diff --git a/test/parity/matlab/probe_mat_writeback.mjs b/test/parity/matlab/probe_mat_writeback.mjs index 0d11771b..57919239 100644 --- a/test/parity/matlab/probe_mat_writeback.mjs +++ b/test/parity/matlab/probe_mat_writeback.mjs @@ -71,6 +71,10 @@ const COMPLEX_INF = 'test/fixtures/complex_inf/complex_inf.mat'; const DAG = 'test/fixtures/mcos/shared/dag4.mat'; const V6_HANDLES = 'test/fixtures/display/nested_handles.mat'; const V6_HEXOBJ = 'test/fixtures/sparse/hexobj_values.mat'; +// MATLAB's own `save` of variables declared global (gD, gS, gC, gI) beside one that is not +// (plain), -v7 and -v6 (test/fixtures/global/make_global_fixtures.m). +const GLOBAL_V7 = 'test/fixtures/global/global_v7.mat'; +const GLOBAL_V6 = 'test/fixtures/global/global_v6.mat'; const LONG_NAME = 'a' + 'b'.repeat(61) + 'c'; // 63 characters, the longest name core writes @@ -690,6 +694,39 @@ add( ['S.nz(2) = 5;'], ); +// ---- variables saved as global: written fresh, still global ----------------------------- +zero('zero_global_v7', GLOBAL_V7, 'a save with no edit is the file'); +zero('zero_global_v6', GLOBAL_V6, 'a save with no edit is the file'); +add('global_v7_element', GLOBAL_V7, 'an element of a global double: written fresh, and still global', (f) => f.set(['gD', 'gD(2)'], '20', 'double', '20'), [ + 'S.gD(2) = 20;', +]); +add( + 'global_v7_struct_field', + GLOBAL_V7, + 'a field of a global struct: the struct written fresh, global, and nothing nested in it global', + (f) => f.set(['gS', 'a'], '5', 'double', '5'), + ['S.gS.a = 5;'], +); +add('global_v6_cell_member', GLOBAL_V6, 'a member of a global cell in a -v6 file: still global, still uncompressed', (f) => f.set(['gC', 'gC{1}'], '40', 'double', '40'), [ + 'S.gC{1} = 40;', +]); +add('global_v6_int16', GLOBAL_V6, 'a global int16 typed into, which keeps its class and stays global', (f) => f.set(['gI'], '-8', 'int16', '-8'), [ + 'S.gI = int16(-8);', +]); +add('fresh_global_v7', GLOBAL_V7, 'every plain variable written fresh: the globals stay global, the other stays not', (f) => f.freshAll(), [], 'unchanged'); +add( + 'global_rename_delete_add', + GLOBAL_V7, + 'a global renamed (its bytes, renamed), another deleted, a field of a third edited, a variable added (not global)', + (f) => { + f.rename('gD', 'gD2'); + f.remove('gI'); + f.set(['gS', 'a'], '6', 'double', '6'); + f.add('var'); + }, + ["S = renameStructField(S, 'gD', 'gD2');", "S = rmfield(S, 'gI');", 'S.gS.a = 6;', 'S.var = 0;'], +); + // ---- function handles, enumerations, fi, categorical, table ------------------------- add( 'rename_fhandles', From e7ecd27c699d0f448995e4830759b240dd2e32ba Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Tue, 20 Oct 2026 19:49:27 -0400 Subject: [PATCH 11/13] [wip] Check a MAT-file save where it changed the file, so that a large file saves a small edit Every save parsed the whole file it wrote, compared every record it copied byte for byte, and checked both the file as read and the file written against MATLAB's load rules: each compressed record was inflated two or three times a save, and a file past the check's inflate budget could never be saved, since a budget note on the file written always counts as added. What the check finds in a record depends on that record's bytes alone, so a record copied as its own bytes breaks what it broke in the file as read, under the same variable, and the two cancel. The check now walks every record through one function (checkRecord), and violationsAddedBySplice compares only the records written, the ones they replace, the header, and where every record stands, reading a copied record's name without walking the rest of it. Where that reasoning does not hold (a record the walk would frame otherwise, one copied twice, a copied name the renames map) it checks both files whole. A deleted record is checked only when something is added. The budget is spent on what is checked; a budget note on the file as read no longer blocks a save that adds nothing. The self-check reads again only the records written anew, each alone, and holds every copied record to its place and length by construction. A budget refusal says the save could not be verified, not that it breaks a rule. A file past one buffer and a compressed stream past what a record's 32-bit size can say are refused as MatWriteErrors. Over every .mat under test/ and six kinds of save (renamed, written fresh, deleted, added, all at once, written to break a rule; 676 saves reaching the check), the splice's verdict equals the whole-file one rule by rule and variable by variable. On 20,000 compressed scalars, a save after one rename takes 42-51 ms, from 200-215 ms. --- README.md | 11 +- dist/datamodel/parser/MatFileCheck.d.ts | 59 ++++ dist/datamodel/parser/MatFileCheck.d.ts.map | 2 +- dist/datamodel/parser/MatFileCheck.js | 265 ++++++++++++-- dist/datamodel/parser/MatFileCheck.js.map | 2 +- dist/datamodel/parser/MatFileWriter.d.ts | 13 +- dist/datamodel/parser/MatFileWriter.d.ts.map | 2 +- dist/datamodel/parser/MatFileWriter.js | 243 ++++++++----- dist/datamodel/parser/MatFileWriter.js.map | 2 +- src/datamodel/parser/MatFileCheck.ts | 310 ++++++++++++++-- src/datamodel/parser/MatFileWriter.ts | 270 +++++++++----- test/matFileSave.test.ts | 39 +- test/matSpliceVerdict.test.ts | 353 +++++++++++++++++++ 13 files changed, 1346 insertions(+), 225 deletions(-) create mode 100644 test/matSpliceVerdict.test.ts diff --git a/README.md b/README.md index 517b36c3..2d5913af 100644 --- a/README.md +++ b/README.md @@ -122,10 +122,13 @@ objects, and compressed only if the file already holds a compressed record, so a `-v6` file stays one. Written from the model, a variable is still the one it was read as in every part it holds: a struct array of no element keeps its field names, an empty its complexity, a zero its sign, and a variable saved as global -stays global. Before the bytes are handed back they are read again, and -held to the rules MATLAB loads a file by: a save that breaks one the file as read -did not break is refused, with a `MatWriteError` naming the variable, and nothing -is written. +stays global. Before the bytes are handed back, every record written anew is +read again, and the file is held to the rules MATLAB loads a file by: a save that +breaks one the file as read did not break is refused, with a `MatWriteError` +naming the variable, and nothing is written. Both are asked where the save changed +the file, so a save costs what it changed, however large the rest of the file is; +a record written anew too large for the check to finish is refused as not +verified. What such a save cannot write, the editor does not offer. A host that honours the editability core hands it (`getPropInfo(...).editable`, a row's `Name.editable`, diff --git a/dist/datamodel/parser/MatFileCheck.d.ts b/dist/datamodel/parser/MatFileCheck.d.ts index 862324d9..16a084aa 100644 --- a/dist/datamodel/parser/MatFileCheck.d.ts +++ b/dist/datamodel/parser/MatFileCheck.d.ts @@ -89,4 +89,63 @@ export declare function checkMatElement(element: Uint8Array, options?: MatCheckO * what it did not reach, whatever the original's check reached. */ export declare function violationsAdded(before: readonly MatViolation[], after: readonly MatViolation[], renamed?: ReadonlyMap): MatViolation[]; +/** A record of a file as read, for violationsAddedBySplice: its bytes, from its tag. */ +export interface MatReadRecord { + bytes: Uint8Array; + /** + * Its payload as `inflateZlib` inflated it, for a compressed record whose inflate the caller + * holds already (MatParser keeps it, MatVariable._rawBytes), so that it is not inflated again. + */ + inflated?: Uint8Array | null; +} +/** + * A record of a file written from another (violationsAddedBySplice): a record of that file kept + * as its own bytes (`kept`, its index), or bytes written in place of one of its records + * (`replaces`, its index: a variable renamed or written fresh, and the subsystem, when a save + * writes it anew) or of none (`replaces` null: a variable added). + */ +export type MatSplicedRecord = { + kept: number; +} | { + written: Uint8Array; + replaces: number | null; +}; +/** A Level-5 file as its 128-byte header and its records, back to back from byte 128. */ +export interface MatFileOfRecords { + header: Uint8Array; + records: readonly R[]; +} +/** + * What `written` adds to `read` by the rules MATLAB loads a file by, as + * `violationsAdded(checkMatFile(read), checkMatFile(written), renamed)` says it, where `written` + * is `read` with some of its records kept as their own bytes, the others deleted or written anew, + * and records added: worked out from what changed, rather than by checking both files whole. + * + * WHY IT IS THE SAME ANSWER. What a record breaks depends on its bytes alone (checkRecord, which + * checkMatFile walks every record with: `at` only places what is said). So a record kept as its + * own bytes breaks in `written` what it broke in `read`, under the same variable, and the two + * cancel, by rule and variable, as violationsAdded counts them. What is left to compare is the + * records written, the records they replace, the header, and the rules of where records stand + * (checkPlacement), which are asked of both files whole, from each record's name and whether it + * holds the subsystem: of a kept record, read without walking the rest of it (Check.headOnly). + * That holds where three things do, and where one does not both files are checked whole: + * + * - both files walk as their records are given: every record's tag declares exactly the bytes + * it is given, and opens with a nonzero byte, which the tag of a type that is a multiple of + * 256 does not, and which the walk then takes for padding; + * - no record of `read` is kept twice, or kept and replaced; + * - no kept record holds a name `renamed` maps, which violationsAdded would compare its + * violations under the other name of. + * + * A record deleted is one more in `read` than in `written`, which can only take from what is + * added: it is checked only when something is. + * + * THE BUDGET (MatCheckOptions) is spent on what is checked, the records written and the ones + * they replace, and not on the records kept, which are not walked: so a file past it is still + * checked where it changed, where checkMatFile of it would stop. A `budget` note on the written + * side is added, as violationsAdded adds every one; one on the read side only leaves less for a + * written record's violations to be matched with. A kept record whose name cannot be read within + * the budget is a `budget` note on the written side: where it stands cannot be judged. + */ +export declare function violationsAddedBySplice(read: MatFileOfRecords, written: MatFileOfRecords, renamed?: ReadonlyMap, options?: MatCheckOptions): MatViolation[]; //# sourceMappingURL=MatFileCheck.d.ts.map \ No newline at end of file diff --git a/dist/datamodel/parser/MatFileCheck.d.ts.map b/dist/datamodel/parser/MatFileCheck.d.ts.map index 11feff4f..f8537d0f 100644 --- a/dist/datamodel/parser/MatFileCheck.d.ts.map +++ b/dist/datamodel/parser/MatFileCheck.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"MatFileCheck.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/MatFileCheck.ts"],"names":[],"mappings":"AAuEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,MAAM,gBAAgB,GACxB,YAAY,GACZ,YAAY,GACZ,kBAAkB,GAClB,YAAY,GACZ,SAAS,GACT,gBAAgB,GAChB,cAAc,GACd,oBAAoB,GACpB,kBAAkB,GAClB,oBAAoB,GACpB,kBAAkB,GAClB,MAAM,GACN,gBAAgB,GAChB,WAAW,GACX,YAAY,GACZ,QAAQ,GACR,aAAa,GACb,SAAS,GACT,WAAW,GACX,QAAQ,CAAC;AAEb,6CAA6C;AAC7C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,gBAAgB,CAAC;IACvB;;;;OAIG;IACH,EAAE,EAAE,MAAM,CAAC;IACX,sFAAsF;IACtF,OAAO,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,sFAAsF;AACtF,MAAM,WAAW,eAAe;IAC9B,4FAA4F;IAC5F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yGAAyG;IACzG,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;GAGG;AACH,eAAO,MAAM,wBAAwB,QAAU,CAAC;AAEhD;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,QAAU,CAAC;AAsLhD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,GAAE,eAAoB,GAAG,YAAY,EAAE,CAa7F;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,GAAE,eAAoB,GAAG,YAAY,EAAE,CAiBlG;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,SAAS,YAAY,EAAE,EAC/B,KAAK,EAAE,SAAS,YAAY,EAAE,EAC9B,OAAO,GAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAa,GAC/C,YAAY,EAAE,CAkBhB"} \ No newline at end of file +{"version":3,"file":"MatFileCheck.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/MatFileCheck.ts"],"names":[],"mappings":"AAyEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,MAAM,gBAAgB,GACxB,YAAY,GACZ,YAAY,GACZ,kBAAkB,GAClB,YAAY,GACZ,SAAS,GACT,gBAAgB,GAChB,cAAc,GACd,oBAAoB,GACpB,kBAAkB,GAClB,oBAAoB,GACpB,kBAAkB,GAClB,MAAM,GACN,gBAAgB,GAChB,WAAW,GACX,YAAY,GACZ,QAAQ,GACR,aAAa,GACb,SAAS,GACT,WAAW,GACX,QAAQ,CAAC;AAEb,6CAA6C;AAC7C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,gBAAgB,CAAC;IACvB;;;;OAIG;IACH,EAAE,EAAE,MAAM,CAAC;IACX,sFAAsF;IACtF,OAAO,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,sFAAsF;AACtF,MAAM,WAAW,eAAe;IAC9B,4FAA4F;IAC5F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yGAAyG;IACzG,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;GAGG;AACH,eAAO,MAAM,wBAAwB,QAAU,CAAC;AAEhD;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,QAAU,CAAC;AA6LhD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,GAAE,eAAoB,GAAG,YAAY,EAAE,CAW7F;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,GAAE,eAAoB,GAAG,YAAY,EAAE,CAiBlG;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,SAAS,YAAY,EAAE,EAC/B,KAAK,EAAE,SAAS,YAAY,EAAE,EAC9B,OAAO,GAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAa,GAC/C,YAAY,EAAE,CAkBhB;AAED,wFAAwF;AACxF,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,UAAU,CAAC;IAClB;;;OAGG;IACH,QAAQ,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;CAC9B;AAED;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAEnG,yFAAyF;AACzF,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,gBAAgB,CAAC,aAAa,CAAC,EACrC,OAAO,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,EAC3C,OAAO,GAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAa,EAChD,OAAO,GAAE,eAAoB,GAC5B,YAAY,EAAE,CA+FhB"} \ No newline at end of file diff --git a/dist/datamodel/parser/MatFileCheck.js b/dist/datamodel/parser/MatFileCheck.js index b26e92e6..0bc17cc0 100644 --- a/dist/datamodel/parser/MatFileCheck.js +++ b/dist/datamodel/parser/MatFileCheck.js @@ -57,7 +57,9 @@ // WHAT IT IS FOR. The `.mat` save checks the file it writes, and refuses to return it if it has // a violation the original did not. A violation is therefore said with the variable it is in, // when that has a readable name, so two files can be compared by variable rather than by an -// offset an edit moved (violationsAdded). +// offset an edit moved (violationsAdded). And since what a record breaks is a function of its +// own bytes, the save asks it only where it changed the file, with the same answer +// (violationsAddedBySplice). // // BOUNDED. A file's bytes say how much work reading them is, and a hostile one can say a lot: // a few kilobytes of zlib inflate to gigabytes, and a cell can declare a billion elements. So @@ -148,8 +150,9 @@ class OutOfBudget extends Error { this.name = 'OutOfBudget'; } } -function fileSpace(view) { - return { view, fileAt: (o) => o, where: (o) => `Byte ${o}` }; +/** One top-level record's bytes, from its tag, as the record at byte `at` of its file. */ +function recordSpace(view, at) { + return { view, fileAt: (o) => at + o, where: (o) => `Byte ${at + o}` }; } function payloadSpace(view, record) { return { @@ -165,6 +168,12 @@ class Check { this.cursor = 128; /** Whether the walk is inside the subsystem's stream, which belongs to no variable. */ this.inSubsystem = false; + /** + * Whether only what the placement rules need of a record is read (its name, and whether it + * holds the subsystem), and nothing past it: what a record kept as its own bytes is asked + * in a splice (violationsAddedBySplice), whose violations are the file's as read already. + */ + this.headOnly = false; this.maxElements = options.maxElements ?? MAT_CHECK_ELEMENT_BUDGET; this.maxInflated = options.maxInflatedBytes ?? MAT_CHECK_INFLATE_BUDGET; this.elementsLeft = this.maxElements; @@ -208,9 +217,7 @@ export function checkMatFile(bytes, options = {}) { catch (err) { // A budget run out, or, if this module has a defect, any other throw: either way the // check did not finish, and that is said rather than thrown, at the record it was in. - const at = err instanceof OutOfBudget ? err.at : check.cursor; - const why = err instanceof OutOfBudget ? err.message : `an error in the check itself (${reasonOf(err)})`; - check.file('budget', at, `The check stopped at byte ${at}, at ${why}, so nothing from there on was checked.`); + check.file('budget', ...stoppedAt(err, check.cursor)); } // Stable, so the violations of one place keep the order they were found in. return check.out.sort((a, b) => a.at - b.at); @@ -274,6 +281,190 @@ export function violationsAdded(before, after, renamed = new Map()) { } return added; } +/** + * What `written` adds to `read` by the rules MATLAB loads a file by, as + * `violationsAdded(checkMatFile(read), checkMatFile(written), renamed)` says it, where `written` + * is `read` with some of its records kept as their own bytes, the others deleted or written anew, + * and records added: worked out from what changed, rather than by checking both files whole. + * + * WHY IT IS THE SAME ANSWER. What a record breaks depends on its bytes alone (checkRecord, which + * checkMatFile walks every record with: `at` only places what is said). So a record kept as its + * own bytes breaks in `written` what it broke in `read`, under the same variable, and the two + * cancel, by rule and variable, as violationsAdded counts them. What is left to compare is the + * records written, the records they replace, the header, and the rules of where records stand + * (checkPlacement), which are asked of both files whole, from each record's name and whether it + * holds the subsystem: of a kept record, read without walking the rest of it (Check.headOnly). + * That holds where three things do, and where one does not both files are checked whole: + * + * - both files walk as their records are given: every record's tag declares exactly the bytes + * it is given, and opens with a nonzero byte, which the tag of a type that is a multiple of + * 256 does not, and which the walk then takes for padding; + * - no record of `read` is kept twice, or kept and replaced; + * - no kept record holds a name `renamed` maps, which violationsAdded would compare its + * violations under the other name of. + * + * A record deleted is one more in `read` than in `written`, which can only take from what is + * added: it is checked only when something is. + * + * THE BUDGET (MatCheckOptions) is spent on what is checked, the records written and the ones + * they replace, and not on the records kept, which are not walked: so a file past it is still + * checked where it changed, where checkMatFile of it would stop. A `budget` note on the written + * side is added, as violationsAdded adds every one; one on the read side only leaves less for a + * written record's violations to be matched with. A kept record whose name cannot be read within + * the budget is a `budget` note on the written side: where it stands cannot be judged. + */ +export function violationsAddedBySplice(read, written, renamed = new Map(), options = {}) { + const readBytes = read.records.map((r) => r.bytes); + const writtenBytes = written.records.map((r) => { + if ('kept' in r && !read.records[r.kept]) { + throw new RangeError(`A record kept as record ${r.kept} of a file of ${read.records.length}.`); + } + return 'kept' in r ? read.records[r.kept].bytes : r.written; + }); + const whole = () => violationsAdded(checkMatFile(joined(read.header, readBytes), options), checkMatFile(joined(written.header, writtenBytes), options), renamed); + const taken = new Set(); + for (const r of written.records) { + const from = 'kept' in r ? r.kept : r.replaces; + if (from !== null) { + if (taken.has(from)) { + return whole(); + } + taken.add(from); + } + } + if (read.header.byteLength !== 128 || written.header.byteLength !== 128 || ![...readBytes, ...writtenBytes].every(walksAsGiven)) { + return whole(); + } + const readHeader = headerOf(read.header); + const writtenHeader = headerOf(written.header); + if (readHeader.walked !== writtenHeader.walked) { + return whole(); + } + if (!writtenHeader.walked) { + // checkMatFile reads neither file past its header. + return violationsAdded(readHeader.violations, writtenHeader.violations, renamed); + } + const readAt = offsetsOf(readBytes); + const writtenAt = offsetsOf(writtenBytes); + const heads = read.records.map((r, i) => headOf(r, readAt[i], options)); + for (const r of written.records) { + const head = 'kept' in r ? heads[r.kept] : null; + if (head && !(head instanceof OutOfBudget) && head.name && renamed.has(head.name)) { + return whole(); + } + } + // The written side: its header, every record written, and where every record stands. + const after = new Check(options); + const writtenInfos = []; + let walked = true; + try { + written.records.forEach((r, i) => { + if (!('kept' in r)) { + writtenInfos.push(checkRecord(after, r.written, writtenAt[i])); + return; + } + const head = heads[r.kept]; + if (head instanceof OutOfBudget) { + throw new OutOfBudget(writtenAt[i], head.message); + } + writtenInfos.push(head && { ...head, at: writtenAt[i] }); + }); + } + catch (err) { + walked = false; + after.file('budget', ...stoppedAt(err, after.cursor)); + } + if (walked) { + checkPlacement(after, writtenInfos.filter((x) => x !== null), writtenHeader.offset, endOf(writtenAt, writtenBytes)); + } + const afterAll = [...writtenHeader.violations, ...after.out].sort((a, b) => a.at - b.at); + // The read side: its header, where every record stood, the records replaced, and the records + // deleted only when what is added so far could be matched with one of theirs. + const before = new Check(options); + const readInfos = heads.map((h, i) => (h instanceof OutOfBudget ? { at: readAt[i], name: null, subsystem: false } : h)); + checkPlacement(before, readInfos.filter((x) => x !== null), readHeader.offset, endOf(readAt, readBytes)); + const checkRead = (which) => { + try { + for (const i of which) { + checkRecord(before, read.records[i].bytes, readAt[i], read.records[i].inflated); + } + return true; + } + catch (err) { + before.file('budget', ...stoppedAt(err, before.cursor)); + return false; + } + }; + const replaced = written.records.flatMap((r) => ('kept' in r || r.replaces === null ? [] : [r.replaces])); + const readOn = checkRead(replaced); + let added = violationsAdded([...readHeader.violations, ...before.out], afterAll, renamed); + const deleted = read.records.map((_, i) => i).filter((i) => !taken.has(i)); + if (added.some((v) => v.code !== 'budget') && deleted.length > 0 && readOn) { + checkRead(deleted); + added = violationsAdded([...readHeader.violations, ...before.out], afterAll, renamed); + } + return added; +} +// Whether the walk of a file (walkRecords) reads `record` as the record it is given as: its tag +// declares exactly its bytes, and it does not open with a zero byte, which the walk reads as +// padding or as the end of the records. +function walksAsGiven(record) { + return record.byteLength >= 8 && record[0] !== 0 + && 8 + new DataView(record.buffer, record.byteOffset, 8).getUint32(4, true) === record.byteLength; +} +// What checkMatFile says of a header, whether it reads on past it, and the subsystem's offset it gives. +function headerOf(header) { + const check = new Check({}); + const walked = checkHeader(check, header); + const offset = subsystemOffset(new DataView(header.buffer, header.byteOffset, header.byteLength), header); + return { violations: check.out, walked, offset }; +} +// What the placement rules need of the record at byte `at`, read as checkRecord reads it but no +// further (Check.headOnly), or the budget that stopped it. A compressed record whose inflate is +// held is not inflated again, and spends none of the budget. +function headOf(record, at, options) { + const check = new Check(options); + check.headOnly = true; + if (record.inflated) { + check.inflateLeft = MAT_RECORD_INFLATE_CEILING; + } + try { + return checkRecord(check, record.bytes, at, record.inflated); + } + catch (err) { + return err instanceof OutOfBudget ? err : new OutOfBudget(at, `an error in the check itself (${reasonOf(err)})`); + } +} +// The place and the words of the `budget` note of a check stopped by `err` in the record at +// `cursor`: a budget run out (OutOfBudget, which says where), or a defect of the check's own. +function stoppedAt(err, cursor) { + const at = err instanceof OutOfBudget ? err.at : cursor; + const why = err instanceof OutOfBudget ? err.message : `an error in the check itself (${reasonOf(err)})`; + return [at, `The check stopped at byte ${at}, at ${why}, so nothing from there on was checked.`]; +} +// Where each of `records` starts, back to back after a 128-byte header. +function offsetsOf(records) { + const out = []; + let at = 128; + for (const r of records) { + out.push(at); + at += r.byteLength; + } + return out; +} +function endOf(offsets, records) { + return offsets.length === 0 ? 128 : offsets[offsets.length - 1] + records[records.length - 1].byteLength; +} +function joined(header, records) { + const out = new Uint8Array(header.byteLength + endOf(offsetsOf(records), records) - 128); + out.set(header, 0); + let at = header.byteLength; + for (const r of records) { + out.set(r, at); + at += r.byteLength; + } + return out; +} function checkFile(check, bytes) { if (bytes.byteLength < 128) { check.file('short-file', 0, `The file holds ${bytes.byteLength} bytes, fewer than the 128 of a MAT-file's header.`); @@ -338,7 +529,6 @@ function subsystemOffset(view, bytes) { */ function walkRecords(check, view, bytes, offset) { const records = []; - const file = fileSpace(view); const length = bytes.byteLength; let at = 128; while (at < length) { @@ -383,27 +573,43 @@ function walkRecords(check, view, bytes, offset) { check.file('framing', at, `The file ends ${length - at} byte(s) into a record's tag: MATLAB fails the load.`); break; } - const type = view.getUint32(at, true); const n = view.getUint32(at + 4, true); if (at + 8 + n > length) { check.file('framing', at, `The record at byte ${at} declares ${n} bytes, and the file holds ${length - at - 8} ` + 'after its tag: it is cut short, and MATLAB fails the load.'); break; } - if (type === MI_MATRIX) { - records.push(plainRecord(check, file, at, n)); - } - else if (type === MI_COMPRESSED) { - records.push(compressedRecord(check, bytes.subarray(at + 8, at + 8 + n), at)); - } - else { - check.file('top-level-type', at, `The record at byte ${at} is a data element of ${typeName(type)}: a variable is ` - + 'stored as an miMATRIX or an miCOMPRESSED, and MATLAB fails the load on anything else.'); + const info = checkRecord(check, bytes.subarray(at, at + 8 + n), at); + if (info) { + records.push(info); } at += 8 + n; } return records; } +/** + * One top-level record, its tag and the bytes it declares, as the record at byte `at` of its + * file: checked, and what the placement rules need of it, or null for a record they do not + * see, one that is no matrix. What it breaks depends on its bytes alone: `at` places what is + * said, and nothing else of the file is read. `inflated` is a compressed record's payload, + * inflated, when the caller holds that already (violationsAddedBySplice). + */ +function checkRecord(check, record, at, inflated) { + check.cursor = at; + check.variable = undefined; + const view = new DataView(record.buffer, record.byteOffset, record.byteLength); + const type = view.getUint32(0, true); + const n = view.getUint32(4, true); + if (type === MI_MATRIX) { + return plainRecord(check, recordSpace(view, at), at, n); + } + if (type === MI_COMPRESSED) { + return compressedRecord(check, record.subarray(8, 8 + n), at, inflated); + } + check.file('top-level-type', at, `The record at byte ${at} is a data element of ${typeName(type)}: a variable is ` + + 'stored as an miMATRIX or an miCOMPRESSED, and MATLAB fails the load on anything else.'); + return null; +} function zeroRun(bytes, at) { let end = at; while (end < bytes.byteLength && bytes[end] === 0) @@ -416,13 +622,14 @@ function isRecordType(word) { function typeName(type) { return TYPE_NAMES[type] ?? `type ${type}`; } -function plainRecord(check, file, at, n) { +// A plain record, in a space that holds it from its tag (recordSpace). +function plainRecord(check, space, at, n) { if (n === 0) { check.file('empty-matrix', at, `The record at byte ${at} is an miMATRIX of 0 bytes: MATLAB fails the load. ` + 'Only a matrix inside another may be empty.'); return { at, name: null, subsystem: false }; } - const info = topMatrix(check, file, at, at + 8, at + 8 + n); + const info = topMatrix(check, space, at, 8, 8 + n); if (n % 8 !== 0) { check.file('framing', at, `The record at byte ${at} declares ${n} bytes, not a whole number of 8-byte words: ` + 'a plain record ends padded to 8 bytes, so this one is missing its final pad, and MATLAB fails the load.', info.name || undefined); @@ -432,8 +639,13 @@ function plainRecord(check, file, at, n) { /** * A compressed record: one zlib stream (RFC 1950) that inflates to one miMATRIX and nothing * else, and ends at the record's last byte. Its matrix is then checked in the inflated bytes. + * + * `given`, when there is one, is what `inflateZlib` made of `payload` for the caller already (MatParser + * keeps it, MatVariable._rawBytes), taken for the inflate rather than inflating the payload + * again: the same function of the same bytes, so the same bytes, spent from the budget as an + * inflate of them is. Nothing else of what the caller read is taken. */ -function compressedRecord(check, payload, at) { +function compressedRecord(check, payload, at, given) { const unread = { at, name: null, subsystem: false }; // Said once the record's name is known, if it can be, and ahead of what its matrix breaks. const faults = []; @@ -459,7 +671,10 @@ function compressedRecord(check, payload, at) { const ceiling = Math.min(check.inflateLeft, MAT_RECORD_INFLATE_CEILING); let inflated; try { - inflated = inflateZlib(payload, ceiling); + if (given && given.byteLength > ceiling) { + throw new InflateCeilingError(ceiling); + } + inflated = given ?? inflateZlib(payload, ceiling); } catch (err) { if (err instanceof InflateCeilingError) { @@ -475,9 +690,10 @@ function compressedRecord(check, payload, at) { check.inflateLeft -= inflated.byteLength; // The stream ends with the Adler-32 of what it inflates to, so a record whose last four // bytes are that checksum ends where its stream does. Anything else is bytes after the - // stream, which MATLAB's record never has, or a checksum that is wrong. + // stream, which MATLAB's record never has, or a checksum that is wrong. Not asked for a + // record's name alone (headOnly), which it does not change. const trailer = new DataView(payload.buffer, payload.byteOffset + payload.byteLength - 4, 4).getUint32(0, false); - if (trailer !== adler32(inflated)) { + if (!check.headOnly && trailer !== adler32(inflated)) { fault('does not end with its zlib stream\'s checksum: bytes follow the stream inside the record, or the ' + 'checksum is wrong. MATLAB writes a record as exactly its stream'); } @@ -598,6 +814,9 @@ function topMatrix(check, space, at, start, end) { info.name = recordName(check, at, head.name); const stream = info.name === '' ? subsystemStream(space, head, end) : null; info.subsystem = stream !== null; + if (check.headOnly) { + return info; + } const p = classBody(check, space, head, end, 0); if (p !== null) { fillsExactly(check, space, p, end); diff --git a/dist/datamodel/parser/MatFileCheck.js.map b/dist/datamodel/parser/MatFileCheck.js.map index c7d01ee7..349ee384 100644 --- a/dist/datamodel/parser/MatFileCheck.js.map +++ b/dist/datamodel/parser/MatFileCheck.js.map @@ -1 +1 @@ -{"version":3,"file":"MatFileCheck.js","sourceRoot":"","sources":["../../../src/datamodel/parser/MatFileCheck.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"MatFileCheck.js","sourceRoot":"","sources":["../../../src/datamodel/parser/MatFileCheck.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/parser/MatFileWriter.d.ts b/dist/datamodel/parser/MatFileWriter.d.ts index b87a95b3..18d78e17 100644 --- a/dist/datamodel/parser/MatFileWriter.d.ts +++ b/dist/datamodel/parser/MatFileWriter.d.ts @@ -1,5 +1,6 @@ import type { MatRecord } from './MatParser.js'; import { MatWriteError } from './MatWriter.js'; +import type { MatCheckOptions } from './MatFileCheck.js'; import type BaseNode from '../node/BaseNode.js'; import type MatNode from '../node/container/MatNode.js'; /** @@ -7,8 +8,11 @@ import type MatNode from '../node/container/MatNode.js'; * everything else as the bytes it was read from. Throws MatWriteError, naming the variable or * the file and why, for anything it cannot write as what it is (see the file header), and * never hands back bytes that did not read back as planned. + * + * `check` is the budget of the check of what was written (MatFileCheck), its own by default: + * for tests, which cannot make a file a gigabyte past it. */ -export declare function serializeMatFile(matNode: MatNode): Uint8Array; +export declare function serializeMatFile(matNode: MatNode, check?: MatCheckOptions): Uint8Array; /** * The refusal of every save of `matNode`, an unedited one included, or null: a tree opened * without the records a save writes back, one whose bytes the host has since handed away, and @@ -66,4 +70,11 @@ export declare function unwritableIn(at: BaseNode): { path: string; what: string; } | null; +/** + * The miCOMPRESSED record of `stream`, the zlib stream of the variable `name`'s element: its tag + * and the stream. Refused for a stream of 4 GiB or more, whose length the tag's 32 bits cannot + * say: written, its length would wrap, and the record would declare a few bytes of a stream that + * goes on. Exported for test/matFileSave.test.ts, which holds it to that without a stream so big. + */ +export declare function compressedRecordOf(stream: Uint8Array, name: string): Uint8Array; //# sourceMappingURL=MatFileWriter.d.ts.map \ No newline at end of file diff --git a/dist/datamodel/parser/MatFileWriter.d.ts.map b/dist/datamodel/parser/MatFileWriter.d.ts.map index 60869bea..1866756b 100644 --- a/dist/datamodel/parser/MatFileWriter.d.ts.map +++ b/dist/datamodel/parser/MatFileWriter.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"MatFileWriter.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/MatFileWriter.ts"],"names":[],"mappings":"AAwDA,OAAO,KAAK,EAAE,SAAS,EAA0B,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAkB,aAAa,EAAgD,MAAM,gBAAgB,CAAC;AAK7G,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAEhD,OAAO,KAAK,OAAO,MAAM,8BAA8B,CAAC;AAMxD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,CAuB7D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,GAAG,IAAI,CA6BvE;AAsBD,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,SAAS,GAAG,IAAI,CAKpF;AAgED,wGAAwG;AACxG,eAAO,MAAM,cAAc,QAEmC,CAAC;AAE/D;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,GAAG,aAAa,GAAG,IAAI,CAmB1H;AAkBD,oIAAoI;AACpI,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAmCD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAQ1D;AA0BD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,GAAG,aAAa,GAAG,IAAI,CAwC3F;AAsLD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAOhF"} \ No newline at end of file +{"version":3,"file":"MatFileWriter.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/MatFileWriter.ts"],"names":[],"mappings":"AA0DA,OAAO,KAAK,EAAE,SAAS,EAA0B,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAkB,aAAa,EAAgD,MAAM,gBAAgB,CAAC;AAE7G,OAAO,KAAK,EAAE,eAAe,EAAsC,MAAM,mBAAmB,CAAC;AAG7F,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAEhD,OAAO,KAAK,OAAO,MAAM,8BAA8B,CAAC;AAMxD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,GAAE,eAAoB,GAAG,UAAU,CAuB1F;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,GAAG,IAAI,CA6BvE;AAuBD,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,SAAS,GAAG,IAAI,CAKpF;AAgED,wGAAwG;AACxG,eAAO,MAAM,cAAc,QAEmC,CAAC;AAE/D;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,GAAG,aAAa,GAAG,IAAI,CAmB1H;AAmBD,oIAAoI;AACpI,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAmCD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAQ1D;AA0BD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,GAAG,aAAa,GAAG,IAAI,CAwC3F;AAsLD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAOhF;AAiGD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAO/E"} \ No newline at end of file diff --git a/dist/datamodel/parser/MatFileWriter.js b/dist/datamodel/parser/MatFileWriter.js index 66afc4a0..97c4c72a 100644 --- a/dist/datamodel/parser/MatFileWriter.js +++ b/dist/datamodel/parser/MatFileWriter.js @@ -41,9 +41,11 @@ // reader did not decode, whose edit this writer cannot write; a variable stored in a form MATLAB // does not load as it is, whose value as read is this reader's guess at it; a variable stored // after the subsystem, where MATLAB does not read it; a file whose records do not tile it, or that was -// opened without them. And before the bytes are handed back they are read again, and a record -// that does not read back as planned refuses the save as well (selfCheck), as does one that breaks -// a rule MATLAB loads a file by that the file it was read from did not break (MatFileCheck). +// opened without them. And before the bytes are handed back, every record written anew is read +// again, and one that does not read back as planned refuses the save as well (selfCheck), as does +// a file that breaks a rule MATLAB loads a file by that the file it was read from did not break +// (MatFileCheck). Both are asked of what the save changed, and of where every record stands: a +// record written as its own bytes is the record it was read as, and breaks what that one broke. // // The editor takes none of the edits refused for what a variable is or where it stands: its gate // (MatNode._editRefusal) is built of the refusals exported here (unsavableRefusal, @@ -54,7 +56,7 @@ import { zlibSync } from 'fflate'; import { inflateZlib } from './Inflate.js'; import { parseMat, functionHandleOf } from './MatParser.js'; import { MatBudgetError, MatWriteError, classPhrase, elementNamed, encodeMatVariable } from './MatWriter.js'; -import { checkMatElement, checkMatFile, violationsAdded } from './MatFileCheck.js'; +import { checkMatElement, violationsAddedBySplice } from './MatFileCheck.js'; import { integerConversion } from './XmlUtils.js'; import { validateMatlabName } from '../matlabName.js'; const MI_MATRIX = 14; @@ -64,8 +66,11 @@ const MI_COMPRESSED = 15; * everything else as the bytes it was read from. Throws MatWriteError, naming the variable or * the file and why, for anything it cannot write as what it is (see the file header), and * never hands back bytes that did not read back as planned. + * + * `check` is the budget of the check of what was written (MatFileCheck), its own by default: + * for tests, which cannot make a file a gigabyte past it. */ -export function serializeMatFile(matNode) { +export function serializeMatFile(matNode, check = {}) { const file = matNode.name; const unsavable = unsavableRefusal(matNode); if (unsavable) { @@ -77,15 +82,15 @@ export function serializeMatFile(matNode) { const plan = planOf(matNode, records, subsystem); // Nothing deleted, renamed, edited or added: the file, as it was read. if (plan.length === records.length && plan.every((p, i) => p.kind === 'verbatim' && p.record === records[i])) { - return concat([headerBytes, ...records.map((r) => r.bytes)]); + return concat([headerBytes, ...records.map((r) => r.bytes)], fileTooBig(file)); } const structure = structureRefusal(matNode, records, subsystem); if (structure) { throw structure; } - const assembled = assemble(headerBytes, plan, subsystem); - selfCheck(file, assembled.bytes, plan, assembled, headerBytes); - refuseWorse(file, assembled.bytes, plan, headerBytes, records); + const assembled = assemble(file, headerBytes, plan, subsystem); + selfCheck(file, assembled, plan, headerBytes); + refuseWorse(file, assembled, plan, headerBytes, records, check); return assembled.bytes; } /** @@ -221,7 +226,8 @@ export function structureRefusal(matNode, records, subsystem) { } // Two records of one name: MATLAB loads one of them (measured against MATLAB R2027a: `load f` // keeps the last, `load f x` the first). A file that holds two keeps them, as it was read; a -// rename or an addition that would make two is refused, naming the variable. +// rename or an addition that would make two is refused, naming the variable. A record the reader +// could not read a name out of is held to none (MatNode._namespaceHolds says why). function refuseDuplicates(plan) { const count = new Map(); const nameOf = (p) => (p.kind === 'verbatim' ? p.record.name : p.name); @@ -264,8 +270,8 @@ function renamedOf(node, record) { if (why) { throw refusal(name, why); } - const named = elementNamed(elementOfRecord(record), name); - return { kind: 'renamed', record, name, bytes: recordBytes(named, record.compressed) }; + const element = elementOfRecord(record); + return { kind: 'renamed', record, name, bytes: recordBytes(elementNamed(element, name), record.compressed, name), element }; } /** * Why the variable read from `record` cannot be renamed, or null where it can: its record is not @@ -302,7 +308,7 @@ function freshOf(node, record, compress) { if (!named) { throw refusal(name, 'the element written for it has no name to replace'); } - return { kind: 'fresh', record, node: value, name, bytes: recordBytes(named, compress) }; + return { kind: 'fresh', record, node: value, name, bytes: recordBytes(named, compress, name) }; } /** * The refusal a save throws for writing `node` fresh, the variable `record` became or one added @@ -635,28 +641,36 @@ function elementOfRecord(record) { } return 8 + u32At(inflated, 4) === inflated.byteLength ? inflated : null; } -// A top-level record of `element`: the element itself, which MatWriter pads to 8 bytes as a plain -// record must be, or its zlib stream (RFC 1950, which MATLAB requires; level 6, MATLAB's default) -// in an miCOMPRESSED tag, with no padding after it, as MATLAB writes one. -function recordBytes(element, compress) { - if (!compress) { - return element; +// A top-level record of `element`, the variable `name`'s: the element itself, which MatWriter pads +// to 8 bytes as a plain record must be, or its zlib stream (RFC 1950, which MATLAB requires; level +// 6, MATLAB's default) in an miCOMPRESSED tag, with no padding after it, as MATLAB writes one. +function recordBytes(element, compress, name) { + return compress ? compressedRecordOf(zlibSync(element, { level: 6 }), name) : element; +} +/** + * The miCOMPRESSED record of `stream`, the zlib stream of the variable `name`'s element: its tag + * and the stream. Refused for a stream of 4 GiB or more, whose length the tag's 32 bits cannot + * say: written, its length would wrap, and the record would declare a few bytes of a stream that + * goes on. Exported for test/matFileSave.test.ts, which holds it to that without a stream so big. + */ +export function compressedRecordOf(stream, name) { + if (stream.byteLength > 0xffffffff) { + throw refusal(name, 'compressed, its element is a stream of ' + stream.byteLength + ' bytes, more than the 4 GiB a record can say it holds'); } - const stream = zlibSync(element, { level: 6 }); - return concat([u32le(MI_COMPRESSED), u32le(stream.byteLength), stream]); + return concat([u32le(MI_COMPRESSED), u32le(stream.byteLength), stream], (total) => refusal(name, 'its record would be ' + total + ' bytes, more than this runtime holds in one buffer')); } // The header and the planned records, back to back. The header is the file's own: its text // (bytes 0-115, which MATLAB keeps on `-append` and never reads), and its version and byte-order // mark (124-127). Bytes 116-123 are the subsystem's new offset, a little-endian uint64, or, in a // file with no subsystem, the file's own: zeros or spaces, both of which MATLAB reads as none. -function assemble(headerBytes, plan, subsystem) { +function assemble(file, headerBytes, plan, subsystem) { const header = headerBytes.slice(); const parts = [header]; const offsets = []; let subsystemAt = null; let at = header.byteLength; for (const p of plan) { - const bytes = p.kind === 'verbatim' ? p.record.bytes : p.bytes; + const bytes = bytesOf(p); offsets.push(at); if (p.kind === 'verbatim' && p.record === subsystem) { subsystemAt = at; @@ -667,66 +681,77 @@ function assemble(headerBytes, plan, subsystem) { if (subsystemAt !== null) { new DataView(header.buffer, header.byteOffset, header.byteLength).setBigUint64(116, BigInt(subsystemAt), true); } - return { bytes: concat(parts), offsets, subsystemAt }; + return { bytes: concat(parts, fileTooBig(file)), offsets, subsystemAt }; +} +// The bytes a planned record is written as: a record of the file's own, or the ones written for it. +function bytesOf(p) { + return p.kind === 'verbatim' ? p.record.bytes : p.bytes; +} +// The refusal of a file of `total` bytes, more than one buffer here holds (concat). +function fileTooBig(file) { + return (total) => new MatWriteError('Cannot save "' + file + '": the file written for it would be ' + total + ' bytes, more than this runtime holds in one buffer. ' + + 'Nothing was written.'); } // ---- The self-check --------------------------------------------------------------------------- // -// The bytes about to be handed back, read again by this package's reader, against the plan: the -// header kept, and saying where the subsystem now is; the records the ones planned, at the offsets -// planned, and every one of them framed; each record written as its own bytes those bytes; each -// renamed one named as planned and, but for its name, its element byte for byte; each written -// fresh named as planned and reading back as the value it was written from, its class, size and -// every element. Any difference refuses the save. +// The bytes about to be handed back, against the plan: the header kept, and saying where the +// subsystem now is; the records the ones planned, back to back from byte 128 to the last byte, +// each at the offset planned and framed as the reader frames one; and every record written anew +// read again by this package's reader, alone: each renamed one named as planned and, but for its +// name, its element byte for byte; each written fresh named as planned and reading back as the +// value it was written from, its class, size and every element. Any difference refuses the save. +// +// A record written as its own bytes is not read again: it is the record the file was read as, +// whole (unsavableRefusal: not one byte of it handed away since), copied by assemble at the +// offset this checks. Reading it again would read the reader's own reading of the same bytes, at +// the cost of inflating every compressed record of the file at every save. // // This proves what was written is what was planned, and not that MATLAB loads it: this reader // reads files MATLAB refuses. That is refuseWorse's to ask, of the other judge. -function selfCheck(file, bytes, plan, assembled, headerBytes) { +function selfCheck(file, assembled, plan, headerBytes) { const fail = (why) => { throw new MatWriteError('Cannot save "' + file + '": the file written for it did not read back as written: ' + why + '. Nothing was written.'); }; - let parsed; - try { - // `bytes` is the whole of its buffer (concat), which the reader may take as it is. - parsed = parseMat(bytes.buffer); - } - catch (e) { - return fail('it does not open (' + (e instanceof Error ? e.message : String(e)) + ')'); - } - if (!parsed.framed) { - return fail('its records do not tile it (' + (parsed.unframed?.reason ?? '') + ')'); - } - const head = parsed.headerBytes; + const { bytes, offsets } = assembled; + const head = bytes.subarray(0, 128); if (!sameBytes(head.subarray(0, 116), headerBytes.subarray(0, 116)) || !sameBytes(head.subarray(124), headerBytes.subarray(124))) { return fail('its header is not the one it was read with'); } const subsystemSaid = assembled.subsystemAt ?? 0; - if (parsed.subsystemOffset !== subsystemSaid) { - return fail('its header places its objects at byte ' + parsed.subsystemOffset + ', and they are at byte ' + subsystemSaid); - } - if (parsed.records.length !== plan.length) { - return fail('it holds ' + parsed.records.length + ' record(s) where ' + plan.length + ' were written'); + const offsetSaid = head.subarray(116, 124).every((b) => b === 0x20) ? 0 : Number(new DataView(head.buffer, head.byteOffset + 116, 8).getBigUint64(0, true)); + if (offsetSaid !== subsystemSaid) { + return fail('its header places its objects at byte ' + offsetSaid + ', and they are at byte ' + subsystemSaid); } + let end = 128; plan.forEach((p, i) => { - const got = parsed.records[i]; - const at = assembled.offsets[i]; - if (got.offset !== at) { - fail('a record starts at byte ' + got.offset + ' where one was written at byte ' + at); + const record = bytesOf(p); + if (offsets[i] !== end) { + fail('a record was written at byte ' + offsets[i] + ', where the one before it ends at byte ' + end); } + if (p.kind === 'verbatim' && record.byteLength !== p.record.length) { + fail('the record at byte ' + end + ' holds ' + record.byteLength + ' of the ' + p.record.length + ' bytes it was read as'); + } + if (!framedAsRead(record) || u32At(bytes, end) !== u32At(record, 0) || u32At(bytes, end + 4) !== u32At(record, 4)) { + fail('the record at byte ' + end + ' is not framed as the record written there'); + } + end += record.byteLength; + }); + if (end !== bytes.byteLength) { + return fail('it is ' + bytes.byteLength + ' bytes, and its records end at byte ' + end); + } + plan.forEach((p, i) => { if (p.kind === 'verbatim') { - if (!sameBytes(got.bytes, p.record.bytes)) { - fail('the record at byte ' + at + ' is not the bytes it was read from'); - } return; } - if (got.status !== 'read' || got.anonymous || got.name !== p.name || got.variable?.name !== p.name) { - fail('the record at byte ' + at + ', written as "' + p.name + '", reads as ' + (got.status === 'read' ? '"' + got.name + '"' : 'no variable')); + const at = offsets[i]; + const got = readAlone(file, head, bytes.subarray(at, at + p.bytes.byteLength)); + if (!got || got.status !== 'read' || got.anonymous || got.name !== p.name || got.variable?.name !== p.name) { + fail('the record at byte ' + at + ', written as "' + p.name + '", reads as ' + (got?.status === 'read' ? '"' + got.name + '"' : 'no variable')); } if (p.kind === 'renamed') { - const before = elementOfRecord(p.record); - const after = elementOfRecord(got); - const unnamed = (e) => (e ? elementNamed(e, '') : null); - const was = unnamed(before); - const is = unnamed(after); + const unnamed = (e) => (e && wholeElement(e) ? elementNamed(e, '') : null); + const was = unnamed(p.element); + const is = unnamed(got.variable._rawBytes); if (!was || !is || !sameBytes(was, is)) { fail('"' + p.name + '" is not, but for its name, the element it was read as'); } @@ -743,6 +768,38 @@ function selfCheck(file, bytes, plan, assembled, headerBytes) { } }); } +// Whether `record` is framed as MatParser frames a record of a file it calls framed: its tag's 8 +// bytes and exactly the bytes they declare, which for a plain record are a whole number of 8-byte +// words; and a tag that is neither the zero one the reader stops at nor a small element's. +function framedAsRead(record) { + if (record.byteLength < 8) { + return false; + } + const type = u32At(record, 0); + const n = u32At(record, 4); + if (8 + n !== record.byteLength) { + return false; + } + return type === MI_COMPRESSED || (n % 8 === 0 && !(type === 0 && n === 0) && !(type >>> 16 !== 0 && (type & 0xffff) !== 0)); +} +// The one record of a file of `header` and `record`, as this package's reader reads it, or null +// where it reads that file as anything else. +function readAlone(file, header, record) { + // The whole of a buffer of its own (concat), which the reader may take as it is. + const alone = concat([header, record], fileTooBig(file)); + let parsed; + try { + parsed = parseMat(alone.buffer); + } + catch { + return null; + } + return parsed.framed && parsed.records.length === 1 ? parsed.records[0] : null; +} +// Whether `element` is one miMATRIX element, its tag and exactly the bytes it declares. +function wholeElement(element) { + return element.byteLength >= 8 && u32At(element, 0) === MI_MATRIX && 8 + u32At(element, 4) === element.byteLength; +} // The bytes about to be handed back, judged by the rules MATLAB loads a file by (MatFileCheck), // which this package's reader does not hold a file to: the save is refused when they break a rule // the file they were read from did not break. A file that was read breaking one (two variables of @@ -750,30 +807,42 @@ function selfCheck(file, bytes, plan, assembled, headerBytes) { // Compared by rule and variable, not by offset, which every edit before a record moves; a // variable renamed is compared under the name the file it was read from gave it. // -// The file as read is checked once, and its violations kept with its records: they are the bytes -// it was read from, and no edit changes them. -function refuseWorse(file, bytes, plan, headerBytes, records) { - let before = originalViolations.get(records); - if (!before) { - before = checkMatFile(concat([headerBytes, ...records.map((r) => r.bytes)])); - originalViolations.set(records, before); - } +// Judged where the save changed the file (violationsAddedBySplice): every record written anew and +// the record it replaces, the header, and where every record stands. A record written as its own +// bytes breaks what it broke as read, and the two are the same answer; so a save costs what it +// changed, and a file too big for the check's budget whole can still be saved where its edits +// are small. Phase 2, which writes the subsystem anew, hands it in as a record written in place of +// the subsystem's (MatSplicedRecord `replaces`), and it is checked whole as every written one is. +function refuseWorse(file, assembled, plan, headerBytes, records, check) { + const index = new Map(records.map((r, i) => [r, i])); const renamed = new Map(); - for (const p of plan) { - if (p.kind !== 'verbatim' && p.record?.name && p.record.name !== p.name) { + const written = plan.map((p, i) => { + if (p.kind === 'verbatim') { + return { kept: index.get(p.record) }; + } + if (p.record?.name && p.record.name !== p.name) { renamed.set(p.name, p.record.name); } + const at = assembled.offsets[i]; + return { written: assembled.bytes.subarray(at, at + p.bytes.byteLength), replaces: p.record ? index.get(p.record) : null }; + }); + const added = violationsAddedBySplice( + // A compressed record's inflate, as the reader holds it (MatVariable._rawBytes): inflateZlib's + // of the record's own bytes, so that the check does not inflate the file again. + { header: headerBytes, records: records.map((r) => ({ bytes: r.bytes, inflated: r.compressed ? r.variable?._rawBytes : null })) }, { header: assembled.bytes.subarray(0, 128), records: written }, renamed, check); + const broken = added.filter((v) => v.code !== 'budget'); + if (broken.length > 0) { + const more = broken.length - 1; + throw new MatWriteError('Cannot save "' + file + '": the file written for it breaks a rule MATLAB loads a file by, which the file it was read ' + + 'from does not: ' + broken[0].message + (more > 0 ? ' It breaks ' + more + ' more as well.' : '') + ' Nothing was written.'); } - const added = violationsAdded(before, checkMatFile(bytes), renamed); if (added.length > 0) { - const more = added.length - 1; - throw new MatWriteError('Cannot save "' + file + '": the file written for it breaks a rule MATLAB loads a file by, which the file it was read ' - + 'from does not: ' + added[0].message + (more > 0 ? ' It breaks ' + more + ' more as well.' : '') + ' Nothing was written.'); + // The check stopped before it had judged all of what the save wrote: nothing is known + // broken, and nothing is known to load. + throw new MatWriteError('Cannot save "' + file + '": the file written for it could not be verified within the check\'s budget against the rules ' + + 'MATLAB loads a file by (' + added[0].message.replace(/\.$/, '') + '), so it is not known to load. Nothing was written.'); } } -// What MatFileCheck says of the file a MatNode was read from, by its records (MatNode.records), -// which are that file's bytes for as long as the node is. -const originalViolations = new WeakMap(); // Where the value read back, `read`, is not the value `model` it was written from, in words, or // null where it is that value: the same class, complexity, storage and size, the same members of a // cell, the same fields of a struct in the same order, and each element the same number as its @@ -935,12 +1004,24 @@ function flatValues(value) { return Array.isArray(value) ? value : [value]; } // ---- Bytes ------------------------------------------------------------------------------------ -function concat(parts) { +// `parts`, back to back in a buffer of their own; or, past the most bytes the runtime holds in one +// buffer, `tooBig`'s refusal of that many, rather than the RangeError the runtime throws, which +// says nothing of what was being written. +function concat(parts, tooBig) { let total = 0; for (const p of parts) { total += p.byteLength; } - const out = new Uint8Array(total); + let out; + try { + out = new Uint8Array(total); + } + catch (e) { + if (e instanceof RangeError) { + throw tooBig(total); + } + throw e; + } let at = 0; for (const p of parts) { out.set(p, at); diff --git a/dist/datamodel/parser/MatFileWriter.js.map b/dist/datamodel/parser/MatFileWriter.js.map index c232d48e..41ba1243 100644 --- a/dist/datamodel/parser/MatFileWriter.js.map +++ b/dist/datamodel/parser/MatFileWriter.js.map @@ -1 +1 @@ -{"version":3,"file":"MatFileWriter.js","sourceRoot":"","sources":["../../../src/datamodel/parser/MatFileWriter.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"MatFileWriter.js","sourceRoot":"","sources":["../../../src/datamodel/parser/MatFileWriter.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/datamodel/parser/MatFileCheck.ts b/src/datamodel/parser/MatFileCheck.ts index c5dee323..ea807906 100644 --- a/src/datamodel/parser/MatFileCheck.ts +++ b/src/datamodel/parser/MatFileCheck.ts @@ -57,7 +57,9 @@ // WHAT IT IS FOR. The `.mat` save checks the file it writes, and refuses to return it if it has // a violation the original did not. A violation is therefore said with the variable it is in, // when that has a readable name, so two files can be compared by variable rather than by an -// offset an edit moved (violationsAdded). +// offset an edit moved (violationsAdded). And since what a record breaks is a function of its +// own bytes, the save asks it only where it changed the file, with the same answer +// (violationsAddedBySplice). // // BOUNDED. A file's bytes say how much work reading them is, and a hostile one can say a lot: // a few kilobytes of zlib inflate to gigabytes, and a cell can declare a billion elements. So @@ -240,9 +242,9 @@ class OutOfBudget extends Error { } /** - * The bytes a matrix is read out of: the file itself, or a compressed record's payload, - * inflated. `fileAt` is the file offset a violation at `o` is reported at, and `where` says - * where `o` is, in words. + * The bytes a matrix is read out of: a plain record's own (recordSpace), or a compressed + * record's payload, inflated. `fileAt` is the file offset a violation at `o` is reported at, + * and `where` says where `o` is, in words. */ interface Space { view: DataView; @@ -250,8 +252,9 @@ interface Space { where(o: number): string; } -function fileSpace(view: DataView): Space { - return { view, fileAt: (o) => o, where: (o) => `Byte ${o}` }; +/** One top-level record's bytes, from its tag, as the record at byte `at` of its file. */ +function recordSpace(view: DataView, at: number): Space { + return { view, fileAt: (o) => at + o, where: (o) => `Byte ${at + o}` }; } function payloadSpace(view: DataView, record: number): Space { @@ -305,6 +308,12 @@ class Check { variable: string | undefined; /** Whether the walk is inside the subsystem's stream, which belongs to no variable. */ inSubsystem = false; + /** + * Whether only what the placement rules need of a record is read (its name, and whether it + * holds the subsystem), and nothing past it: what a record kept as its own bytes is asked + * in a splice (violationsAddedBySplice), whose violations are the file's as read already. + */ + headOnly = false; constructor(options: MatCheckOptions) { this.maxElements = options.maxElements ?? MAT_CHECK_ELEMENT_BUDGET; @@ -351,9 +360,7 @@ export function checkMatFile(bytes: Uint8Array, options: MatCheckOptions = {}): } catch (err) { // A budget run out, or, if this module has a defect, any other throw: either way the // check did not finish, and that is said rather than thrown, at the record it was in. - const at = err instanceof OutOfBudget ? err.at : check.cursor; - const why = err instanceof OutOfBudget ? err.message : `an error in the check itself (${reasonOf(err)})`; - check.file('budget', at, `The check stopped at byte ${at}, at ${why}, so nothing from there on was checked.`); + check.file('budget', ...stoppedAt(err, check.cursor)); } // Stable, so the violations of one place keep the order they were found in. return check.out.sort((a, b) => a.at - b.at); @@ -420,6 +427,230 @@ export function violationsAdded( return added; } +/** A record of a file as read, for violationsAddedBySplice: its bytes, from its tag. */ +export interface MatReadRecord { + bytes: Uint8Array; + /** + * Its payload as `inflateZlib` inflated it, for a compressed record whose inflate the caller + * holds already (MatParser keeps it, MatVariable._rawBytes), so that it is not inflated again. + */ + inflated?: Uint8Array | null; +} + +/** + * A record of a file written from another (violationsAddedBySplice): a record of that file kept + * as its own bytes (`kept`, its index), or bytes written in place of one of its records + * (`replaces`, its index: a variable renamed or written fresh, and the subsystem, when a save + * writes it anew) or of none (`replaces` null: a variable added). + */ +export type MatSplicedRecord = { kept: number } | { written: Uint8Array; replaces: number | null }; + +/** A Level-5 file as its 128-byte header and its records, back to back from byte 128. */ +export interface MatFileOfRecords { + header: Uint8Array; + records: readonly R[]; +} + +/** + * What `written` adds to `read` by the rules MATLAB loads a file by, as + * `violationsAdded(checkMatFile(read), checkMatFile(written), renamed)` says it, where `written` + * is `read` with some of its records kept as their own bytes, the others deleted or written anew, + * and records added: worked out from what changed, rather than by checking both files whole. + * + * WHY IT IS THE SAME ANSWER. What a record breaks depends on its bytes alone (checkRecord, which + * checkMatFile walks every record with: `at` only places what is said). So a record kept as its + * own bytes breaks in `written` what it broke in `read`, under the same variable, and the two + * cancel, by rule and variable, as violationsAdded counts them. What is left to compare is the + * records written, the records they replace, the header, and the rules of where records stand + * (checkPlacement), which are asked of both files whole, from each record's name and whether it + * holds the subsystem: of a kept record, read without walking the rest of it (Check.headOnly). + * That holds where three things do, and where one does not both files are checked whole: + * + * - both files walk as their records are given: every record's tag declares exactly the bytes + * it is given, and opens with a nonzero byte, which the tag of a type that is a multiple of + * 256 does not, and which the walk then takes for padding; + * - no record of `read` is kept twice, or kept and replaced; + * - no kept record holds a name `renamed` maps, which violationsAdded would compare its + * violations under the other name of. + * + * A record deleted is one more in `read` than in `written`, which can only take from what is + * added: it is checked only when something is. + * + * THE BUDGET (MatCheckOptions) is spent on what is checked, the records written and the ones + * they replace, and not on the records kept, which are not walked: so a file past it is still + * checked where it changed, where checkMatFile of it would stop. A `budget` note on the written + * side is added, as violationsAdded adds every one; one on the read side only leaves less for a + * written record's violations to be matched with. A kept record whose name cannot be read within + * the budget is a `budget` note on the written side: where it stands cannot be judged. + */ +export function violationsAddedBySplice( + read: MatFileOfRecords, + written: MatFileOfRecords, + renamed: ReadonlyMap = new Map(), + options: MatCheckOptions = {}, +): MatViolation[] { + const readBytes = read.records.map((r) => r.bytes); + const writtenBytes = written.records.map((r) => { + if ('kept' in r && !read.records[r.kept]) { + throw new RangeError(`A record kept as record ${r.kept} of a file of ${read.records.length}.`); + } + return 'kept' in r ? read.records[r.kept].bytes : r.written; + }); + const whole = () => violationsAdded( + checkMatFile(joined(read.header, readBytes), options), + checkMatFile(joined(written.header, writtenBytes), options), + renamed, + ); + const taken = new Set(); + for (const r of written.records) { + const from = 'kept' in r ? r.kept : r.replaces; + if (from !== null) { + if (taken.has(from)) { + return whole(); + } + taken.add(from); + } + } + if (read.header.byteLength !== 128 || written.header.byteLength !== 128 || ![...readBytes, ...writtenBytes].every(walksAsGiven)) { + return whole(); + } + const readHeader = headerOf(read.header); + const writtenHeader = headerOf(written.header); + if (readHeader.walked !== writtenHeader.walked) { + return whole(); + } + if (!writtenHeader.walked) { + // checkMatFile reads neither file past its header. + return violationsAdded(readHeader.violations, writtenHeader.violations, renamed); + } + const readAt = offsetsOf(readBytes); + const writtenAt = offsetsOf(writtenBytes); + const heads = read.records.map((r, i) => headOf(r, readAt[i], options)); + for (const r of written.records) { + const head = 'kept' in r ? heads[r.kept] : null; + if (head && !(head instanceof OutOfBudget) && head.name && renamed.has(head.name)) { + return whole(); + } + } + + // The written side: its header, every record written, and where every record stands. + const after = new Check(options); + const writtenInfos: (RecordInfo | null)[] = []; + let walked = true; + try { + written.records.forEach((r, i) => { + if (!('kept' in r)) { + writtenInfos.push(checkRecord(after, r.written, writtenAt[i])); + return; + } + const head = heads[r.kept]; + if (head instanceof OutOfBudget) { + throw new OutOfBudget(writtenAt[i], head.message); + } + writtenInfos.push(head && { ...head, at: writtenAt[i] }); + }); + } catch (err) { + walked = false; + after.file('budget', ...stoppedAt(err, after.cursor)); + } + if (walked) { + checkPlacement(after, writtenInfos.filter((x): x is RecordInfo => x !== null), writtenHeader.offset, endOf(writtenAt, writtenBytes)); + } + const afterAll = [...writtenHeader.violations, ...after.out].sort((a, b) => a.at - b.at); + + // The read side: its header, where every record stood, the records replaced, and the records + // deleted only when what is added so far could be matched with one of theirs. + const before = new Check(options); + const readInfos = heads.map((h, i) => (h instanceof OutOfBudget ? { at: readAt[i], name: null, subsystem: false } : h)); + checkPlacement(before, readInfos.filter((x): x is RecordInfo => x !== null), readHeader.offset, endOf(readAt, readBytes)); + const checkRead = (which: number[]): boolean => { + try { + for (const i of which) { + checkRecord(before, read.records[i].bytes, readAt[i], read.records[i].inflated); + } + return true; + } catch (err) { + before.file('budget', ...stoppedAt(err, before.cursor)); + return false; + } + }; + const replaced = written.records.flatMap((r) => ('kept' in r || r.replaces === null ? [] : [r.replaces])); + const readOn = checkRead(replaced); + let added = violationsAdded([...readHeader.violations, ...before.out], afterAll, renamed); + const deleted = read.records.map((_, i) => i).filter((i) => !taken.has(i)); + if (added.some((v) => v.code !== 'budget') && deleted.length > 0 && readOn) { + checkRead(deleted); + added = violationsAdded([...readHeader.violations, ...before.out], afterAll, renamed); + } + return added; +} + +// Whether the walk of a file (walkRecords) reads `record` as the record it is given as: its tag +// declares exactly its bytes, and it does not open with a zero byte, which the walk reads as +// padding or as the end of the records. +function walksAsGiven(record: Uint8Array): boolean { + return record.byteLength >= 8 && record[0] !== 0 + && 8 + new DataView(record.buffer, record.byteOffset, 8).getUint32(4, true) === record.byteLength; +} + +// What checkMatFile says of a header, whether it reads on past it, and the subsystem's offset it gives. +function headerOf(header: Uint8Array): { violations: MatViolation[]; walked: boolean; offset: number } { + const check = new Check({}); + const walked = checkHeader(check, header); + const offset = subsystemOffset(new DataView(header.buffer, header.byteOffset, header.byteLength), header); + return { violations: check.out, walked, offset }; +} + +// What the placement rules need of the record at byte `at`, read as checkRecord reads it but no +// further (Check.headOnly), or the budget that stopped it. A compressed record whose inflate is +// held is not inflated again, and spends none of the budget. +function headOf(record: MatReadRecord, at: number, options: MatCheckOptions): RecordInfo | null | OutOfBudget { + const check = new Check(options); + check.headOnly = true; + if (record.inflated) { + check.inflateLeft = MAT_RECORD_INFLATE_CEILING; + } + try { + return checkRecord(check, record.bytes, at, record.inflated); + } catch (err) { + return err instanceof OutOfBudget ? err : new OutOfBudget(at, `an error in the check itself (${reasonOf(err)})`); + } +} + +// The place and the words of the `budget` note of a check stopped by `err` in the record at +// `cursor`: a budget run out (OutOfBudget, which says where), or a defect of the check's own. +function stoppedAt(err: unknown, cursor: number): [number, string] { + const at = err instanceof OutOfBudget ? err.at : cursor; + const why = err instanceof OutOfBudget ? err.message : `an error in the check itself (${reasonOf(err)})`; + return [at, `The check stopped at byte ${at}, at ${why}, so nothing from there on was checked.`]; +} + +// Where each of `records` starts, back to back after a 128-byte header. +function offsetsOf(records: readonly Uint8Array[]): number[] { + const out: number[] = []; + let at = 128; + for (const r of records) { + out.push(at); + at += r.byteLength; + } + return out; +} + +function endOf(offsets: readonly number[], records: readonly Uint8Array[]): number { + return offsets.length === 0 ? 128 : offsets[offsets.length - 1] + records[records.length - 1].byteLength; +} + +function joined(header: Uint8Array, records: readonly Uint8Array[]): Uint8Array { + const out = new Uint8Array(header.byteLength + endOf(offsetsOf(records), records) - 128); + out.set(header, 0); + let at = header.byteLength; + for (const r of records) { + out.set(r, at); + at += r.byteLength; + } + return out; +} + function checkFile(check: Check, bytes: Uint8Array): void { if (bytes.byteLength < 128) { check.file('short-file', 0, `The file holds ${bytes.byteLength} bytes, fewer than the 128 of a MAT-file's header.`); @@ -488,7 +719,6 @@ function subsystemOffset(view: DataView, bytes: Uint8Array): number { */ function walkRecords(check: Check, view: DataView, bytes: Uint8Array, offset: number): RecordInfo[] { const records: RecordInfo[] = []; - const file = fileSpace(view); const length = bytes.byteLength; let at = 128; while (at < length) { @@ -533,26 +763,45 @@ function walkRecords(check: Check, view: DataView, bytes: Uint8Array, offset: nu check.file('framing', at, `The file ends ${length - at} byte(s) into a record's tag: MATLAB fails the load.`); break; } - const type = view.getUint32(at, true); const n = view.getUint32(at + 4, true); if (at + 8 + n > length) { check.file('framing', at, `The record at byte ${at} declares ${n} bytes, and the file holds ${length - at - 8} ` + 'after its tag: it is cut short, and MATLAB fails the load.'); break; } - if (type === MI_MATRIX) { - records.push(plainRecord(check, file, at, n)); - } else if (type === MI_COMPRESSED) { - records.push(compressedRecord(check, bytes.subarray(at + 8, at + 8 + n), at)); - } else { - check.file('top-level-type', at, `The record at byte ${at} is a data element of ${typeName(type)}: a variable is ` - + 'stored as an miMATRIX or an miCOMPRESSED, and MATLAB fails the load on anything else.'); + const info = checkRecord(check, bytes.subarray(at, at + 8 + n), at); + if (info) { + records.push(info); } at += 8 + n; } return records; } +/** + * One top-level record, its tag and the bytes it declares, as the record at byte `at` of its + * file: checked, and what the placement rules need of it, or null for a record they do not + * see, one that is no matrix. What it breaks depends on its bytes alone: `at` places what is + * said, and nothing else of the file is read. `inflated` is a compressed record's payload, + * inflated, when the caller holds that already (violationsAddedBySplice). + */ +function checkRecord(check: Check, record: Uint8Array, at: number, inflated?: Uint8Array | null): RecordInfo | null { + check.cursor = at; + check.variable = undefined; + const view = new DataView(record.buffer, record.byteOffset, record.byteLength); + const type = view.getUint32(0, true); + const n = view.getUint32(4, true); + if (type === MI_MATRIX) { + return plainRecord(check, recordSpace(view, at), at, n); + } + if (type === MI_COMPRESSED) { + return compressedRecord(check, record.subarray(8, 8 + n), at, inflated); + } + check.file('top-level-type', at, `The record at byte ${at} is a data element of ${typeName(type)}: a variable is ` + + 'stored as an miMATRIX or an miCOMPRESSED, and MATLAB fails the load on anything else.'); + return null; +} + function zeroRun(bytes: Uint8Array, at: number): number { let end = at; while (end < bytes.byteLength && bytes[end] === 0) end++; @@ -567,13 +816,14 @@ function typeName(type: number): string { return TYPE_NAMES[type] ?? `type ${type}`; } -function plainRecord(check: Check, file: Space, at: number, n: number): RecordInfo { +// A plain record, in a space that holds it from its tag (recordSpace). +function plainRecord(check: Check, space: Space, at: number, n: number): RecordInfo { if (n === 0) { check.file('empty-matrix', at, `The record at byte ${at} is an miMATRIX of 0 bytes: MATLAB fails the load. ` + 'Only a matrix inside another may be empty.'); return { at, name: null, subsystem: false }; } - const info = topMatrix(check, file, at, at + 8, at + 8 + n); + const info = topMatrix(check, space, at, 8, 8 + n); if (n % 8 !== 0) { check.file('framing', at, `The record at byte ${at} declares ${n} bytes, not a whole number of 8-byte words: ` + 'a plain record ends padded to 8 bytes, so this one is missing its final pad, and MATLAB fails the load.', @@ -585,8 +835,13 @@ function plainRecord(check: Check, file: Space, at: number, n: number): RecordIn /** * A compressed record: one zlib stream (RFC 1950) that inflates to one miMATRIX and nothing * else, and ends at the record's last byte. Its matrix is then checked in the inflated bytes. + * + * `given`, when there is one, is what `inflateZlib` made of `payload` for the caller already (MatParser + * keeps it, MatVariable._rawBytes), taken for the inflate rather than inflating the payload + * again: the same function of the same bytes, so the same bytes, spent from the budget as an + * inflate of them is. Nothing else of what the caller read is taken. */ -function compressedRecord(check: Check, payload: Uint8Array, at: number): RecordInfo { +function compressedRecord(check: Check, payload: Uint8Array, at: number, given?: Uint8Array | null): RecordInfo { const unread: RecordInfo = { at, name: null, subsystem: false }; // Said once the record's name is known, if it can be, and ahead of what its matrix breaks. const faults: string[] = []; @@ -611,7 +866,10 @@ function compressedRecord(check: Check, payload: Uint8Array, at: number): Record const ceiling = Math.min(check.inflateLeft, MAT_RECORD_INFLATE_CEILING); let inflated: Uint8Array; try { - inflated = inflateZlib(payload, ceiling); + if (given && given.byteLength > ceiling) { + throw new InflateCeilingError(ceiling); + } + inflated = given ?? inflateZlib(payload, ceiling); } catch (err) { if (err instanceof InflateCeilingError) { if (ceiling < MAT_RECORD_INFLATE_CEILING) { @@ -626,9 +884,10 @@ function compressedRecord(check: Check, payload: Uint8Array, at: number): Record check.inflateLeft -= inflated.byteLength; // The stream ends with the Adler-32 of what it inflates to, so a record whose last four // bytes are that checksum ends where its stream does. Anything else is bytes after the - // stream, which MATLAB's record never has, or a checksum that is wrong. + // stream, which MATLAB's record never has, or a checksum that is wrong. Not asked for a + // record's name alone (headOnly), which it does not change. const trailer = new DataView(payload.buffer, payload.byteOffset + payload.byteLength - 4, 4).getUint32(0, false); - if (trailer !== adler32(inflated)) { + if (!check.headOnly && trailer !== adler32(inflated)) { fault('does not end with its zlib stream\'s checksum: bytes follow the stream inside the record, or the ' + 'checksum is wrong. MATLAB writes a record as exactly its stream'); } @@ -753,6 +1012,9 @@ function topMatrix(check: Check, space: Space, at: number, start: number, end: n info.name = recordName(check, at, head.name); const stream = info.name === '' ? subsystemStream(space, head, end) : null; info.subsystem = stream !== null; + if (check.headOnly) { + return info; + } const p = classBody(check, space, head, end, 0); if (p !== null) { fillsExactly(check, space, p, end); diff --git a/src/datamodel/parser/MatFileWriter.ts b/src/datamodel/parser/MatFileWriter.ts index beb6f56f..95301355 100644 --- a/src/datamodel/parser/MatFileWriter.ts +++ b/src/datamodel/parser/MatFileWriter.ts @@ -41,9 +41,11 @@ // reader did not decode, whose edit this writer cannot write; a variable stored in a form MATLAB // does not load as it is, whose value as read is this reader's guess at it; a variable stored // after the subsystem, where MATLAB does not read it; a file whose records do not tile it, or that was -// opened without them. And before the bytes are handed back they are read again, and a record -// that does not read back as planned refuses the save as well (selfCheck), as does one that breaks -// a rule MATLAB loads a file by that the file it was read from did not break (MatFileCheck). +// opened without them. And before the bytes are handed back, every record written anew is read +// again, and one that does not read back as planned refuses the save as well (selfCheck), as does +// a file that breaks a rule MATLAB loads a file by that the file it was read from did not break +// (MatFileCheck). Both are asked of what the save changed, and of where every record stands: a +// record written as its own bytes is the record it was read as, and breaks what that one broke. // // The editor takes none of the edits refused for what a variable is or where it stands: its gate // (MatNode._editRefusal) is built of the refusals exported here (unsavableRefusal, @@ -56,8 +58,8 @@ import { inflateZlib } from './Inflate.js'; import { parseMat, functionHandleOf } from './MatParser.js'; import type { MatRecord, MatVariable, ParsedMat } from './MatParser.js'; import { MatBudgetError, MatWriteError, classPhrase, elementNamed, encodeMatVariable } from './MatWriter.js'; -import { checkMatElement, checkMatFile, violationsAdded } from './MatFileCheck.js'; -import type { MatViolation, MatViolationCode } from './MatFileCheck.js'; +import { checkMatElement, violationsAddedBySplice } from './MatFileCheck.js'; +import type { MatCheckOptions, MatSplicedRecord, MatViolationCode } from './MatFileCheck.js'; import { integerConversion } from './XmlUtils.js'; import { validateMatlabName } from '../matlabName.js'; import type BaseNode from '../node/BaseNode.js'; @@ -73,8 +75,11 @@ const MI_COMPRESSED = 15; * everything else as the bytes it was read from. Throws MatWriteError, naming the variable or * the file and why, for anything it cannot write as what it is (see the file header), and * never hands back bytes that did not read back as planned. + * + * `check` is the budget of the check of what was written (MatFileCheck), its own by default: + * for tests, which cannot make a file a gigabyte past it. */ -export function serializeMatFile(matNode: MatNode): Uint8Array { +export function serializeMatFile(matNode: MatNode, check: MatCheckOptions = {}): Uint8Array { const file = matNode.name; const unsavable = unsavableRefusal(matNode); if (unsavable) { @@ -87,15 +92,15 @@ export function serializeMatFile(matNode: MatNode): Uint8Array { const plan = planOf(matNode, records, subsystem); // Nothing deleted, renamed, edited or added: the file, as it was read. if (plan.length === records.length && plan.every((p, i) => p.kind === 'verbatim' && p.record === records[i])) { - return concat([headerBytes, ...records.map((r) => r.bytes)]); + return concat([headerBytes, ...records.map((r) => r.bytes)], fileTooBig(file)); } const structure = structureRefusal(matNode, records, subsystem); if (structure) { throw structure; } - const assembled = assemble(headerBytes, plan, subsystem); - selfCheck(file, assembled.bytes, plan, assembled, headerBytes); - refuseWorse(file, assembled.bytes, plan, headerBytes, records); + const assembled = assemble(file, headerBytes, plan, subsystem); + selfCheck(file, assembled, plan, headerBytes); + refuseWorse(file, assembled, plan, headerBytes, records, check); return assembled.bytes; } @@ -142,8 +147,9 @@ export function unsavableRefusal(matNode: MatNode): MatWriteError | null { type Planned = // A record of the file, as its own bytes. | { kind: 'verbatim'; record: MatRecord } - // A record of the file whose variable was only renamed: its element, named `name`. - | { kind: 'renamed'; record: MatRecord; name: string; bytes: Uint8Array } + // A record of the file whose variable was only renamed: its element, named `name`, and the + // element it was read as (elementOfRecord), which the self-check holds it to. + | { kind: 'renamed'; record: MatRecord; name: string; bytes: Uint8Array; element: Uint8Array } // A value written fresh, named `name`: an edited variable's, read from `record`, or one // added since the read, with no record. | { kind: 'fresh'; record: MatRecord | null; node: MatlabVariableNode; name: string; bytes: Uint8Array }; @@ -261,7 +267,8 @@ export function structureRefusal(matNode: MatNode, records: MatRecord[], subsyst // Two records of one name: MATLAB loads one of them (measured against MATLAB R2027a: `load f` // keeps the last, `load f x` the first). A file that holds two keeps them, as it was read; a -// rename or an addition that would make two is refused, naming the variable. +// rename or an addition that would make two is refused, naming the variable. A record the reader +// could not read a name out of is held to none (MatNode._namespaceHolds says why). function refuseDuplicates(plan: Planned[]): void { const count = new Map(); const nameOf = (p: Planned) => (p.kind === 'verbatim' ? p.record.name : p.name); @@ -309,8 +316,8 @@ function renamedOf(node: BaseNode, record: MatRecord): Planned { if (why) { throw refusal(name, why); } - const named = elementNamed(elementOfRecord(record)!, name)!; - return { kind: 'renamed', record, name, bytes: recordBytes(named, record.compressed) }; + const element = elementOfRecord(record)!; + return { kind: 'renamed', record, name, bytes: recordBytes(elementNamed(element, name)!, record.compressed, name), element }; } /** @@ -350,7 +357,7 @@ function freshOf(node: BaseNode, record: MatRecord | null, compress: boolean): P if (!named) { throw refusal(name, 'the element written for it has no name to replace'); } - return { kind: 'fresh', record, node: value, name, bytes: recordBytes(named, compress) }; + return { kind: 'fresh', record, node: value, name, bytes: recordBytes(named, compress, name) }; } /** @@ -696,15 +703,26 @@ function elementOfRecord(record: MatRecord): Uint8Array | null { return 8 + u32At(inflated, 4) === inflated.byteLength ? inflated : null; } -// A top-level record of `element`: the element itself, which MatWriter pads to 8 bytes as a plain -// record must be, or its zlib stream (RFC 1950, which MATLAB requires; level 6, MATLAB's default) -// in an miCOMPRESSED tag, with no padding after it, as MATLAB writes one. -function recordBytes(element: Uint8Array, compress: boolean): Uint8Array { - if (!compress) { - return element; +// A top-level record of `element`, the variable `name`'s: the element itself, which MatWriter pads +// to 8 bytes as a plain record must be, or its zlib stream (RFC 1950, which MATLAB requires; level +// 6, MATLAB's default) in an miCOMPRESSED tag, with no padding after it, as MATLAB writes one. +function recordBytes(element: Uint8Array, compress: boolean, name: string): Uint8Array { + return compress ? compressedRecordOf(zlibSync(element, { level: 6 }), name) : element; +} + +/** + * The miCOMPRESSED record of `stream`, the zlib stream of the variable `name`'s element: its tag + * and the stream. Refused for a stream of 4 GiB or more, whose length the tag's 32 bits cannot + * say: written, its length would wrap, and the record would declare a few bytes of a stream that + * goes on. Exported for test/matFileSave.test.ts, which holds it to that without a stream so big. + */ +export function compressedRecordOf(stream: Uint8Array, name: string): Uint8Array { + if (stream.byteLength > 0xffffffff) { + throw refusal(name, 'compressed, its element is a stream of ' + stream.byteLength + ' bytes, more than the 4 GiB a record can say it holds'); } - const stream = zlibSync(element, { level: 6 }); - return concat([u32le(MI_COMPRESSED), u32le(stream.byteLength), stream]); + return concat([u32le(MI_COMPRESSED), u32le(stream.byteLength), stream], (total) => + refusal(name, 'its record would be ' + total + ' bytes, more than this runtime holds in one buffer'), + ); } // ---- Assembly --------------------------------------------------------------------------------- @@ -720,14 +738,14 @@ interface Assembled { // (bytes 0-115, which MATLAB keeps on `-append` and never reads), and its version and byte-order // mark (124-127). Bytes 116-123 are the subsystem's new offset, a little-endian uint64, or, in a // file with no subsystem, the file's own: zeros or spaces, both of which MATLAB reads as none. -function assemble(headerBytes: Uint8Array, plan: Planned[], subsystem: MatRecord | null): Assembled { +function assemble(file: string, headerBytes: Uint8Array, plan: Planned[], subsystem: MatRecord | null): Assembled { const header = headerBytes.slice(); const parts: Uint8Array[] = [header]; const offsets: number[] = []; let subsystemAt: number | null = null; let at = header.byteLength; for (const p of plan) { - const bytes = p.kind === 'verbatim' ? p.record.bytes : p.bytes; + const bytes = bytesOf(p); offsets.push(at); if (p.kind === 'verbatim' && p.record === subsystem) { subsystemAt = at; @@ -738,84 +756,134 @@ function assemble(headerBytes: Uint8Array, plan: Planned[], subsystem: MatRecord if (subsystemAt !== null) { new DataView(header.buffer, header.byteOffset, header.byteLength).setBigUint64(116, BigInt(subsystemAt), true); } - return { bytes: concat(parts), offsets, subsystemAt }; + return { bytes: concat(parts, fileTooBig(file)), offsets, subsystemAt }; +} + +// The bytes a planned record is written as: a record of the file's own, or the ones written for it. +function bytesOf(p: Planned): Uint8Array { + return p.kind === 'verbatim' ? p.record.bytes : p.bytes; +} + +// The refusal of a file of `total` bytes, more than one buffer here holds (concat). +function fileTooBig(file: string): (total: number) => MatWriteError { + return (total) => new MatWriteError( + 'Cannot save "' + file + '": the file written for it would be ' + total + ' bytes, more than this runtime holds in one buffer. ' + + 'Nothing was written.', + ); } // ---- The self-check --------------------------------------------------------------------------- // -// The bytes about to be handed back, read again by this package's reader, against the plan: the -// header kept, and saying where the subsystem now is; the records the ones planned, at the offsets -// planned, and every one of them framed; each record written as its own bytes those bytes; each -// renamed one named as planned and, but for its name, its element byte for byte; each written -// fresh named as planned and reading back as the value it was written from, its class, size and -// every element. Any difference refuses the save. +// The bytes about to be handed back, against the plan: the header kept, and saying where the +// subsystem now is; the records the ones planned, back to back from byte 128 to the last byte, +// each at the offset planned and framed as the reader frames one; and every record written anew +// read again by this package's reader, alone: each renamed one named as planned and, but for its +// name, its element byte for byte; each written fresh named as planned and reading back as the +// value it was written from, its class, size and every element. Any difference refuses the save. +// +// A record written as its own bytes is not read again: it is the record the file was read as, +// whole (unsavableRefusal: not one byte of it handed away since), copied by assemble at the +// offset this checks. Reading it again would read the reader's own reading of the same bytes, at +// the cost of inflating every compressed record of the file at every save. // // This proves what was written is what was planned, and not that MATLAB loads it: this reader // reads files MATLAB refuses. That is refuseWorse's to ask, of the other judge. -function selfCheck(file: string, bytes: Uint8Array, plan: Planned[], assembled: Assembled, headerBytes: Uint8Array): void { +function selfCheck(file: string, assembled: Assembled, plan: Planned[], headerBytes: Uint8Array): void { const fail = (why: string): never => { throw new MatWriteError('Cannot save "' + file + '": the file written for it did not read back as written: ' + why + '. Nothing was written.'); }; - let parsed: ParsedMat; - try { - // `bytes` is the whole of its buffer (concat), which the reader may take as it is. - parsed = parseMat(bytes.buffer as ArrayBuffer); - } catch (e) { - return fail('it does not open (' + (e instanceof Error ? e.message : String(e)) + ')'); - } - if (!parsed.framed) { - return fail('its records do not tile it (' + (parsed.unframed?.reason ?? '') + ')'); - } - const head = parsed.headerBytes; + const { bytes, offsets } = assembled; + const head = bytes.subarray(0, 128); if (!sameBytes(head.subarray(0, 116), headerBytes.subarray(0, 116)) || !sameBytes(head.subarray(124), headerBytes.subarray(124))) { return fail('its header is not the one it was read with'); } const subsystemSaid = assembled.subsystemAt ?? 0; - if (parsed.subsystemOffset !== subsystemSaid) { - return fail('its header places its objects at byte ' + parsed.subsystemOffset + ', and they are at byte ' + subsystemSaid); - } - if (parsed.records.length !== plan.length) { - return fail('it holds ' + parsed.records.length + ' record(s) where ' + plan.length + ' were written'); + const offsetSaid = head.subarray(116, 124).every((b) => b === 0x20) ? 0 : Number(new DataView(head.buffer, head.byteOffset + 116, 8).getBigUint64(0, true)); + if (offsetSaid !== subsystemSaid) { + return fail('its header places its objects at byte ' + offsetSaid + ', and they are at byte ' + subsystemSaid); } + let end = 128; plan.forEach((p, i) => { - const got = parsed.records[i]; - const at = assembled.offsets[i]; - if (got.offset !== at) { - fail('a record starts at byte ' + got.offset + ' where one was written at byte ' + at); + const record = bytesOf(p); + if (offsets[i] !== end) { + fail('a record was written at byte ' + offsets[i] + ', where the one before it ends at byte ' + end); } + if (p.kind === 'verbatim' && record.byteLength !== p.record.length) { + fail('the record at byte ' + end + ' holds ' + record.byteLength + ' of the ' + p.record.length + ' bytes it was read as'); + } + if (!framedAsRead(record) || u32At(bytes, end) !== u32At(record, 0) || u32At(bytes, end + 4) !== u32At(record, 4)) { + fail('the record at byte ' + end + ' is not framed as the record written there'); + } + end += record.byteLength; + }); + if (end !== bytes.byteLength) { + return fail('it is ' + bytes.byteLength + ' bytes, and its records end at byte ' + end); + } + plan.forEach((p, i) => { if (p.kind === 'verbatim') { - if (!sameBytes(got.bytes, p.record.bytes)) { - fail('the record at byte ' + at + ' is not the bytes it was read from'); - } return; } - if (got.status !== 'read' || got.anonymous || got.name !== p.name || got.variable?.name !== p.name) { - fail('the record at byte ' + at + ', written as "' + p.name + '", reads as ' + (got.status === 'read' ? '"' + got.name + '"' : 'no variable')); + const at = offsets[i]; + const got = readAlone(file, head, bytes.subarray(at, at + p.bytes.byteLength)); + if (!got || got.status !== 'read' || got.anonymous || got.name !== p.name || got.variable?.name !== p.name) { + fail('the record at byte ' + at + ', written as "' + p.name + '", reads as ' + (got?.status === 'read' ? '"' + got.name + '"' : 'no variable')); } if (p.kind === 'renamed') { - const before = elementOfRecord(p.record); - const after = elementOfRecord(got); - const unnamed = (e: Uint8Array | null) => (e ? elementNamed(e, '') : null); - const was = unnamed(before); - const is = unnamed(after); + const unnamed = (e: Uint8Array | null | undefined) => (e && wholeElement(e) ? elementNamed(e, '') : null); + const was = unnamed(p.element); + const is = unnamed(got!.variable!._rawBytes); if (!was || !is || !sameBytes(was, is)) { fail('"' + p.name + '" is not, but for its name, the element it was read as'); } return; } - const difference = differs(p.node._var, got.variable, p.name); + const difference = differs(p.node._var, got!.variable, p.name); if (difference) { fail(difference); } // Global as the variable it was written for was (globalAsRead), and a variable added since not. - if (!!p.record?.variable?.isGlobal !== !!got.variable?.isGlobal) { - const is = got.variable?.isGlobal ? 'global, where the variable it was written for was not' : 'not global, where the variable it was written for was'; + if (!!p.record?.variable?.isGlobal !== !!got!.variable?.isGlobal) { + const is = got!.variable?.isGlobal ? 'global, where the variable it was written for was not' : 'not global, where the variable it was written for was'; fail('"' + p.name + '" reads back ' + is); } }); } +// Whether `record` is framed as MatParser frames a record of a file it calls framed: its tag's 8 +// bytes and exactly the bytes they declare, which for a plain record are a whole number of 8-byte +// words; and a tag that is neither the zero one the reader stops at nor a small element's. +function framedAsRead(record: Uint8Array): boolean { + if (record.byteLength < 8) { + return false; + } + const type = u32At(record, 0); + const n = u32At(record, 4); + if (8 + n !== record.byteLength) { + return false; + } + return type === MI_COMPRESSED || (n % 8 === 0 && !(type === 0 && n === 0) && !(type >>> 16 !== 0 && (type & 0xffff) !== 0)); +} + +// The one record of a file of `header` and `record`, as this package's reader reads it, or null +// where it reads that file as anything else. +function readAlone(file: string, header: Uint8Array, record: Uint8Array): MatRecord | null { + // The whole of a buffer of its own (concat), which the reader may take as it is. + const alone = concat([header, record], fileTooBig(file)); + let parsed: ParsedMat; + try { + parsed = parseMat(alone.buffer as ArrayBuffer); + } catch { + return null; + } + return parsed.framed && parsed.records.length === 1 ? parsed.records[0] : null; +} + +// Whether `element` is one miMATRIX element, its tag and exactly the bytes it declares. +function wholeElement(element: Uint8Array): boolean { + return element.byteLength >= 8 && u32At(element, 0) === MI_MATRIX && 8 + u32At(element, 4) === element.byteLength; +} + // The bytes about to be handed back, judged by the rules MATLAB loads a file by (MatFileCheck), // which this package's reader does not hold a file to: the save is refused when they break a rule // the file they were read from did not break. A file that was read breaking one (two variables of @@ -823,34 +891,51 @@ function selfCheck(file: string, bytes: Uint8Array, plan: Planned[], assembled: // Compared by rule and variable, not by offset, which every edit before a record moves; a // variable renamed is compared under the name the file it was read from gave it. // -// The file as read is checked once, and its violations kept with its records: they are the bytes -// it was read from, and no edit changes them. -function refuseWorse(file: string, bytes: Uint8Array, plan: Planned[], headerBytes: Uint8Array, records: MatRecord[]): void { - let before = originalViolations.get(records); - if (!before) { - before = checkMatFile(concat([headerBytes, ...records.map((r) => r.bytes)])); - originalViolations.set(records, before); - } +// Judged where the save changed the file (violationsAddedBySplice): every record written anew and +// the record it replaces, the header, and where every record stands. A record written as its own +// bytes breaks what it broke as read, and the two are the same answer; so a save costs what it +// changed, and a file too big for the check's budget whole can still be saved where its edits +// are small. Phase 2, which writes the subsystem anew, hands it in as a record written in place of +// the subsystem's (MatSplicedRecord `replaces`), and it is checked whole as every written one is. +function refuseWorse(file: string, assembled: Assembled, plan: Planned[], headerBytes: Uint8Array, records: MatRecord[], check: MatCheckOptions): void { + const index = new Map(records.map((r, i) => [r, i] as const)); const renamed = new Map(); - for (const p of plan) { - if (p.kind !== 'verbatim' && p.record?.name && p.record.name !== p.name) { + const written: MatSplicedRecord[] = plan.map((p, i) => { + if (p.kind === 'verbatim') { + return { kept: index.get(p.record)! }; + } + if (p.record?.name && p.record.name !== p.name) { renamed.set(p.name, p.record.name); } + const at = assembled.offsets[i]; + return { written: assembled.bytes.subarray(at, at + p.bytes.byteLength), replaces: p.record ? index.get(p.record)! : null }; + }); + const added = violationsAddedBySplice( + // A compressed record's inflate, as the reader holds it (MatVariable._rawBytes): inflateZlib's + // of the record's own bytes, so that the check does not inflate the file again. + { header: headerBytes, records: records.map((r) => ({ bytes: r.bytes, inflated: r.compressed ? r.variable?._rawBytes : null })) }, + { header: assembled.bytes.subarray(0, 128), records: written }, + renamed, + check, + ); + const broken = added.filter((v) => v.code !== 'budget'); + if (broken.length > 0) { + const more = broken.length - 1; + throw new MatWriteError( + 'Cannot save "' + file + '": the file written for it breaks a rule MATLAB loads a file by, which the file it was read ' + + 'from does not: ' + broken[0].message + (more > 0 ? ' It breaks ' + more + ' more as well.' : '') + ' Nothing was written.', + ); } - const added = violationsAdded(before, checkMatFile(bytes), renamed); if (added.length > 0) { - const more = added.length - 1; + // The check stopped before it had judged all of what the save wrote: nothing is known + // broken, and nothing is known to load. throw new MatWriteError( - 'Cannot save "' + file + '": the file written for it breaks a rule MATLAB loads a file by, which the file it was read ' - + 'from does not: ' + added[0].message + (more > 0 ? ' It breaks ' + more + ' more as well.' : '') + ' Nothing was written.', + 'Cannot save "' + file + '": the file written for it could not be verified within the check\'s budget against the rules ' + + 'MATLAB loads a file by (' + added[0].message.replace(/\.$/, '') + '), so it is not known to load. Nothing was written.', ); } } -// What MatFileCheck says of the file a MatNode was read from, by its records (MatNode.records), -// which are that file's bytes for as long as the node is. -const originalViolations = new WeakMap(); - // Where the value read back, `read`, is not the value `model` it was written from, in words, or // null where it is that value: the same class, complexity, storage and size, the same members of a // cell, the same fields of a struct in the same order, and each element the same number as its @@ -1024,12 +1109,23 @@ function flatValues(value: unknown): unknown[] { // ---- Bytes ------------------------------------------------------------------------------------ -function concat(parts: Uint8Array[]): Uint8Array { +// `parts`, back to back in a buffer of their own; or, past the most bytes the runtime holds in one +// buffer, `tooBig`'s refusal of that many, rather than the RangeError the runtime throws, which +// says nothing of what was being written. +function concat(parts: Uint8Array[], tooBig: (total: number) => MatWriteError): Uint8Array { let total = 0; for (const p of parts) { total += p.byteLength; } - const out = new Uint8Array(total); + let out: Uint8Array; + try { + out = new Uint8Array(total); + } catch (e) { + if (e instanceof RangeError) { + throw tooBig(total); + } + throw e; + } let at = 0; for (const p of parts) { out.set(p, at); diff --git a/test/matFileSave.test.ts b/test/matFileSave.test.ts index 429e098d..fd221c8c 100644 --- a/test/matFileSave.test.ts +++ b/test/matFileSave.test.ts @@ -18,7 +18,7 @@ import { fileURLToPath } from 'node:url'; import { parseMat } from '../src/datamodel/parser/MatParser.js'; import type { MatRecord, ParsedMat } from '../src/datamodel/parser/MatParser.js'; import { encodeMatStream, MatBudgetError, MatWriteError } from '../src/datamodel/parser/MatWriter.js'; -import { serializeMatFile } from '../src/datamodel/parser/MatFileWriter.js'; +import { compressedRecordOf, serializeMatFile } from '../src/datamodel/parser/MatFileWriter.js'; import { checkMatFile, violationsAdded } from '../src/datamodel/parser/MatFileCheck.js'; import { createSession } from '../src/index.js'; import { CLASS, MI, cellVar, matFile, numericVar, u32le } from './tools/matBytes.js'; @@ -702,6 +702,43 @@ describe('a save that cannot write a variable as what it is is refused, naming i const thrown = thrownBy(() => by('big')._matStream()) as MatBudgetError; expect([thrown instanceof MatBudgetError, thrown.entry, thrown.reason]).toEqual([true, 'big', 'budget']); expect(thrown.message).toMatch(/^Cannot write "big": big is a 1x600000 cell holding 1 of its 600000 elements, /); + // And met writing a variable a save writes fresh, it is the save's refusal, as MatWriter threw + // it: the stream of an edited variable stands in for one past the budget. + const edited = opened(fixture(CASES), 'cases.mat'); + expect(edited.edit(edited.by('kp'), 'Value', '9')).toBe(true); + edited.by('kp')._matStream = () => { + throw thrown; + }; + expect(thrownBy(() => serializeMatFile(edited.root))).toBe(thrown); + }); + + it('a file of more bytes than the runtime holds in one buffer, refused naming it, and not as its RangeError', () => { + for (const add of [false, true]) { + const { root } = opened(matFile([scalar('a', 1)])); + // A record standing in for one of 2^53 bytes, which no typed array is: the copy of the + // file unedited, and the file assembled around an addition, are each refused for it. + Object.assign(root.records[0], { length: 2 ** 53, bytes: { byteLength: 2 ** 53 } }); + if (add) { + root.execAddEntry(); + } + const thrown = thrownBy(() => serializeMatFile(root)); + expect(thrown, String(add)).toBeInstanceOf(MatWriteError); + expect(thrown.message, String(add)).toMatch( + /^Cannot save "f\.mat": the file written for it would be \d{16} bytes, more than this runtime holds in one buffer\. Nothing was written\.$/, + ); + } + }); + + it('a compressed stream of 4 GiB or more, whose length its record cannot say, is refused', () => { + // A stream standing in for one of 2^32 bytes: the record's tag says its length in 32 bits, + // and written, it would say 0. + const thrown = thrownBy(() => compressedRecordOf({ byteLength: 2 ** 32 } as Uint8Array, 'big')); + expect([thrown instanceof MatWriteError, thrown.message]).toEqual([ + true, + 'Cannot write "big": compressed, its element is a stream of 4294967296 bytes, more than the 4 GiB a record can say it holds. Nothing was written.', + ]); + // One that a tag can say is written as its tag and itself. + expect(Array.from(compressedRecordOf(new Uint8Array([7, 8]), 'small'))).toEqual([15, 0, 0, 0, 2, 0, 0, 0, 7, 8]); }); it('a variable added under a name that is no MATLAB name, or one the file holds already', () => { diff --git a/test/matSpliceVerdict.test.ts b/test/matSpliceVerdict.test.ts new file mode 100644 index 00000000..2b0a2fe7 --- /dev/null +++ b/test/matSpliceVerdict.test.ts @@ -0,0 +1,353 @@ +// Copyright 2026 The MathWorks, Inc. +// +// The `.mat` save judges what it wrote by MATLAB's load rules where it changed the file +// (MatFileCheck.violationsAddedBySplice), and no longer by checking the file it read and the +// file it wrote whole, which inflated every compressed record of both at every save and could +// not save a file past the check's budget at all. The answer has to be the one the whole-file +// check gave: `violationsAdded(checkMatFile(read), checkMatFile(written), renamed)`. +// +// * Over every .mat under test/, MATLAB's verdict corpus included, and a set of saves of each +// (every variable renamed, every plain one written fresh, every other one deleted, one +// added, all four at once, and one written as bytes MATLAB fails on), the splice's verdict +// is the whole-file one, rule by rule and variable by variable, for every save that reached +// the check. +// * Where it may not take the short way, it takes the long one, and says the same. +// * A file past the check's budget whole saves where it changed little, and the budget is +// spent on what changed. +import { describe, it, expect, vi } from 'vitest'; +import { readFileSync, readdirSync } from 'node:fs'; +import { join } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { zlibSync } from 'fflate'; +import { checkMatFile, violationsAdded, violationsAddedBySplice } from '../src/datamodel/parser/MatFileCheck.js'; +import type { MatFileOfRecords, MatReadRecord, MatSplicedRecord, MatViolation } from '../src/datamodel/parser/MatFileCheck.js'; +import { serializeMatFile } from '../src/datamodel/parser/MatFileWriter.js'; +import { MatWriteError } from '../src/datamodel/parser/MatWriter.js'; +import { parseMat } from '../src/datamodel/parser/MatParser.js'; +import { createSession } from '../src/index.js'; +import { CLASS, MI, charVar, matFile, numericVar, u32le } from './tools/matBytes.js'; + +// Every call the writer makes of the splice's verdict, with what it answered. +const calls = vi.hoisted(() => [] as { read: any; written: any; renamed: ReadonlyMap; added: MatViolation[] }[]); +vi.mock('../src/datamodel/parser/MatFileCheck.js', async (importOriginal) => { + const actual = await importOriginal(); + return { + ...actual, + violationsAddedBySplice: (read: any, written: any, renamed: ReadonlyMap = new Map(), options = {}) => { + const added = actual.violationsAddedBySplice(read, written, renamed, options); + calls.push({ read, written, renamed, added }); + return added; + }, + }; +}); + +const TEST_ROOT = fileURLToPath(new URL('.', import.meta.url)); + +function matFilesUnder(dir: string): string[] { + const out: string[] = []; + for (const entry of readdirSync(dir, { withFileTypes: true })) { + const abs = join(dir, entry.name); + if (entry.isDirectory()) { + out.push(...matFilesUnder(abs)); + } else if (entry.isFile() && entry.name.endsWith('.mat')) { + out.push(abs); + } + } + return out.sort(); +} + +// The one file under test/ the reader refuses: a `-v7.3` file is HDF5, not Level 5. +const FILES = matFilesUnder(TEST_ROOT).filter((f) => !f.endsWith('strings_v73.mat')); + +function arrayBufferOf(bytes: Uint8Array): ArrayBuffer { + return bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength) as ArrayBuffer; +} + +function joined(header: Uint8Array, records: readonly Uint8Array[]): Uint8Array { + const out = new Uint8Array(header.byteLength + records.reduce((n, r) => n + r.byteLength, 0)); + out.set(header, 0); + let at = header.byteLength; + for (const r of records) { + out.set(r, at); + at += r.byteLength; + } + return out; +} + +const readFile = (read: MatFileOfRecords) => joined(read.header, read.records.map((r) => r.bytes)); +const writtenFile = (read: MatFileOfRecords, written: MatFileOfRecords) => + joined(written.header, written.records.map((r) => ('kept' in r ? read.records[r.kept].bytes : r.written))); + +// A verdict as violationsAdded counts it: by rule, and by variable under its name as read. +const keyed = (added: readonly MatViolation[], renamed: ReadonlyMap) => + added.map((v) => v.code + ' ' + (v.variable === undefined ? '' : renamed.get(v.variable) ?? v.variable)).sort(); + +/** A MatNode opened from `bytes` through the session, as a host opens one, and its edits. */ +function opened(bytes: ArrayBuffer, name: string) { + const session = createSession(); + const root: any = session.addMatSource(name, bytes); + const edit = (node: any, prop: string, value: string) => { + session.setActive(root, node); + return session.editProperty(node.id, prop, value); + }; + const remove = (node: any) => { + session.setActive(root, node); + return session.deleteNodeById(node.id); + }; + return { root, edit, remove }; +} + +const plainOf = (root: any) => root.children.filter((n: any) => n._matWritable?.() === true && !root.recordOf(n)?.variable?.isOpaque); + +// The stream of a char array stored as miUINT16, which this package's reader reads back as +// written and MATLAB reads as the low byte of each unit (`char-type`): what a writer that broke +// a rule would write, standing in for one. +function uint16CharStream(text: string): Uint8Array { + const units = new Uint8Array(text.length * 2); + for (let i = 0; i < text.length; i++) { + new DataView(units.buffer).setUint16(2 * i, text.charCodeAt(i), true); + } + const tag = (type: number, n: number) => joined(u32le(type), [u32le(n)]); + const body = joined(new Uint8Array(0), [ + tag(MI.UINT32, 8), u32le(CLASS.CHAR), u32le(0), + tag(MI.INT32, 8), u32le(1), u32le(text.length), + tag(MI.INT8, 0), + tag(MI.UINT16, units.length), units, new Uint8Array((8 - (units.length % 8)) % 8), + ]); + return joined(new Uint8Array([0, 1, 0x49, 0x4d, 0, 0, 0, 0]), [tag(MI.MATRIX, body.length), body]); +} + +// Each kind of save, and at least how many of the files reach the check with it (measured when +// this was written: 120, 74, 121, 123, 115 and 123), and whether it is written to break a rule. +const SAVES: [string, (o: ReturnType) => void, number, boolean][] = [ + ['every variable renamed', (o) => o.root.children.slice().forEach((n: any, i: number) => o.edit(n, 'Name', 'renamed' + i)), 110, false], + ['every plain variable written fresh', (o) => plainOf(o.root).forEach((n: any) => n._markModified()), 65, false], + ['every other variable deleted', (o) => o.root.children.filter((_: any, i: number) => i % 2 === 0).forEach((n: any) => o.remove(n)), 110, false], + ['a variable added', (o) => o.root.execAddEntry(), 110, false], + [ + 'renamed, written fresh, deleted and added at once', + (o) => { + const [first, second, third] = o.root.children; + first && o.edit(first, 'Name', 'renamedFirst'); + second && plainOf(o.root).includes(second) && second._markModified(); + third && o.remove(third); + o.root.execAddEntry(); + }, + 105, + false, + ], + [ + 'a variable added as bytes that break a rule', + (o) => { + const added = o.root.execAddEntry()?.node; + if (added && o.edit(added, 'Value', "'中文'") === true) { + added._matStream = () => uint16CharStream('中文'); + } + }, + 110, + true, + ], +]; + +describe('the verdict of a save, judged where it changed the file, is the verdict of both files judged whole', () => { + for (const [what, edit, least, breaks] of SAVES) { + it(what, () => { + let compared = 0; + let refusedByIt = 0; + const notRefused: MatViolation[][] = []; + for (const file of FILES) { + const input = new Uint8Array(readFileSync(file)); + const o = opened(arrayBufferOf(input), file.slice(file.lastIndexOf('/') + 1)); + edit(o); + calls.length = 0; + try { + serializeMatFile(o.root); + } catch (e) { + expect(e, file).toBeInstanceOf(MatWriteError); + } + for (const { read, written, renamed, added } of calls) { + // The read side is the file, byte for byte. + const before = readFile(read); + expect(before.byteLength === input.byteLength && before.every((b, i) => b === input[i]), file).toBe(true); + const whole = violationsAdded(checkMatFile(before), checkMatFile(writtenFile(read, written)), renamed); + expect(keyed(added, renamed), `${file}: ${what}`).toEqual(keyed(whole, renamed)); + compared++; + refusedByIt += added.length > 0 ? 1 : 0; + if (added.length === 0) { + notRefused.push(checkMatFile(before)); + } + } + } + // Not vacuous: most of the 137 files reach the check with each kind of save (fewer with + // a plain variable to write fresh: the corpus holds many of objects alone), and none but + // the one written to break a rule is refused by either. + expect(compared, what).toBeGreaterThanOrEqual(least); + if (breaks) { + // Refused by both wherever the check reads past the header, which it does not of a file + // whose header is not a Level-5 one (version-0x0000.mat, version-0x0200.mat): MATLAB + // loads nothing of it, before the save or after. + expect(refusedByIt, what).toBeGreaterThanOrEqual(least); + for (const violations of notRefused) { + expect(violations.map((v) => v.code), what).toContain('not-level5'); + } + } else { + expect(refusedByIt, what).toBe(0); + } + }); + } +}); + +// ---- Files made to break each rule ------------------------------------------------------------ + +const scalar = (name: string, value: number) => numericVar({ name, cls: CLASS.DOUBLE, dimensions: [1, 1], real: [value] }); + +// A compressed record of `element`, as MATLAB writes one: its zlib stream in an miCOMPRESSED tag. +const compressed = (element: Uint8Array) => { + const stream = zlibSync(element, { level: 6 }); + return joined(u32le(MI.COMPRESSED), [u32le(stream.byteLength), stream]); +}; + +// The file of `records`, as a splice's read side. +function readOf(records: Uint8Array[]): MatFileOfRecords { + const bytes = new Uint8Array(matFile(records)); + return { header: bytes.subarray(0, 128), records: parseMat(arrayBufferOf(bytes)).records.map((r) => ({ bytes: r.bytes })) }; +} + +const both = (read: MatFileOfRecords, written: MatFileOfRecords, renamed = new Map()) => { + const whole = violationsAdded(checkMatFile(readFile(read)), checkMatFile(writtenFile(read, written)), renamed); + return [keyed(violationsAddedBySplice(read, written, renamed), renamed), keyed(whole, renamed)]; +}; + +describe('the short way says what the long way says of the rules of where records stand', () => { + // `b` is a char stored as miUINT8, which MATLAB fails on (`char-type`). + const read = readOf([scalar('a', 1), charVar('b', 'xy', MI.UINT8), scalar('c', 3)]); + const header = (offset: bigint) => { + const h = read.header.slice(); + new DataView(h.buffer).setBigUint64(116, offset, true); + return h; + }; + const cases: [string, MatFileOfRecords, Map, string[]][] = [ + ['a variable added under a name the file holds', { header: read.header, records: [{ kept: 0 }, { kept: 1 }, { kept: 2 }, { written: scalar('a', 2), replaces: null }] }, new Map(), ['duplicate-name a']], + ['an unnamed record added before the last', { header: read.header, records: [{ kept: 0 }, { written: scalar('', 2), replaces: null }, { kept: 2 }] }, new Map(), ['anonymous-record ']], + ['a header that places the subsystem where none is', { header: header(136n), records: [{ kept: 0 }, { kept: 1 }, { kept: 2 }] }, new Map(), ['subsystem-offset ']], + ['a variable renamed, its violation with it', { header: read.header, records: [{ kept: 0 }, { written: charVar('bb', 'xy', MI.UINT8), replaces: 1 }, { kept: 2 }] }, new Map([['bb', 'b']]), []], + ['a variable renamed, its violation said under its new name alone', { header: read.header, records: [{ kept: 0 }, { written: charVar('bb', 'xy', MI.UINT8), replaces: 1 }, { kept: 2 }] }, new Map(), ['char-type bb']], + ['a variable written as bytes that break a rule', { header: read.header, records: [{ written: charVar('a', 'xy', MI.UINT8), replaces: 0 }, { kept: 1 }, { kept: 2 }] }, new Map(), ['char-type a']], + ['the variable that broke one deleted, and another written so', { header: read.header, records: [{ written: charVar('a', 'xy', MI.UINT8), replaces: 0 }, { kept: 2 }] }, new Map(), ['char-type a']], + ]; + for (const [what, written, renamed, expected] of cases) { + it(what, () => { + const [splice, whole] = both(read, written, renamed); + expect(splice).toEqual(whole); + expect(splice).toEqual(expected); + }); + } + + it('a deleted record is checked when what is added could be matched with one of its violations', () => { + // `end` deleted and `end` added: the added one's `name` violation is the deleted one's. + const read = readOf([scalar('a', 1), scalar('end', 2)]); + const [splice, whole] = both(read, { header: read.header, records: [{ kept: 0 }, { written: scalar('end', 3), replaces: null }] }); + expect(splice).toEqual(whole); + expect(splice).toEqual([]); + }); +}); + +describe('where the short way does not hold, the splice checks both files whole, or as far as the whole check reads them', () => { + it('a record kept twice: its violation is counted twice, as the whole check counts it', () => { + const read = readOf([scalar('a', 1), scalar('end', 2)]); + const [splice, whole] = both(read, { header: read.header, records: [{ kept: 0 }, { kept: 1 }, { kept: 1 }] }); + expect(splice).toEqual(whole); + expect(splice).toEqual(['duplicate-name end', 'name end']); + }); + + it('a record kept and replaced', () => { + const read = readOf([scalar('a', 1), scalar('end', 2)]); + const [splice, whole] = both(read, { header: read.header, records: [{ kept: 1 }, { written: scalar('end', 3), replaces: 1 }] }); + expect(splice).toEqual(whole); + expect(splice).toEqual(['duplicate-name end', 'name end']); + }); + + it('a kept record holding a name the renames map: its violation is compared under the other name, as the whole check compares it', () => { + // 'end' breaks `name`; renaming `a` to it maps 'end' to 'a', and the kept record's violation + // with it. + const read = readOf([scalar('a', 1), scalar('end', 2)]); + const renamed = new Map([['end', 'a']]); + const [splice, whole] = both(read, { header: read.header, records: [{ written: scalar('end', 1), replaces: 0 }, { kept: 1 }] }, renamed); + expect(splice).toEqual(whole); + expect(splice.length).toBeGreaterThan(0); + }); + + it('a record whose tag the walk reads as padding: a top-level type above 255', () => { + const odd = joined(u32le(0x100), [u32le(8), new Uint8Array(8)]); + const read = readOf([scalar('a', 1), odd]); + const [splice, whole] = both(read, { header: read.header, records: [{ kept: 1 }, { written: scalar('end', 1), replaces: null }] }); + expect(splice).toEqual(whole); + // The walk stops at the padding it takes the record for, so the record after it is not seen. + expect(splice).toEqual([]); + }); + + it('a header the check reads no further than, on both sides', () => { + const read = readOf([scalar('a', 1)]); + const header = read.header.slice(); + header[125] = 0x02; + const off = { header, records: read.records }; + const [splice, whole] = both(off, { header, records: [{ written: scalar('end', 1), replaces: 0 }] }); + expect(splice).toEqual(whole); + expect(splice).toEqual([]); + }); + +}); + +// ---- The budget ------------------------------------------------------------------------------- + +describe('a file past the check\'s budget whole is checked, and saved, where it changed', () => { + // Three compressed records, two of them a MiB of zeros each, under a budget of 1.5 MiB of + // inflated bytes: checked whole, the file stops at the budget; the splice spends it on what + // changed, the records written and the ones they replace. + const MIB = 2 ** 20; + const big = (name: string) => numericVar({ name, cls: CLASS.UINT8, dimensions: [1, MIB], real: [], rawReal: new Uint8Array(MIB) }); + const input = matFile([compressed(scalar('a', 1)), compressed(big('big1')), compressed(big('big2'))]); + const budget = { maxInflatedBytes: 1.5 * MIB }; + + it('is past the budget, whole', () => { + expect(checkMatFile(new Uint8Array(input), budget).map((v) => v.code)).toEqual(['budget']); + expect(checkMatFile(new Uint8Array(input))).toEqual([]); + }); + + it('saves a rename of a small variable, and of a big one the budget holds', () => { + for (const name of ['a', 'big1']) { + const o = opened(input, 'big.mat'); + const node = o.root.children.find((c: any) => c.name === name); + expect(o.edit(node, 'Name', name + 'Renamed'), name).toBe(true); + const saved = serializeMatFile(o.root, budget); + expect(parseMat(arrayBufferOf(saved)).variables.map((v) => v.name), name).toEqual( + ['a', 'big1', 'big2'].map((n) => (n === name ? name + 'Renamed' : n)), + ); + // Checked whole without a budget, it adds nothing. + expect(violationsAdded(checkMatFile(new Uint8Array(input)), checkMatFile(saved), new Map([[name + 'Renamed', name]])), name).toEqual([]); + } + }); + + it('saves an edit of the small variable, and a delete of a big one', () => { + const o = opened(input, 'big.mat'); + expect(o.edit(o.root.children[0], 'Value', '7')).toBe(true); + expect(o.remove(o.root.children[2])).toBe(true); + const parsed = parseMat(arrayBufferOf(serializeMatFile(o.root, budget))); + expect(parsed.variables.map((v) => [v.name, v.name === 'a' ? v.value : v.dimensions])).toEqual([['a', 7], ['big1', [1, MIB]]]); + }); + + it('refuses, saying it could not verify it, a rename of a variable past the budget itself', () => { + const o = opened(input, 'big.mat'); + expect(o.edit(o.root.children[1], 'Name', 'big1Renamed')).toBe(true); + let thrown: unknown; + try { + serializeMatFile(o.root, { maxInflatedBytes: MIB / 2 }); + } catch (e) { + thrown = e; + } + expect(thrown).toBeInstanceOf(MatWriteError); + expect((thrown as Error).message).toMatch( + /^Cannot save "big\.mat": the file written for it could not be verified within the check's budget against the rules MATLAB loads a file by \(The check stopped at byte \d+, at more than the 524288 bytes one check inflates, so nothing from there on was checked\), so it is not known to load\. Nothing was written\.$/, + ); + }); +}); From abffa84140045c008c97c20b108715088d9587ef Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Tue, 20 Oct 2026 19:49:41 -0400 Subject: [PATCH 12/13] [wip] Forget what the MAT-file gate found of only the variable an edit changed Every edit set the file dirty, and setting it cleared every variable's cached verdict and the count of every name: a table re-walked every variable it showed after each edit, and each of N renames counted N names again. Renaming 1,000 of 20,000 variables took 1.5-1.6 s. An edit now tells its source which node changed (BaseNode._markSourceDirty, MatNode._nodeEdited), and only that variable's verdict is forgotten: what a save refuses of a value written fresh is about that variable alone. Whether another variable shares its name is asked of the counts at each query, and the counts move with every variable added, removed or renamed, as a dictionary section's do; a slot that changes hands has them counted again. The same 1,000 renames take 11-19 ms. A direct rename the source refuses says the source's reason rather than the generic one; every path tried already reached the source's first, so this holds only if a setter skips it. A record dropped with no name read out of it is held to none, which is now said where the names are counted: every such record already breaks a load rule. --- dist/datamodel/node/BaseNode.d.ts.map | 2 +- dist/datamodel/node/BaseNode.js | 5 + dist/datamodel/node/BaseNode.js.map | 2 +- dist/datamodel/node/DataNode.d.ts.map | 2 +- dist/datamodel/node/DataNode.js | 5 +- dist/datamodel/node/DataNode.js.map | 2 +- dist/datamodel/node/container/MatNode.d.ts | 24 +++- .../datamodel/node/container/MatNode.d.ts.map | 2 +- dist/datamodel/node/container/MatNode.js | 90 +++++++++++--- dist/datamodel/node/container/MatNode.js.map | 2 +- src/datamodel/node/BaseNode.ts | 7 +- src/datamodel/node/DataNode.ts | 5 +- src/datamodel/node/container/MatNode.ts | 112 ++++++++++++++---- test/matEditGate.test.ts | 60 ++++++++++ 14 files changed, 268 insertions(+), 52 deletions(-) diff --git a/dist/datamodel/node/BaseNode.d.ts.map b/dist/datamodel/node/BaseNode.d.ts.map index 3e9984b0..6eb9fcc7 100644 --- a/dist/datamodel/node/BaseNode.d.ts.map +++ b/dist/datamodel/node/BaseNode.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"BaseNode.d.ts","sourceRoot":"","sources":["../../../src/datamodel/node/BaseNode.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC;AAGhD,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,MAAM,CAAC;IACvC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,MAAM,EAAE,CAAC;IAM3C,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAIpC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC;IAKnC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC;CAC3C;AAED,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IAMf,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IACjG,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;IAIzB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAQ/B,QAAQ,CAAC,EAAE,MAAM,GAAG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IAKrB,MAAM,CAAC,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,KAAK,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAAE,CAAC;IAC5G,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC;AAE5F;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;AAEnE,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,aAAa,EAAE;QAAE,UAAU,EAAE,OAAO,EAAE,CAAC;QAAC,MAAM,EAAE,OAAO,EAAE,CAAA;KAAE,CAAC;IAC5D,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAkBD,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AAmBxE,MAAM,MAAM,gBAAgB,GACxB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAAC,KAAK,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GACpF;IAAE,EAAE,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAEvC;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,GAAG,QAAQ,GAAG,IAAI,CAOlF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAS5E;AAED,+FAA+F;AAC/F,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;AAEhG;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAEjF;AAED,MAAM,CAAC,OAAO,OAAO,QAAQ;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAIjB,UAAU,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;gBAEjC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI;IAMjD,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAID,IAAI,SAAS,IAAI,MAAM,CAEtB;IAKD,YAAY,IAAI,MAAM;IAMtB,IAAI,IAAI,IAAI,MAAM,CAEjB;IAKD,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAID,IAAI,aAAa,IAAI,OAAO,CAK3B;IAQD,IAAI,aAAa,IAAI,OAAO,CAE3B;IAQD,IAAI,mBAAmB,IAAI,OAAO,CAEjC;IAOD,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED,IAAI,YAAY,IAAI,OAAO,CAsB1B;IAQD,qBAAqB,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI;IAO7C,sBAAsB,CAAC,MAAM,EAAE,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI;IAI7D,WAAW,IAAI,OAAO;IAItB,YAAY,IAAI,QAAQ,GAAG,IAAI;IAI/B,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ;IAenD,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAUlC,YAAY,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO;IA+BxC,wBAAwB,IAAI,IAAI;IAchC,gBAAgB,IAAI,IAAI;IA0CxB,WAAW,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,SAAS;IAkC5C,aAAa,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,SAAS;IAejE,OAAO,IAAI,QAAQ,EAAE;IA+BrB,OAAO,CAAC,kBAAkB;IAS1B,IAAI,WAAW,IAAI,MAAM,CAGxB;IAED;;;;;OAKG;IACH,IAAI,UAAU,IAAI,MAAM,CASvB;IAED;;;;OAIG;IACH,WAAW,CAAC,WAAW,EAAE,MAAM,MAAM,GAAG,MAAM,GAAG,IAAI;IA0CrD,IAAI,aAAa,IAAI,OAAO,CAW3B;IAgBD,IAAI,mBAAmB,IAAI,OAAO,CAEjC;IAED,WAAW,CAAC,YAAY,EAAE,SAAS,GAAG,QAAQ;IAsD9C,KAAK,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,GAAG,IAAI;IA8FzC,aAAa,IAAI,SAAS,EAAE;IAW5B,WAAW,IAAI,UAAU,EAAE,GAAG,IAAI;IAIlC,UAAU,IAAI,QAAQ,GAAG,IAAI;IAmH7B,SAAS,IAAI,OAAO;CAGrB"} \ No newline at end of file +{"version":3,"file":"BaseNode.d.ts","sourceRoot":"","sources":["../../../src/datamodel/node/BaseNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/node/BaseNode.js b/dist/datamodel/node/BaseNode.js index cab665cc..3178a046 100644 --- a/dist/datamodel/node/BaseNode.js +++ b/dist/datamodel/node/BaseNode.js @@ -256,6 +256,11 @@ export default class BaseNode { if (source.dirty !== undefined) { source.dirty = true; } + // And a source that keeps what it found of each of its entries is told which node changed, + // so that it forgets what it found of that node's entry, and of no other (MatNode._nodeEdited). + if (typeof source._nodeEdited === 'function') { + source._nodeEdited(this); + } // Every mutation reaches here, so this is where a rename — the edit that actually moves // a link — is caught. A value edit drops the index too, needlessly; the rebuild rides // the row build that edit was already going to cause. diff --git a/dist/datamodel/node/BaseNode.js.map b/dist/datamodel/node/BaseNode.js.map index f9d33cdd..328d5b15 100644 --- a/dist/datamodel/node/BaseNode.js.map +++ b/dist/datamodel/node/BaseNode.js.map @@ -1 +1 @@ -{"version":3,"file":"BaseNode.js","sourceRoot":"","sources":["../../../src/datamodel/node/BaseNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"BaseNode.js","sourceRoot":"","sources":["../../../src/datamodel/node/BaseNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/node/DataNode.d.ts.map b/dist/datamodel/node/DataNode.d.ts.map index 9e1750ca..4f191a93 100644 --- a/dist/datamodel/node/DataNode.d.ts.map +++ b/dist/datamodel/node/DataNode.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"DataNode.d.ts","sourceRoot":"","sources":["../../../src/datamodel/node/DataNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"DataNode.d.ts","sourceRoot":"","sources":["../../../src/datamodel/node/DataNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/node/DataNode.js b/dist/datamodel/node/DataNode.js index f1bd3850..2f1f544c 100644 --- a/dist/datamodel/node/DataNode.js +++ b/dist/datamodel/node/DataNode.js @@ -397,10 +397,13 @@ export default class DataNode extends BaseNode { // something asks for it directly — renaming a Simulink.Parameter's `Value` row was // exactly that, accepted by the model and dropped by serialize, which writes the // key `Value` whatever the node is called. + // Said as the source says it, when it is the source that refuses (BaseNode.sourceEditRefusal: + // a MAT-file's variable stored after its subsystem), which _refuseEncodedEdit has asked + // already for every class whose setter comes here first. if (!this.nameEditable) { return { error: true, - reason: `'${this.displayName}' is not a name this entry can carry, so it cannot be renamed.`, + reason: sourceEditRefusal(this, 'Name') ?? `'${this.displayName}' is not a name this entry can carry, so it cannot be renamed.`, invalidValue: stringValue, validValue: this.displayName, }; diff --git a/dist/datamodel/node/DataNode.js.map b/dist/datamodel/node/DataNode.js.map index b76aee84..8fa4d75b 100644 --- a/dist/datamodel/node/DataNode.js.map +++ b/dist/datamodel/node/DataNode.js.map @@ -1 +1 @@ -{"version":3,"file":"DataNode.js","sourceRoot":"","sources":["../../../src/datamodel/node/DataNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"DataNode.js","sourceRoot":"","sources":["../../../src/datamodel/node/DataNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/node/container/MatNode.d.ts b/dist/datamodel/node/container/MatNode.d.ts index 644cdd91..db3e3a0d 100644 --- a/dist/datamodel/node/container/MatNode.d.ts +++ b/dist/datamodel/node/container/MatNode.d.ts @@ -7,7 +7,7 @@ import type { MatRecord, ParsedMat } from '../../parser/MatParser.js'; export type MatParse = Pick & Partial>; export default class MatNode extends ContainerNode { header: string; - _dirty: boolean; + dirty: boolean; _anonymousElements: MatVariable[]; headerBytes: Uint8Array | null; records: MatRecord[] | null; @@ -21,8 +21,10 @@ export default class MatNode extends ContainerNode { _nodeRecords: Map; _fileVerdict: string | null | undefined; _subsystem: MatRecord | null | undefined; - _valueVerdicts: Map; + _valueVerdicts: WeakMap; _nameCounts: Map | null; + _countedAt: number; + _entriesVersion: number; constructor(name: string); /** * The record `node` was read from, or null for a node no record became: a variable added @@ -37,8 +39,11 @@ export default class MatNode extends ContainerNode { nodeOf(record: MatRecord): BaseNode | null; get displayName(): string; get readOnly(): boolean; - get dirty(): boolean; - set dirty(value: boolean); + _nodeEdited(node: BaseNode): void; + addChild(child: BaseNode, index?: number): BaseNode; + removeChild(child: BaseNode): void; + _entryRenamed(oldName: string, newName: string): void; + _entriesMoved(gone: string | null, came: string | null): void; /** * Why an edit of `key` at `node`, which is `entry` or a node under it, is refused, as a * message naming the variable or the file, or null where a save of this file writes it. @@ -89,6 +94,17 @@ export default class MatNode extends ContainerNode { * each record that became none (one the reader dropped) under its own name, as a save writes * it (MatFileWriter.refuseDuplicates). A rename into a name another holds is refused for it * (DataNode.setProperty), naming this file (_namespaceLabel). + * + * Counted when first asked, and moved with every variable added, removed or renamed after + * (_entriesMoved), so that a rename costs a lookup and not a count of every name: as a + * dictionary's are (SectionNode._namespaceHolds, F1-23). + * + * A record the reader dropped without a name, one that does not inflate or holds no matrix, + * is counted under none: what it would be called is not known, so an added or renamed + * variable is not held to it (MatFileWriter.refuseDuplicates, likewise). Every such record + * already breaks a rule MATLAB loads a file by (MatFileCheck: `compressed-wrapper`, + * `top-level-type`), and for all of them but one past the inflate ceiling that is a rule + * MATLAB fails the whole load on: no variable of the file is loaded beside it, whatever its name. */ _namespaceHolds(name: string): number; /** Where a rename into a name already held is said to collide (DataNode.setProperty): this file. */ diff --git a/dist/datamodel/node/container/MatNode.d.ts.map b/dist/datamodel/node/container/MatNode.d.ts.map index 3ede3da9..1352e604 100644 --- a/dist/datamodel/node/container/MatNode.d.ts.map +++ b/dist/datamodel/node/container/MatNode.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"MatNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/container/MatNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"MatNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/container/MatNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/node/container/MatNode.js b/dist/datamodel/node/container/MatNode.js index c5feaaf9..a56f4c8e 100644 --- a/dist/datamodel/node/container/MatNode.js +++ b/dist/datamodel/node/container/MatNode.js @@ -10,14 +10,17 @@ import { MAT_NODE_CEILING } from '../../display/DisplayConvention.js'; import { buildUnderCeiling, buildUncut, chargeNodes } from '../data/matNodeCeiling.js'; import { PAST_SUBSYSTEM, duplicateWhy, freshRefusal, renameWhy, structureRefusal, subsystemOf, unsavableRefusal, unwritableIn, } from '../../parser/MatFileWriter.js'; import { validateMatlabName } from '../../matlabName.js'; +import { owningEntryOf } from '../DataNode.js'; import { basenameOf } from '../../fileKinds.js'; export default class MatNode extends ContainerNode { constructor(name) { super(name, null); this.header = ''; - this._dirty = false; - this._valueVerdicts = new Map(); + this.dirty = false; + this._valueVerdicts = new WeakMap(); this._nameCounts = null; + this._countedAt = -1; + this._entriesVersion = 0; this._anonymousElements = []; this.headerBytes = null; this.records = null; @@ -51,15 +54,59 @@ export default class MatNode extends ContainerNode { get readOnly() { return this._fileRefusal() !== null; } - // Every edit sets it (BaseNode._markSourceDirty, and this class's own add and remove), so it - // is where what the gate found of the tree as it was is forgotten (_editRefusal). - get dirty() { - return this._dirty; + // An edit of `node`, which is a variable of this file or a node under one (BaseNode. + // _markSourceDirty): what the gate found of that variable's value is forgotten, and of no other, + // since nothing a save refuses of a value written fresh is about another variable + // (freshRefusal). Which names two of them share is counted apart (_namespaceHolds). Forgetting + // every variable's at every edit re-walked every variable a table showed after each, and each + // of N renames counted N names again. + _nodeEdited(node) { + const entry = owningEntryOf(node); + if (entry && entry.parent === this) { + this._valueVerdicts.delete(entry); + } } - set dirty(value) { - this._dirty = value; - this._valueVerdicts.clear(); - this._nameCounts = null; + addChild(child, index) { + super.addChild(child, index); + this._valueVerdicts.delete(child); + this._entriesMoved(null, child.name); + return child; + } + removeChild(child) { + const before = this.children.length; + super.removeChild(child); + if (this.children.length < before) { + this._valueVerdicts.delete(child); + this._entriesMoved(child.name, null); + } + } + // One of my variables renamed (DataNode.setProperty): its name's count moves with it. + _entryRenamed(oldName, newName) { + this._entriesMoved(oldName, newName); + } + // A variable of this file stopped being called `gone`, and one started being called `came` + // (either null): one removed, added or renamed. The version moves, and the counts, when they + // are of the version before, move with it and go on holding. + _entriesMoved(gone, came) { + const held = this._nameCounts !== null && this._countedAt === this._entriesVersion; + this._entriesVersion++; + if (!held) { + return; + } + const counts = this._nameCounts; + if (gone !== null) { + const left = (counts.get(gone) ?? 0) - 1; + if (left > 0) { + counts.set(gone, left); + } + else { + counts.delete(gone); + } + } + if (came !== null) { + counts.set(came, (counts.get(came) ?? 0) + 1); + } + this._countedAt = this._entriesVersion; } // ---- The edits a save of this file can write ---------------------------------------------- // @@ -114,13 +161,12 @@ export default class MatNode extends ContainerNode { let verdict = this._valueVerdicts.get(entry); if (verdict === undefined) { const refused = freshRefusal(entry, record); - verdict = refused - ? editRefusalOf(refused) - : this._namespaceHolds(entry.name) > 1 - ? cannotEdit(entry.name, duplicateWhy(entry.name)) - : null; + verdict = refused ? editRefusalOf(refused) : null; this._valueVerdicts.set(entry, verdict); } + if (!verdict && this._namespaceHolds(entry.name) > 1) { + verdict = cannotEdit(entry.name, duplicateWhy(entry.name)); + } if (!verdict && key === 'Add') { const array = [node, node.parent].find((n) => isStruct(n) && n._dims.reduce((a, b) => a * b, 1) !== 1); if (array) { @@ -178,9 +224,20 @@ export default class MatNode extends ContainerNode { * each record that became none (one the reader dropped) under its own name, as a save writes * it (MatFileWriter.refuseDuplicates). A rename into a name another holds is refused for it * (DataNode.setProperty), naming this file (_namespaceLabel). + * + * Counted when first asked, and moved with every variable added, removed or renamed after + * (_entriesMoved), so that a rename costs a lookup and not a count of every name: as a + * dictionary's are (SectionNode._namespaceHolds, F1-23). + * + * A record the reader dropped without a name, one that does not inflate or holds no matrix, + * is counted under none: what it would be called is not known, so an added or renamed + * variable is not held to it (MatFileWriter.refuseDuplicates, likewise). Every such record + * already breaks a rule MATLAB loads a file by (MatFileCheck: `compressed-wrapper`, + * `top-level-type`), and for all of them but one past the inflate ceiling that is a rule + * MATLAB fails the whole load on: no variable of the file is loaded beside it, whatever its name. */ _namespaceHolds(name) { - if (!this._nameCounts) { + if (!this._nameCounts || this._countedAt !== this._entriesVersion) { const counts = new Map(); const add = (n) => counts.set(n, (counts.get(n) ?? 0) + 1); for (const child of this.children) { @@ -192,6 +249,7 @@ export default class MatNode extends ContainerNode { } } this._nameCounts = counts; + this._countedAt = this._entriesVersion; } return this._nameCounts.get(name) ?? 0; } diff --git a/dist/datamodel/node/container/MatNode.js.map b/dist/datamodel/node/container/MatNode.js.map index b4a9c999..13909456 100644 --- a/dist/datamodel/node/container/MatNode.js.map +++ b/dist/datamodel/node/container/MatNode.js.map @@ -1 +1 @@ -{"version":3,"file":"MatNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/container/MatNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"MatNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/container/MatNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/datamodel/node/BaseNode.ts b/src/datamodel/node/BaseNode.ts index 07734cbd..1b36b9be 100644 --- a/src/datamodel/node/BaseNode.ts +++ b/src/datamodel/node/BaseNode.ts @@ -451,10 +451,15 @@ export default class BaseNode { while (root.parent) { root = root.parent; } - const source = root as unknown as { dirty?: boolean }; + const source = root as unknown as { dirty?: boolean; _nodeEdited?: (node: BaseNode) => void }; if (source.dirty !== undefined) { source.dirty = true; } + // And a source that keeps what it found of each of its entries is told which node changed, + // so that it forgets what it found of that node's entry, and of no other (MatNode._nodeEdited). + if (typeof source._nodeEdited === 'function') { + source._nodeEdited(this); + } // Every mutation reaches here, so this is where a rename — the edit that actually moves // a link — is caught. A value edit drops the index too, needlessly; the rebuild rides // the row build that edit was already going to cause. diff --git a/src/datamodel/node/DataNode.ts b/src/datamodel/node/DataNode.ts index a5d4e3a4..0d2c28b1 100644 --- a/src/datamodel/node/DataNode.ts +++ b/src/datamodel/node/DataNode.ts @@ -498,10 +498,13 @@ export default class DataNode extends BaseNode { // something asks for it directly — renaming a Simulink.Parameter's `Value` row was // exactly that, accepted by the model and dropped by serialize, which writes the // key `Value` whatever the node is called. + // Said as the source says it, when it is the source that refuses (BaseNode.sourceEditRefusal: + // a MAT-file's variable stored after its subsystem), which _refuseEncodedEdit has asked + // already for every class whose setter comes here first. if (!this.nameEditable) { return { error: true, - reason: `'${this.displayName}' is not a name this entry can carry, so it cannot be renamed.`, + reason: sourceEditRefusal(this, 'Name') ?? `'${this.displayName}' is not a name this entry can carry, so it cannot be renamed.`, invalidValue: stringValue, validValue: this.displayName, }; diff --git a/src/datamodel/node/container/MatNode.ts b/src/datamodel/node/container/MatNode.ts index a0b08aac..e4d0ae2a 100644 --- a/src/datamodel/node/container/MatNode.ts +++ b/src/datamodel/node/container/MatNode.ts @@ -26,6 +26,7 @@ import { } from '../../parser/MatFileWriter.js'; import type { MatWriteError } from '../../parser/MatWriter.js'; import { validateMatlabName } from '../../matlabName.js'; +import { owningEntryOf } from '../DataNode.js'; import { basenameOf } from '../../fileKinds.js'; // What MatNode.fromParsed builds a tree from: a parse of this package's (ParsedMat), or a @@ -35,7 +36,7 @@ export type MatParse = Pick & export default class MatNode extends ContainerNode { header: string; - _dirty: boolean; + dirty: boolean; _anonymousElements: MatVariable[]; // The file as a save splices it (ParsedMat's fields of the same names): its header's 128 // bytes, every record in it, the subsystem's offset, and whether the records are the file. @@ -57,22 +58,30 @@ export default class MatNode extends ContainerNode { // node back. So a record's node, in the tree or not, is what became of the record. _recordNodes: Map; _nodeRecords: Map; - // What the gate of the editor (_editRefusal) has found, kept until the next edit: the - // refusal of the file as a whole (undefined until asked), the subsystem's record, the - // refusal of each variable's value, and how many variables hold each name. Every edit - // marks the file dirty, and setting `dirty` forgets all but the first two, which no edit - // changes. + // What the gate of the editor (_editRefusal) has found: the refusal of the file as a whole + // (undefined until asked) and the subsystem's record, which no edit changes; what a save would + // refuse of each variable's value written fresh, kept until an edit of that variable + // (_nodeEdited) or its leaving or joining the file (addChild, removeChild); and how many + // variables hold each name, moved with every variable added, removed or renamed, as of + // `_entriesVersion` (_namespaceHolds). _fileVerdict: string | null | undefined; _subsystem: MatRecord | null | undefined; - _valueVerdicts: Map; + _valueVerdicts: WeakMap; _nameCounts: Map | null; + _countedAt: number; + // Moved by every change to which variables this file holds and what they are called, as a + // dictionary's section's is (SectionNode._entriesVersion): BaseNode._replaceWith moves it too, + // so that a slot that changes hands has its names counted again. + _entriesVersion: number; constructor(name: string) { super(name, null); this.header = ''; - this._dirty = false; - this._valueVerdicts = new Map(); + this.dirty = false; + this._valueVerdicts = new WeakMap(); this._nameCounts = null; + this._countedAt = -1; + this._entriesVersion = 0; this._anonymousElements = []; this.headerBytes = null; this.records = null; @@ -111,16 +120,62 @@ export default class MatNode extends ContainerNode { return this._fileRefusal() !== null; } - // Every edit sets it (BaseNode._markSourceDirty, and this class's own add and remove), so it - // is where what the gate found of the tree as it was is forgotten (_editRefusal). - get dirty(): boolean { - return this._dirty; + // An edit of `node`, which is a variable of this file or a node under one (BaseNode. + // _markSourceDirty): what the gate found of that variable's value is forgotten, and of no other, + // since nothing a save refuses of a value written fresh is about another variable + // (freshRefusal). Which names two of them share is counted apart (_namespaceHolds). Forgetting + // every variable's at every edit re-walked every variable a table showed after each, and each + // of N renames counted N names again. + _nodeEdited(node: BaseNode): void { + const entry = owningEntryOf(node); + if (entry && entry.parent === this) { + this._valueVerdicts.delete(entry); + } } - set dirty(value: boolean) { - this._dirty = value; - this._valueVerdicts.clear(); - this._nameCounts = null; + addChild(child: BaseNode, index?: number): BaseNode { + super.addChild(child, index); + this._valueVerdicts.delete(child); + this._entriesMoved(null, child.name); + return child; + } + + removeChild(child: BaseNode): void { + const before = this.children.length; + super.removeChild(child); + if (this.children.length < before) { + this._valueVerdicts.delete(child); + this._entriesMoved(child.name, null); + } + } + + // One of my variables renamed (DataNode.setProperty): its name's count moves with it. + _entryRenamed(oldName: string, newName: string): void { + this._entriesMoved(oldName, newName); + } + + // A variable of this file stopped being called `gone`, and one started being called `came` + // (either null): one removed, added or renamed. The version moves, and the counts, when they + // are of the version before, move with it and go on holding. + _entriesMoved(gone: string | null, came: string | null): void { + const held = this._nameCounts !== null && this._countedAt === this._entriesVersion; + this._entriesVersion++; + if (!held) { + return; + } + const counts = this._nameCounts!; + if (gone !== null) { + const left = (counts.get(gone) ?? 0) - 1; + if (left > 0) { + counts.set(gone, left); + } else { + counts.delete(gone); + } + } + if (came !== null) { + counts.set(came, (counts.get(came) ?? 0) + 1); + } + this._countedAt = this._entriesVersion; } // ---- The edits a save of this file can write ---------------------------------------------- @@ -177,13 +232,12 @@ export default class MatNode extends ContainerNode { let verdict = this._valueVerdicts.get(entry); if (verdict === undefined) { const refused = freshRefusal(entry, record); - verdict = refused - ? editRefusalOf(refused) - : this._namespaceHolds(entry.name) > 1 - ? cannotEdit(entry.name, duplicateWhy(entry.name)) - : null; + verdict = refused ? editRefusalOf(refused) : null; this._valueVerdicts.set(entry, verdict); } + if (!verdict && this._namespaceHolds(entry.name) > 1) { + verdict = cannotEdit(entry.name, duplicateWhy(entry.name)); + } if (!verdict && key === 'Add') { const array = [node, node.parent].find((n) => isStruct(n) && n._dims.reduce((a, b) => a * b, 1) !== 1) as MatlabVariableNode | undefined; if (array) { @@ -249,9 +303,20 @@ export default class MatNode extends ContainerNode { * each record that became none (one the reader dropped) under its own name, as a save writes * it (MatFileWriter.refuseDuplicates). A rename into a name another holds is refused for it * (DataNode.setProperty), naming this file (_namespaceLabel). + * + * Counted when first asked, and moved with every variable added, removed or renamed after + * (_entriesMoved), so that a rename costs a lookup and not a count of every name: as a + * dictionary's are (SectionNode._namespaceHolds, F1-23). + * + * A record the reader dropped without a name, one that does not inflate or holds no matrix, + * is counted under none: what it would be called is not known, so an added or renamed + * variable is not held to it (MatFileWriter.refuseDuplicates, likewise). Every such record + * already breaks a rule MATLAB loads a file by (MatFileCheck: `compressed-wrapper`, + * `top-level-type`), and for all of them but one past the inflate ceiling that is a rule + * MATLAB fails the whole load on: no variable of the file is loaded beside it, whatever its name. */ _namespaceHolds(name: string): number { - if (!this._nameCounts) { + if (!this._nameCounts || this._countedAt !== this._entriesVersion) { const counts = new Map(); const add = (n: string) => counts.set(n, (counts.get(n) ?? 0) + 1); for (const child of this.children) { @@ -263,6 +328,7 @@ export default class MatNode extends ContainerNode { } } this._nameCounts = counts; + this._countedAt = this._entriesVersion; } return this._nameCounts.get(name) ?? 0; } diff --git a/test/matEditGate.test.ts b/test/matEditGate.test.ts index 217f2d56..56bf3f10 100644 --- a/test/matEditGate.test.ts +++ b/test/matEditGate.test.ts @@ -21,8 +21,10 @@ import { join } from 'node:path'; import { fileURLToPath } from 'node:url'; import { MatWriteError } from '../src/datamodel/parser/MatWriter.js'; import { parseMat } from '../src/datamodel/parser/MatParser.js'; +import { checkMatFile, violationsAdded } from '../src/datamodel/parser/MatFileCheck.js'; import { sourceEditRefusal } from '../src/datamodel/node/BaseNode.js'; import MatNode from '../src/datamodel/node/container/MatNode.js'; +import MatlabVariableNode from '../src/datamodel/node/data/MatlabVariableNode.js'; import { toDTO } from '../src/core/dto.js'; import { createSession } from '../src/index.js'; import { zlibSync } from 'fflate'; @@ -517,6 +519,12 @@ describe('what a file, or where a variable stands in it, refuses of every edit', expect(edit(node, 'Name', 'late2')).toMatchObject({ error: true, reason: why }); expect(edit(node, 'Value', '5')).toMatchObject({ error: true, reason: why }); expect(node.setProperty('Name', 'late2')).toMatchObject({ error: true, reason: why }); + // And by the rename's own refusal of a name the node does not take (nameEditable), for a setter + // that does not ask the source first: as the source says it, not as a name the entry cannot carry. + const asked = node._refuseEncodedEdit; + node._refuseEncodedEdit = () => null; + expect(node.setProperty('Name', 'late2')).toMatchObject({ error: true, reason: why }); + node._refuseEncodedEdit = asked; expect(root.dirty).toBe(false); // The variable before the subsystem is as any other. expect(by('Param').nameEditable).toBe(true); @@ -542,6 +550,41 @@ describe('what a file, or where a variable stands in it, refuses of every edit', expect(parseMat(arrayBufferOf(save())).variables.map((v) => [v.name, v.value])).toEqual([['a', 5], ['a2', 2], ['b', 3]]); }); + it('what the gate found is forgotten for the variable an edit changed, and the names are counted as they move', () => { + const { session, root, by, edit } = opened(matFile([scalar('a', 1), scalar('a', 2), scalar('b', 3), cellVar('c', [scalar('', 4)])])); + const verdictKept = (n: any) => root._valueVerdicts.has(n); + const [a1, a2, b, c] = root.children; + root.children.forEach((n: any) => n.valueEditable); + expect(root.children.map(verdictKept)).toEqual([true, true, true, true]); + // An edit under `c` forgets what was found of `c`, and of nothing else. + expect(edit(c.children[0], 'Value', '5')).toBe(true); + expect(root.children.map(verdictKept)).toEqual([true, true, true, false]); + // A name moved by a rename, its undo and its redo, an addition and a delete, and their undo: + // what the gate says of the two `a`s, and what the file is said to hold, follow each. + const holds = (...names: string[]) => names.map((n) => root._namespaceHolds(n)); + expect([a1.valueEditable, a2.valueEditable]).toEqual([false, false]); + expect(a2.setProperty('Name', 'z')).toBe(true); + expect([a1.valueEditable, a2.valueEditable, holds('a', 'z')]).toEqual([true, true, [1, 1]]); + expect(edit(b, 'Name', 'y')).toBe(true); + expect(holds('b', 'y')).toEqual([0, 1]); + session.undo(); + expect(holds('b', 'y')).toEqual([1, 0]); + session.redo(); + expect(holds('b', 'y')).toEqual([0, 1]); + expect(root.execAddEntry(undefined, 'a')).toBeNull(); + const added = root.execAddEntry(undefined, 'n'); + expect([holds('n'), root.execAddEntry(undefined, 'n')]).toEqual([[1], null]); + expect(root.execRemoveEntry(by('n'))).not.toBeNull(); + expect(holds('n')).toEqual([0]); + added.redo(); + expect(holds('n')).toEqual([1]); + added.undo(); + expect(holds('n')).toEqual([0]); + // A variable whose slot changes hands (BaseNode._replaceWith) has the names counted again. + expect(a1._replaceWith(MatlabVariableNode.createDefault('q', root))).toBe(true); + expect(holds('a', 'q', 'z')).toEqual([0, 1, 1]); + }); + it('a name the file holds as a record the reader dropped is taken: no rename or addition into it', () => { // A record that is not a matrix (an miINT32 at the top level) is dropped by the reader, and // kept by every save as its bytes; its name is still the file's. @@ -550,6 +593,23 @@ describe('what a file, or where a variable stands in it, refuses of every edit', expect(edit(root.children[1], 'Name', 'a')).toEqual({ error: true, reason: "'a' already exists in f.mat", invalidValue: 'a', validValue: 'b' }); }); + it('a record the reader dropped with no name read out of it holds none: an addition and a rename into any name are taken', () => { + // A compressed record whose payload is no zlib stream: the reader drops it, and no name is + // read out of it. MATLAB fails the whole load on it (`compressed-wrapper`), so no name an + // addition or a rename takes is one MATLAB loads beside it, and the save breaks only that. + const broken = new Uint8Array([...u32le(15), ...u32le(8), 1, 2, 3, 4, 5, 6, 7, 8]); + const input = matFile([scalar('a', 1), broken]); + const before = checkMatFile(new Uint8Array(input)); + expect(before.map((v) => v.code)).toEqual(['compressed-wrapper']); + const { root, edit, save } = opened(input); + expect([root.records[1].status, root.records[1].name, root.readOnly]).toEqual(['dropped', null, false]); + expect(root.execAddEntry(undefined, 'x')).not.toBeNull(); + expect(edit(root.children[0], 'Name', 'y')).toBe(true); + const saved = save(); + expect(parseMat(arrayBufferOf(saved)).variables.map((v) => v.name)).toEqual(['y', 'x']); + expect(violationsAdded(before, checkMatFile(saved), new Map([['y', 'a']]))).toEqual([]); + }); + it('a variable whose record holds bytes past its element: no rename, refused as it is made; its value is written fresh', () => { // A compressed record whose stream inflates to the element and 8 bytes more: the reader reads // the element, and a save has no element of the record's own to put a new name in. From 46502c71fbec0657fcc7d7e4635edfbbbf738fa1 Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Tue, 20 Oct 2026 19:49:41 -0400 Subject: [PATCH 13/13] [wip] Hold the other venues' editors to the MAT-file's, but for the objects the MAT-file freezes The cross-venue test stripped every editor from both sides at every shared path once the MAT-file froze its objects, so an editability regression in a model workspace or a dictionary went unseen. Now only a path inside a variable that is or holds an object is compared with the MAT-file as it would present without its save's rule, editors and all, and the MAT-file there differs from that only by its editors; every other path is compared as it was before the gate. Also pin the struct-array cap on either side of it for _unexpandedStruct, and tell a typed object's row by instanceof rather than by its constructor's name. --- test/complexMcosFixtures.test.ts | 31 ++++++++++++++++++++++++++----- test/matStructArray.test.ts | 3 +++ test/sparseFixtures.test.ts | 2 +- 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/test/complexMcosFixtures.test.ts b/test/complexMcosFixtures.test.ts index 3b73ef28..595262a3 100644 --- a/test/complexMcosFixtures.test.ts +++ b/test/complexMcosFixtures.test.ts @@ -417,8 +417,11 @@ const editableIn = (p: unknown): unknown[] => { }; const withoutEditable = (p: unknown): unknown => JSON.parse(JSON.stringify(p, (k, v) => (EDITABLE_KEYS.has(k) ? undefined : v))); // And the way the .mat's own may: its save writes an object only as it was read, so every row of -// an object there is shown and not edited (MatNode._editRefusal), where a model workspace and a -// binary dictionary edit it. So what it presents is compared with every editor taken out: the +// an object there, and of a variable holding one, is shown and not edited (MatNode._editRefusal), +// where a model workspace and a binary dictionary edit it. So at such a path, and only there, the +// .mat's side alone is taken as the file would present it without that rule (its gate answering +// nothing, `ungated`), which the other venue is held to, editors and all, as it was before the +// gate; and what the .mat presents is held to that with every editor taken out of both: the // flags, the Name and Value cells' own, and an editable column's cell (BaseNode.toRow), which is // its text when it takes none. const EDITABILITY_KEYS = new Set(['valueEditable', '_valueEditable', '_descriptionEditable']); @@ -437,6 +440,13 @@ const withoutEditability = (p: unknown): unknown => describe('every value presents the same in the .mat as in each other venue that holds it', () => { const mat = MAT.variables(); + const ungated = MAT.variables(); + ungated._editRefusal = () => null; + // Whether the variable `path` is in, or under, is an object or holds one, by MATLAB's record. + const holdsObject = (path: string) => { + const root = path.split(/[.({]/)[0]; + return Object.entries(MAT.truth.paths).some(([p, t]) => t.isobject && (p === root || /^[.({]/.test(p.slice(root.length)) && p.startsWith(root))); + }; for (const fx of FIXTURES.slice(1)) { const variables = fx.variables(); const shared = Object.keys(fx.truth.paths).filter((p) => { @@ -445,6 +455,9 @@ describe('every value presents the same in the .mat as in each other venue that }); it(`${fx.file} shares values with the .mat`, () => { expect(shared.length).toBeGreaterThan(0); + // Of objects, compared with the .mat as it would present them ungated, and plain values, + // compared with the .mat as it is. + expect([shared.some(holdsObject), shared.some((p) => !holdsObject(p))]).toEqual([true, true]); }); for (const path of shared) { const pins = [pinnedAt(MAT.file, path), pinnedAt(fx.file, path)]; @@ -461,18 +474,26 @@ describe('every value presents the same in the .mat as in each other venue that const a = nodeAt(mat, path); const b = nodeAt(variables, path); const text = fx.file === 'complex.sldd'; - const shown = (n: any) => withoutEditability(text ? withoutEditable(presentation(n, n.displayName)) : presentation(n, n.displayName)); + const shown = (n: any) => (text ? withoutEditable(presentation(n, n.displayName)) : presentation(n, n.displayName)); if (text) { expect(editableIn(presentation(b, b.displayName)), `${path}: a MAT stream, display-only`).not.toContain(true); } + // What the other venue is held to: the .mat as it presents, or at an object's path as it + // would without its save's rule, of which the .mat's own differs only by its editors. + let mine = a; + if (holdsObject(path)) { + mine = nodeAt(ungated, path); + expect(withoutEditability(shown(a)), `${path}: the .mat, but for its editors`).toEqual(withoutEditability(shown(mine))); + expect(editableIn(presentation(a, a.displayName)), `${path}: the .mat's value of an object, display-only`).not.toContain(true); + } if (pins.some(Boolean)) { // A pinned venue is held to its pin, and an unpinned one has been graded against // MATLAB above; what is left to say is that the pin is still needed. [a, b].forEach((n, i) => pins[i] && expect(n.displayValue, path).toBe(pins[i]![2])); - expect(shown(b), `${path}: pinned, and no longer different`).not.toEqual(shown(a)); + expect(shown(b), `${path}: pinned, and no longer different`).not.toEqual(shown(mine)); return; } - expect(shown(b)).toEqual(shown(a)); + expect(shown(b)).toEqual(shown(mine)); }); } } diff --git a/test/matStructArray.test.ts b/test/matStructArray.test.ts index 4c81e6de..ddb43ada 100644 --- a/test/matStructArray.test.ts +++ b/test/matStructArray.test.ts @@ -355,6 +355,9 @@ describe('a MAT struct array with no fields, past the row cap', () => { expect(opened(fieldless('s', [3, 4])).map(shown)).toEqual([['s', '<3x4 struct>', 12]]); expect(opened(fieldless('s', [1, MAX])).map(shown)).toEqual([['s', `<1x${MAX} struct>`, MAX]]); expect(opened(fieldless('s', [1, MAX + 1])).map(shown)).toEqual([['s', `<1x${MAX + 1} struct>`, 0]]); + // And the one rule every writer asks of it (MatlabVariableNode._unexpandedStruct: written as the + // bytes it was read from), on either side of the cap. + expect([opened(fieldless('s', [1, MAX]))[0]._unexpandedStruct(), opened(fieldless('s', [1, MAX + 1]))[0]._unexpandedStruct()]).toEqual([false, true]); // The size that ran the heap out, at top level, in a struct field and in a cell. Asked // last, so that a reader without the cap fails on the case above instead of here. const [s, t, c] = opened(fieldless('s', BIG), structVar('t', ['f'], [{ f: fieldless('', BIG) }]), cellVar('c', [fieldless('', BIG)])); diff --git a/test/sparseFixtures.test.ts b/test/sparseFixtures.test.ts index 5258a00f..6c7dc3cc 100644 --- a/test/sparseFixtures.test.ts +++ b/test/sparseFixtures.test.ts @@ -712,7 +712,7 @@ describe('a sparse array\'s rows are its non-zeros, and it has no Variable Edito // Hex-backed values are read-only through and through, and so are a text dictionary's // MAT streams (the C-012 ruling, 2026-10-15), and a .mat's object, which its save writes // as it was read (MatNode._editRefusal); the rest edit as before. - const inMatObject = venue.name === 'mat' && row.owningEntry.constructor.name !== 'MatlabVariableNode'; + const inMatObject = venue.name === 'mat' && !(row.owningEntry instanceof MatlabVariableNode); expect(row.valueEditable, `${path} ${row.displayName}`).toBe(venue.name !== 'binary' && venue.name !== 'text' && !inMatObject); } }