small test files

This commit is contained in:
Tyrel Souza 2023-10-30 21:02:45 -04:00
parent 983c630e6a
commit e0489f5ca8
No known key found for this signature in database
GPG Key ID: F3614B02ACBE438E
5 changed files with 309 additions and 19 deletions

View File

@ -1,11 +1,10 @@
import {ONE_NEW_LINE, TWO_NEW_LINES} from "./utils/constants.js";
const isInRange = (value, masterValue) => { const isInRange = (value, masterValue) => {
return (masterValue["Low Limit"] <= value && value <= masterValue["High Limit"]); return (masterValue["Low Limit"] <= value && value <= masterValue["High Limit"]);
} }
const calculateDelta = (value, lowLimit) => { const calculateDelta = (value, lowLimit) => {
return Math.abs(lowLimit - value); return Math.abs(lowLimit - value);
} }
function outOfTolerance(readings) { function outOfTolerance(readings) {
// Calculate Out of Tolerances // Calculate Out of Tolerances
for (const reading of readings) { for (const reading of readings) {
@ -56,8 +55,8 @@ const KEEP = {
function deviceDataToObj(lines, name, kind) { function deviceDataToObj(lines, name, kind) {
const keep = KEEP[kind] const keep = KEEP[kind]
const deviceData = { const deviceData = {
"Name":name, "Name": name,
"Master Values":{}, "Master Values": {},
"Gauge Reading": [] "Gauge Reading": []
}; };
for (const line of lines) { for (const line of lines) {
@ -72,9 +71,9 @@ function deviceDataToObj(lines, name, kind) {
for (const start of keep) { for (const start of keep) {
if (keyTrimmed.startsWith(start)) { if (keyTrimmed.startsWith(start)) {
if (keyTrimmed.includes("Master")) { if (keyTrimmed.includes("Master")) {
// Master values occur twice, but due to the fact that this is // Master values occur twice, but due to the fact that this is
// editing KeyValues not Indexes, it will replace // editing KeyValues not Indexes, it will replace
// the masters with the second instance of these. // the masters with the second instance of these.
// No manual checks to skip the first. // No manual checks to skip the first.
deviceData["Master Values"][keyTrimmed] = {"v": value.trim()} deviceData["Master Values"][keyTrimmed] = {"v": value.trim()}
} else { } else {
@ -88,7 +87,7 @@ function deviceDataToObj(lines, name, kind) {
for (let i in deviceData["Gauge Reading"]) { for (let i in deviceData["Gauge Reading"]) {
i = parseInt(i) 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"] deviceData["Gauge Reading"][i]["Master Value"] = deviceData["Master Values"][key]["v"]
} }
delete deviceData["Master Values"] delete deviceData["Master Values"]
@ -148,6 +147,11 @@ const parseCalibrationData = (text, accuracy) => {
} }
function parseHardwareCalibration(content, 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") content = content.replace(/\r\n/g, "\r").replace(/\n/g, "\r")
const [instrument, ports] = content.split("|| Hardware Calibration Report ||"); const [instrument, ports] = content.split("|| Hardware Calibration Report ||");
const instrumentInfo = parseInstrumentInfo(instrument); const instrumentInfo = parseInstrumentInfo(instrument);
@ -157,5 +161,6 @@ function parseHardwareCalibration(content, accuracy) {
} }
export default function ParseHardwareCalibration(content, accuracy) { export default function ParseHardwareCalibration(content, accuracy) {
return parseHardwareCalibration(content, accuracy); return parseHardwareCalibration(content, accuracy);
} }

View File

@ -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

View File

@ -1,15 +1,87 @@
const fs = require('fs');
import {readFiles} from "../utils/file_utils.js"; import {readFiles} from "../utils/file_utils.js";
import ParseHardwareCalibration from "../Hardware" import ParseHardwareCalibration from "../Hardware"
// const file = fs.readFileSync("src/parsers/__tests__/hardware_calibration/hardware_calibration.txt", 'utf8') // const file = fs.readFileSync("src/parsers/__tests__/hardware_calibration/hardware_calibration.txt", 'utf8')
describe("Test for all files", () => { describe("Test for all files", () => {
let files = readFiles("src/parsers/__tests__/hardware_calibration/"); let files = readFiles("src/parsers/__tests__/hardware_calibration/");
for (const file of files) { for (const file of files) {
test(`Can parse ${file.name}`, () => { test(`Can parse ${file.name}`, () => {
const calibrations = ParseHardwareCalibration(file.content, 0.05); const calibrations = ParseHardwareCalibration(file.content, 0.05);
console.log(calibrations) 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"
}
}
);
})
});

View File

@ -15,7 +15,7 @@ describe("Test for all files", () => {
expect(transducer).toHaveProperty("Gauge Reading") expect(transducer).toHaveProperty("Gauge Reading")
expect(transducer).not.toHaveProperty("Master Value") 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); 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")) expect(e).toThrowError(Error("Unknown Type of Test, do not know unit: FIGNEWTONS"))
}) })
}) })
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,
},
]
}
]
)
})
});

View File

@ -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