From e0489f5ca80c812377a79a4b02ad8907af48b267 Mon Sep 17 00:00:00 2001 From: Tyrel Souza Date: Mon, 30 Oct 2023 21:02:45 -0400 Subject: [PATCH] small test files --- benchtop-fe/src/parsers/Hardware.js | 21 +-- .../hardware_calibration/smallest.txt | 134 ++++++++++++++++++ .../parsers/__tests__/parseHardware.test.js | 88 ++++++++++-- .../parsers/__tests__/parseTransducer.test.js | 64 ++++++++- .../__tests__/transducer_verify/smallest.txt | 21 +++ 5 files changed, 309 insertions(+), 19 deletions(-) create mode 100644 benchtop-fe/src/parsers/__tests__/hardware_calibration/smallest.txt create mode 100644 benchtop-fe/src/parsers/__tests__/transducer_verify/smallest.txt diff --git a/benchtop-fe/src/parsers/Hardware.js b/benchtop-fe/src/parsers/Hardware.js index f9e9b0c..c0ad432 100644 --- a/benchtop-fe/src/parsers/Hardware.js +++ b/benchtop-fe/src/parsers/Hardware.js @@ -1,11 +1,10 @@ -import {ONE_NEW_LINE, TWO_NEW_LINES} from "./utils/constants.js"; - const isInRange = (value, masterValue) => { return (masterValue["Low Limit"] <= value && value <= masterValue["High Limit"]); } const calculateDelta = (value, lowLimit) => { return Math.abs(lowLimit - value); } + function outOfTolerance(readings) { // Calculate Out of Tolerances for (const reading of readings) { @@ -56,8 +55,8 @@ const KEEP = { function deviceDataToObj(lines, name, kind) { const keep = KEEP[kind] const deviceData = { - "Name":name, - "Master Values":{}, + "Name": name, + "Master Values": {}, "Gauge Reading": [] }; for (const line of lines) { @@ -72,9 +71,9 @@ function deviceDataToObj(lines, name, kind) { for (const start of keep) { if (keyTrimmed.startsWith(start)) { if (keyTrimmed.includes("Master")) { - // Master values occur twice, but due to the fact that this is - // editing KeyValues not Indexes, it will replace - // the masters with the second instance of these. + // Master values occur twice, but due to the fact that this is + // editing KeyValues not Indexes, it will replace + // the masters with the second instance of these. // No manual checks to skip the first. deviceData["Master Values"][keyTrimmed] = {"v": value.trim()} } else { @@ -88,7 +87,7 @@ function deviceDataToObj(lines, name, kind) { for (let i in deviceData["Gauge Reading"]) { i = parseInt(i) - const key = (kind === "Mass Flow Trans") ? `Master Reading ${i+1}` : `Master Value ${i+1}` + const key = (kind === "Mass Flow Trans") ? `Master Reading ${i + 1}` : `Master Value ${i + 1}` deviceData["Gauge Reading"][i]["Master Value"] = deviceData["Master Values"][key]["v"] } delete deviceData["Master Values"] @@ -148,6 +147,11 @@ const parseCalibrationData = (text, accuracy) => { } function parseHardwareCalibration(content, accuracy) { + // hack because we can't be sure that the file will end in two newlines, so might as well force it to add two + // this way if there's only zero or one, we can still regex match on that + content += "\r\n\r\n" + + // Replace the newlines consistently on windows/linux content = content.replace(/\r\n/g, "\r").replace(/\n/g, "\r") const [instrument, ports] = content.split("|| Hardware Calibration Report ||"); const instrumentInfo = parseInstrumentInfo(instrument); @@ -157,5 +161,6 @@ function parseHardwareCalibration(content, accuracy) { } export default function ParseHardwareCalibration(content, accuracy) { + return parseHardwareCalibration(content, accuracy); } \ No newline at end of file diff --git a/benchtop-fe/src/parsers/__tests__/hardware_calibration/smallest.txt b/benchtop-fe/src/parsers/__tests__/hardware_calibration/smallest.txt new file mode 100644 index 0000000..9a85074 --- /dev/null +++ b/benchtop-fe/src/parsers/__tests__/hardware_calibration/smallest.txt @@ -0,0 +1,134 @@ +|| Instrument Info || + +Instrument Name Chassis2 Adult +Serial Number BBP1736 +Time 11:31:39 +Date 07/12/2022 + + +|| Hardware Calibration Report || + +Hardware 0 +=============================================================== + Test Port 1 + =========================================================== + + + Mass Flow Trans + =========================================================== + Transducer Custom + Input AIN 2 + Setpoint Pressure 1 25.000 psig + Analog Value 1 8688254 cnts + Master Value 1 0.041 sccm + Linearity 0.129 % + Last Cal Date 12/07/2020 + Last Cal Time 10:35:20 + Xdcr Filter Code Median + Xdcr Typ Residual 108.000 + Xdcr Zero LL 0.000 cnts + Xdcr Zero HL 0.000 cnts + Xdcr Zero Lwin 0.000 + Xdcr Zero Hwin 0.000 + Xdcr Analog Min 0.000 cnts + Xdcr Analog Max 0.000 cnts + Xdcr Base Min 0.000 + Xdcr Base Max 0.000 + Setpoint Pressure 1 5.800 psig + Instrument Pressure 1 5.824 psig + Instrument Flow 1 0.038 sccm + Master Value 1 0.000 sccm + Master Reading 1 0.000 sccm + Verify Date 07/12/2022 + Verify Time 10:54:56 + + + Pressure Transducer + =========================================================== + Transducer CTS D34-441 45PSIA + Input AIN 1 + Setpoint Pressure 1 0.000 psig + Analog Value 1 10087020 cnts + Master Value 1 0.001 psig + XDCR Analog ATM 10086749 + Atm Pressure -0.000 bar + Linearity 0.082 % + Last Cal Date 12/07/2020 + Last Cal Time 09:03:38 + Xdcr Filter Code Med, J-Filter + Xdcr Typ Residual 80.000 + Xdcr Zero LL 9654557.000 cnts + Xdcr Zero HL 10485333.000 cnts + Xdcr Zero Lwin -2.501 psig + Xdcr Zero Hwin 2.499 psig + Xdcr Analog Min 5699952.000 cnts + Xdcr Analog Max 15110248.000 cnts + Xdcr Base Min -4294967.000 + Xdcr Base Max 8589935.000 + Setpoint Pressure 1 0.000 psig + Instrument Pressure 1 0.000 psig + Master Value 1 0.000 psig + Verify Date 07/12/2022 + Verify Time 08:14:59 + + + Test Port 2 + =========================================================== + + + Mass Flow Trans + =========================================================== + Transducer Custom + Input AIN 4 + Setpoint Pressure 1 25.000 psig + Analog Value 1 8689552 cnts + Master Value 1 0.054 sccm + Linearity 0.166 % + Last Cal Date 12/07/2020 + Last Cal Time 10:50:52 + Xdcr Filter Code Median + Xdcr Typ Residual 83.000 + Xdcr Zero LL 0.000 cnts + Xdcr Zero HL 0.000 cnts + Xdcr Zero Lwin 0.000 + Xdcr Zero Hwin 0.000 + Xdcr Analog Min 0.000 cnts + Xdcr Analog Max 0.000 cnts + Xdcr Base Min 0.000 + Xdcr Base Max 0.000 + Setpoint Pressure 1 5.800 psig + Instrument Pressure 1 5.780 psig + Instrument Flow 1 0.049 sccm + Master Value 1 0.000 sccm + Master Reading 1 0.000 sccm + Verify Date 07/12/2022 + Verify Time 11:01:54 + + + Pressure Transducer + =========================================================== + Transducer CTS D34-441 45PSIA + Input AIN 3 + Setpoint Pressure 1 0.000 psig + Analog Value 1 10050243 cnts + Master Value 1 0.001 psig + XDCR Analog ATM 10050055 + Atm Pressure -0.000 bar + Linearity 0.082 % + Last Cal Date 12/07/2020 + Last Cal Time 09:11:34 + Xdcr Filter Code Med, J-Filter + Xdcr Typ Residual 59.000 + Xdcr Zero LL 9654557.000 cnts + Xdcr Zero HL 10485333.000 cnts + Xdcr Zero Lwin -2.501 psig + Xdcr Zero Hwin 2.499 psig + Xdcr Analog Min 5699952.000 cnts + Xdcr Analog Max 15110248.000 cnts + Xdcr Base Min -4294967.000 + Xdcr Base Max 8589935.000 + Setpoint Pressure 1 0.000 psig + Instrument Pressure 1 -0.000 psig + Master Value 1 0.000 psig + Verify Date 07/12/2022 + Verify Time 08:21:53 \ No newline at end of file diff --git a/benchtop-fe/src/parsers/__tests__/parseHardware.test.js b/benchtop-fe/src/parsers/__tests__/parseHardware.test.js index f6dae88..f71fd28 100644 --- a/benchtop-fe/src/parsers/__tests__/parseHardware.test.js +++ b/benchtop-fe/src/parsers/__tests__/parseHardware.test.js @@ -1,15 +1,87 @@ +const fs = require('fs'); import {readFiles} from "../utils/file_utils.js"; - import ParseHardwareCalibration from "../Hardware" + // const file = fs.readFileSync("src/parsers/__tests__/hardware_calibration/hardware_calibration.txt", 'utf8') describe("Test for all files", () => { - let files = readFiles("src/parsers/__tests__/hardware_calibration/"); - for (const file of files) { - test(`Can parse ${file.name}`, () => { - const calibrations = ParseHardwareCalibration(file.content, 0.05); - console.log(calibrations) - }) - } + let files = readFiles("src/parsers/__tests__/hardware_calibration/"); + for (const file of files) { + test(`Can parse ${file.name}`, () => { + const calibrations = ParseHardwareCalibration(file.content, 0.05); + console.log(calibrations) + }) + } }); + +describe("Testing proper shape", () => { + test("It outputs an array of arrays", () => { + const content = fs.readFileSync("src/parsers/__tests__/hardware_calibration/smallest.txt", 'utf8'); + const calibrations = ParseHardwareCalibration(content, 0.05); + expect(calibrations).toEqual( + { + "Calibration": { + "Test Port 1": { + "Mass Flow Trans": { + "Gauge Reading": [{ + "Delta": 0, + "High Limit": 0, + "In Range": false, + "Low Limit": 0, + "Master Value": 0, + "Out Of Tolerance": 0, + "Unit": "sccm", + "Value": 0 + }], "Name": "Custom", "Verify Date": "07/12/2022", "Verify Time": "10:54:56" + }, + "Pressure Transducer": { + "Gauge Reading": [{ + "Delta": 2250, + "High Limit": 2250, + "In Range": false, + "Low Limit": -2250, + "Master Value": 0, + "Out Of Tolerance": 2250, + "Unit": "psig", + "Value": 0 + }], "Name": "45PSIA", "Verify Date": "07/12/2022", "Verify Time": "08:14:59" + } + }, + "Test Port 2": { + "Mass Flow Trans": { + "Gauge Reading": [{ + "Delta": 0, + "High Limit": 0, + "In Range": false, + "Low Limit": 0, + "Master Value": 0, + "Out Of Tolerance": 0, + "Unit": "sccm", + "Value": 0 + }], "Name": "Custom", "Verify Date": "07/12/2022", "Verify Time": "11:01:54" + }, + "Pressure Transducer": { + "Gauge Reading": [{ + "Delta": 2250, + "High Limit": 2250, + "In Range": false, + "Low Limit": -2250, + "Master Value": 0, + "Out Of Tolerance": 2250, + "Unit": "psig", + "Value": -0 + }], "Name": "45PSIA", "Verify Date": "07/12/2022", "Verify Time": "08:21:53" + } + }, + }, + "Instrument": { + "Date": "07/12/2022", + "Instrument Name": "Chassis2 Adult", + "Serial Number": "BBP1736", + "Time": "11:31:39" + } + } + ); + }) +}); \ No newline at end of file diff --git a/benchtop-fe/src/parsers/__tests__/parseTransducer.test.js b/benchtop-fe/src/parsers/__tests__/parseTransducer.test.js index 153a48b..a2bf365 100644 --- a/benchtop-fe/src/parsers/__tests__/parseTransducer.test.js +++ b/benchtop-fe/src/parsers/__tests__/parseTransducer.test.js @@ -15,7 +15,7 @@ describe("Test for all files", () => { expect(transducer).toHaveProperty("Gauge Reading") expect(transducer).not.toHaveProperty("Master Value") - expect(transducer["Gauge Reading"].length).toBeGreaterThan(1); + expect(transducer["Gauge Reading"].length).toBeGreaterThan(0); } }); } @@ -50,6 +50,64 @@ describe("Testing Errors", () => { ParseTransducer(`|| Transducer Verify Report ||\nTRANSDUCER1\n===============================================================\nTransducer 1 CTS D34-442 115FigNewtons`, 0); } expect(e).toThrowError(Error("Unknown Type of Test, do not know unit: FIGNEWTONS")) - }) -}) \ No newline at end of file +}) + +describe("Testing proper shape", () => { + test("It outputs an array of arrays", () => { + const content = fs.readFileSync("src/parsers/__tests__/transducer_verify/smallest.txt.txt", 'utf8'); + const transducers = ParseTransducer(content, 0.05); + expect(transducers).toEqual( + [ + { + Instrument: { + Accuracy: 0.0005, + Value: 115, + Unit: 'PSIA', + 'Part Number': 'CTS D34-442', + 'Limit ABS': 57.5, + 'Transducer Name': 'Transducer 1', + 'Transducer Type': 'Pressure', + 'Verify Date': '07/20/22', + 'Verify Time': '11:20:26' + }, + 'Gauge Reading': [ + { + "Delta": 57.5, + "High Limit": 57.5, + "In Range": true, + "Low Limit": -57.5, + "Master Value": 0, + "Out Of Tolerance": 0, + "Value": 0, + }, + ] + }, + { + Instrument: { + Accuracy: 0.0005, + Value: 250, + Unit: 'SCCM', + 'Part Number': 'CTS A12-221', + 'Limit ABS': 125, + 'Transducer Name': 'Transducer 2', + 'Transducer Type': 'Flow', + 'Verify Date': '07/15/21', + 'Verify Time': '14:55:10' + }, + 'Gauge Reading': [ + { + "Delta": 125, + "High Limit": 125, + "In Range": true, + "Low Limit": -125, + "Master Value": 0, + "Out Of Tolerance": 0, + "Value": -0, + }, + ] + } + ] + ) + }) +}); \ No newline at end of file diff --git a/benchtop-fe/src/parsers/__tests__/transducer_verify/smallest.txt b/benchtop-fe/src/parsers/__tests__/transducer_verify/smallest.txt new file mode 100644 index 0000000..e31b8de --- /dev/null +++ b/benchtop-fe/src/parsers/__tests__/transducer_verify/smallest.txt @@ -0,0 +1,21 @@ +|| Transducer Verify Report || +TRANSDUCER1 +=============================================================== +Transducer 1 CTS D34-442 115PSIA +Setpoint Pressure 1 0.000 psig +Instrument Pressure 1 0.000 psig +Master Value 1 0.000 psig +Verify Date 07/20/22 +Verify Time 11:20:26 + +TRANSDUCER2 +=============================================================== +Transducer 2 CTS A12-221 250SCCM +Setpoint Pressure 1 20.000 psig +Instrument Pressure 1 20.154 psig +Instrument Flow 1 -0.082 sccm +Master Reading 1 0.000 sccm +Master Value 1 0.000 sccm +Verify Date 07/15/21 +Verify Time 14:55:10 +