diff --git a/tests/GP_Temperature/CharsXMLList.test.ts b/tests/GP_Temperature/CharsXMLList.test.ts new file mode 100644 index 0000000000000000000000000000000000000000..8c68060587a0f70798d5381abcc52249f092453c --- /dev/null +++ b/tests/GP_Temperature/CharsXMLList.test.ts @@ -0,0 +1,27 @@ +/** + * @jest-environment ./tests/XMLEnvironment.ts + * @xml ./tests/resources/GP_Temperature_Complete_DCC.xml + */ + +import * as fc from "fast-check"; +import { indexOf, select, toTextArr, toTextContentArr } from "../util"; +import { CoreDataType, DCCDocument, DCCXMLElement } from "../../src"; +import { string_ISO639_1 } from "../Arbitraries"; + +const base = "//dcc:quantity[@refType='test_charsXMLList']"; +const xpath = { + charsXMLList: `string(${base}/dcc:charsXMLList)`, +}; + +describe("CharsXMLList", () => { + let dcc: DCCDocument, dom, result; + + beforeEach(async () => { + ({ dcc, dom } = await xmlEnv.recreateEnv()); + result = dcc.digitalCalibrationCertificate.measurementResults.measurementResult[0].results.result[0]; + }); + + test("should get correct charsXMLList from XML", () => { + expect(result.data.quantity[1].charsXMLList._text).toBe(select(xpath.charsXMLList, dom)); + }); +}); diff --git a/tests/GP_Temperature/noQuantity.test.ts b/tests/GP_Temperature/noQuantity.test.ts new file mode 100644 index 0000000000000000000000000000000000000000..724ffd7d3d028ae8066e232215f9301cf7318d3d --- /dev/null +++ b/tests/GP_Temperature/noQuantity.test.ts @@ -0,0 +1,47 @@ +/** + * @jest-environment ./tests/XMLEnvironment.ts + * @xml ./tests/resources/GP_Temperature_Complete_DCC.xml + */ + +import * as fc from "fast-check"; +import { indexOf, select, toTextArr, toTextContentArr } from "../util"; +import { CoreDataType, DCCDocument, DCCXMLElement } from "../../src"; +import { string_ISO639_1 } from "../Arbitraries"; + +const base = "//dcc:quantity[@refType='test_noQuantity']"; +const xpath = { + noQuantity: { + name: `string(${base}/dcc:noQuantity/dcc:name)`, + content: `string(${base}/dcc:noQuantity/dcc:content)`, + file: { + fileName: `string(${base}/dcc:noQuantity/dcc:file/dcc:fileName)`, + mimeType: `string(${base}/dcc:noQuantity/dcc:file/dcc:mimeType)`, + dataBase64: `string(${base}/dcc:noQuantity/dcc:file/dcc:dataBase64)`, + }, + }, +}; + +describe("noQuantity", () => { + let dcc: DCCDocument, dom, result; + + beforeEach(async () => { + ({ dcc, dom } = await xmlEnv.recreateEnv()); + result = dcc.digitalCalibrationCertificate.measurementResults.measurementResult[0].results.result[0]; + }); + + test("should get correct name from XML", () => { + expect(result.data.quantity[0].noQuantity.name._text).toBe(select(xpath.noQuantity.name, dom)); + }); + test("should get correct content from XML", () => { + expect(result.data.quantity[0].noQuantity.content[0]._text).toBe(select(xpath.noQuantity.content, dom)); + }); + test("should get correct fileName from XML", () => { + expect(result.data.quantity[0].noQuantity.file[0].fileName._text).toBe(select(xpath.noQuantity.file.fileName, dom)); + }); + test("should get correct mimeType from XML", () => { + expect(result.data.quantity[0].noQuantity.file[0].mimeType._text).toBe(select(xpath.noQuantity.file.mimeType, dom)); + }); + test("should get correct dataBase64 from XML", () => { + expect(result.data.quantity[0].noQuantity.file[0].dataBase64._text).toBe(select(xpath.noQuantity.file.dataBase64, dom)); + }); +}); diff --git a/tests/resources/GP_Temperature_Complete_DCC.xml b/tests/resources/GP_Temperature_Complete_DCC.xml new file mode 100644 index 0000000000000000000000000000000000000000..83042360ec79f9c3c5a1253f82c47a970f5fa59d --- /dev/null +++ b/tests/resources/GP_Temperature_Complete_DCC.xml @@ -0,0 +1,168 @@ +<?xml version="1.0" encoding="UTF-8"?> +<dcc:digitalCalibrationCertificate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dcc="https://ptb.de/dcc" xmlns:si="https://ptb.de/si" xsi:schemaLocation="https://ptb.de/dcc https://ptb.de/dcc/v3.2.0/dcc.xsd" schemaVersion="3.2.0"> + <dcc:administrativeData> + <dcc:dccSoftware> + <dcc:software> + <dcc:name> + <dcc:content>Notepad++ (32-bit)</dcc:content> + </dcc:name> + <dcc:release>v8.2</dcc:release> + </dcc:software> + </dcc:dccSoftware> + <dcc:coreData> + <dcc:countryCodeISO3166_1>DE</dcc:countryCodeISO3166_1> + <dcc:usedLangCodeISO639_1>en</dcc:usedLangCodeISO639_1> + <dcc:mandatoryLangCodeISO639_1>en</dcc:mandatoryLangCodeISO639_1> + <dcc:uniqueIdentifier>GP_DCC_temperature_simplified_1.1.1</dcc:uniqueIdentifier> + <dcc:beginPerformanceDate>1957-08-13</dcc:beginPerformanceDate> + <dcc:endPerformanceDate>1957-08-13</dcc:endPerformanceDate> + <dcc:performanceLocation>laboratory</dcc:performanceLocation> + </dcc:coreData> + <dcc:items> + <dcc:item> + <dcc:name> + <dcc:content lang="en">Temperature sensor</dcc:content> + </dcc:name> + <dcc:manufacturer> + <dcc:name> + <dcc:content>String</dcc:content> + </dcc:name> + </dcc:manufacturer> + <dcc:identifications> + <dcc:identification> + <dcc:issuer>manufacturer</dcc:issuer> + <dcc:value>string-manufacturer-item</dcc:value> + </dcc:identification> + </dcc:identifications> + </dcc:item> + </dcc:items> + <dcc:calibrationLaboratory> + <dcc:contact> + <dcc:name> + <dcc:content>Kalibrierfirma GmbH</dcc:content> + </dcc:name> + <dcc:location> + <dcc:city>Musterstadt</dcc:city> + </dcc:location> + </dcc:contact> + </dcc:calibrationLaboratory> + <dcc:respPersons> + <dcc:respPerson> + <dcc:person> + <dcc:name> + <dcc:content>Michaela Musterfrau</dcc:content> + </dcc:name> + </dcc:person> + </dcc:respPerson> + </dcc:respPersons> + <dcc:customer> + <dcc:name> + <dcc:content>Kunde GmbH</dcc:content> + </dcc:name> + <dcc:eMail>info@kunde.xx</dcc:eMail> + <dcc:location> + <dcc:city>Musterstadt</dcc:city> + <dcc:countryCode>DE</dcc:countryCode> + <dcc:postCode>00900</dcc:postCode> + <dcc:further> + <dcc:content lang="de">Kunden Nr. 1024418</dcc:content> + <dcc:content lang="en">Customer ID no. 1024418</dcc:content> + </dcc:further> + </dcc:location> + </dcc:customer> + </dcc:administrativeData> + <dcc:measurementResults> + <dcc:measurementResult> + <dcc:name> + <dcc:content lang="en">Measurement results</dcc:content> + </dcc:name> + <dcc:results> + <dcc:result refType="gp_measuringResult1"> + <dcc:name> + <dcc:content lang="en">Measuring results</dcc:content> + </dcc:name> + <dcc:data> + <dcc:quantity refType="test_noQuantity"> + <dcc:noQuantity> + <dcc:name>Example name</dcc:name> + <dcc:content>Example text</dcc:content> + <dcc:file refType="examplePicture"> + <dcc:fileName>examplePicture.png</dcc:fileName> + <dcc:mimeType>image/png</dcc:mimeType> + <dcc:dataBase64>iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAEDmlDQ1BrQ0dDb2xvclNwYWNlR2VuZXJpY1JHQgAAOI2NVV1oHFUUPpu5syskzoPUpqaSDv41lLRsUtGE2uj+ZbNt3CyTbLRBkMns3Z1pJjPj/KRpKT4UQRDBqOCT4P9bwSchaqvtiy2itFCiBIMo+ND6R6HSFwnruTOzu5O4a73L3PnmnO9+595z7t4LkLgsW5beJQIsGq4t5dPis8fmxMQ6dMF90A190C0rjpUqlSYBG+PCv9rt7yDG3tf2t/f/Z+uuUEcBiN2F2Kw4yiLiZQD+FcWyXYAEQfvICddi+AnEO2ycIOISw7UAVxieD/Cyz5mRMohfRSwoqoz+xNuIB+cj9loEB3Pw2448NaitKSLLRck2q5pOI9O9g/t/tkXda8Tbg0+PszB9FN8DuPaXKnKW4YcQn1Xk3HSIry5ps8UQ/2W5aQnxIwBdu7yFcgrxPsRjVXu8HOh0qao30cArp9SZZxDfg3h1wTzKxu5E/LUxX5wKdX5SnAzmDx4A4OIqLbB69yMesE1pKojLjVdoNsfyiPi45hZmAn3uLWdpOtfQOaVmikEs7ovj8hFWpz7EV6mel0L9Xy23FMYlPYZenAx0yDB1/PX6dledmQjikjkXCxqMJS9WtfFCyH9XtSekEF+2dH+P4tzITduTygGfv58a5VCTH5PtXD7EFZiNyUDBhHnsFTBgE0SQIA9pfFtgo6cKGuhooeilaKH41eDs38Ip+f4At1Rq/sjr6NEwQqb/I/DQqsLvaFUjvAx+eWirddAJZnAj1DFJL0mSg/gcIpPkMBkhoyCSJ8lTZIxk0TpKDjXHliJzZPO50dR5ASNSnzeLvIvod0HG/mdkmOC0z8VKnzcQ2M/Yz2vKldduXjp9bleLu0ZWn7vWc+l0JGcaai10yNrUnXLP/8Jf59ewX+c3Wgz+B34Df+vbVrc16zTMVgp9um9bxEfzPU5kPqUtVWxhs6OiWTVW+gIfywB9uXi7CGcGW/zk98k/kmvJ95IfJn/j3uQ+4c5zn3Kfcd+AyF3gLnJfcl9xH3OfR2rUee80a+6vo7EK5mmXUdyfQlrYLTwoZIU9wsPCZEtP6BWGhAlhL3p2N6sTjRdduwbHsG9kq32sgBepc+xurLPW4T9URpYGJ3ym4+8zA05u44QjST8ZIoVtu3qE7fWmdn5LPdqvgcZz8Ww8BWJ8X3w0PhQ/wnCDGd+LvlHs8dRy6bLLDuKMaZ20tZrqisPJ5ONiCq8yKhYM5cCgKOu66Lsc0aYOtZdo5QCwezI4wm9J/v0X23mlZXOfBjj8Jzv3WrY5D+CsA9D7aMs2gGfjve8ArD6mePZSeCfEYt8CONWDw8FXTxrPqx/r9Vt4biXeANh8vV7/+/16ffMD1N8AuKD/A/8leAvFY9bLAAAAOGVYSWZNTQAqAAAACAABh2kABAAAAAEAAAAaAAAAAAACoAIABAAAAAEAAAAUoAMABAAAAAEAAAAUAAAAAJEV0scAAAAtSURBVDgRY2RgYPgPxFQDTFQzCWrQqIGUh+hoGI6GIRkhMJpsyAg0NC0jMAwBzu4BJ2FWhpgAAAAASUVORK5CYII=</dcc:dataBase64> + </dcc:file> + </dcc:noQuantity> + </dcc:quantity> + <dcc:quantity refType="test_charsXMLList"> + <dcc:charsXMLList>A B C D E F</dcc:charsXMLList> + </dcc:quantity> + <dcc:quantity refType="test_constant"> + <si:constant> + <si:label>exampleLabel</si:label> + <si:value>306.248</si:value> + <si:unit>\kelvin</si:unit> + <si:dateTime>1111-11-11T11:11:11</si:dateTime> + </si:constant> + </dcc:quantity> + <dcc:quantity refType="test_real"> + <si:real> + <si:label>exampleLabel</si:label> + <si:value>306.248</si:value> + <si:unit>\kelvin</si:unit> + <si:dateTime>1111-11-11T11:11:11</si:dateTime> + </si:real> + </dcc:quantity> + <dcc:quantity refType="test_realListXMLList"> + <si:realListXMLList> + <si:labelXMLList>exampleLabel</si:labelXMLList> + <si:valueXMLList>306.248 373.121 448.253 523.319 593.154</si:valueXMLList> + <si:unitXMLList>\kelvin</si:unitXMLList> + <si:dateTimeXMLList>1111-11-11T11:11:11 1111-11-11T11:11:12 1111-11-11T11:11:13 1111-11-11T11:11:14 1111-11-11T11:11:15</si:dateTimeXMLList> + </si:realListXMLList> + </dcc:quantity> + <dcc:quantity refType="test_hybridConstant"> + <si:hybrid> + <si:constant> + <si:label>exampleLabel</si:label> + <si:value>306.248</si:value> + <si:unit>\kelvin</si:unit> + <si:dateTime>1111-11-11T11:11:11</si:dateTime> + </si:constant> + <si:constant> + <si:label>exampleLabel</si:label> + <si:value>33.098</si:value> + <si:unit>\degreecelsius</si:unit> + <si:dateTime>1111-11-11T11:11:11</si:dateTime> + </si:constant> + </si:hybrid> + </dcc:quantity> + <dcc:quantity refType="test_hybridReal"> + <si:hybrid> + <si:real> + <si:value>306.248</si:value> + <si:unit>\kelvin</si:unit> + </si:real> + <si:real> + <si:value>33.098</si:value> + <si:unit>\degreecelsius</si:unit> + </si:real> + </si:hybrid> + </dcc:quantity> + <dcc:quantity refType="test_hybridRealListXMLList"> + <si:hybrid> + <si:realListXMLList> + <si:valueXMLList>306.248 373.121 448.253 523.319 593.154</si:valueXMLList> + <si:unitXMLList>\kelvin</si:unitXMLList> + </si:realListXMLList> + <si:realListXMLList> + <si:valueXMLList>33.098 99.971 175.103 250.169 320.004</si:valueXMLList> + <si:unitXMLList>\degreecelsius</si:unitXMLList> + </si:realListXMLList> + </si:hybrid> + </dcc:quantity> + </dcc:data> + </dcc:result> + </dcc:results> + </dcc:measurementResult> + </dcc:measurementResults> +</dcc:digitalCalibrationCertificate>