/* Copyright 2021 Mozilla Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { $uid } from "../../src/core/xfa/xfa_object.js"; import { DataHandler } from "../../src/core/xfa/data.js"; import { searchNode } from "../../src/core/xfa/som.js"; import { XFAParser } from "../../src/core/xfa/parser.js"; describe("Data serializer", function () { it("should serialize data with an annotationStorage", function () { const xml = ` bar 1 Giant Slingshot 1 250.00 250.00 <àé> 2 Road Runner Bait, large bag 5 12.00 60.00 310.00 24.80 334.80 foo `; const root = new XFAParser().parse(xml); const data = root.datasets.data; const dataHandler = new DataHandler(root, data); const storage = new Map(); for (const [path, value] of [ ["Receipt.Detail[0].Units", "12&3"], ["Receipt.Detail[0].Unit_Price", "456>"], ["Receipt.Detail[0].Total_Price", "789"], ["Receipt.Detail[0].àé", "1011"], ["Receipt.Detail[1].PartNo", "foo-bar😀"], ["Receipt.Detail[1].Description", "hello world"], ]) { storage.set(searchNode(root, data, path)[0][$uid], { value }); } const serialized = dataHandler.serialize(storage); const expected = `barfoo1Giant Slingshot12&3456>789<\xC3\xA0\xC3\xA9>10112hello world512.0060.00310.0024.80334.80`; expect(serialized).toEqual(expected); }); });