/** * @licstart The following is the entire license notice for the * Javascript code in this page * * Copyright 2022 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. * * @licend The above is the entire license notice for the * Javascript code in this page */ "use strict"; var _xfa_object = require("../../core/xfa/xfa_object.js"); var _data = require("../../core/xfa/data.js"); var _som = require("../../core/xfa/som.js"); var _parser = require("../../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 _parser.XFAParser().parse(xml); const data = root.datasets.data; const dataHandler = new _data.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((0, _som.searchNode)(root, data, path)[0][_xfa_object.$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); }); });