UNPKG

@eflexsystems/node-open-protocol

Version:

A library to interface with Power Tools using the Atlas Copco Open Protocol

841 lines (655 loc) 21 kB
//@ts-check /* Copyright: (c) 2018-2020, Smart-Tech Controle e Automação GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt) */ const { expect } = require('chai'); const helpers = require('../src/helpers.js'); const testNul = helpers.testNul; const padLeft = helpers.padLeft; const padRight = helpers.padRight; const processKey = helpers.processKey; const processParser = helpers.processParser; const processDataFields = helpers.processDataFields; const processResolutionFields = helpers.processResolutionFields; const serializerField = helpers.serializerField; const serializerKey = helpers.serializerKey; describe("Helpers", () => { it("check padLeft string ok", (done) => { expect(padLeft("Teste", 5, 10, " ", false)).to.be.deep.equal("Teste"); done(); }); it("check padLeft string ok", (done) => { expect(padLeft("Teste", 10, 10, " ", false)).to.be.deep.equal(" Teste"); done(); }); it("check padLeft string ok", (done) => { expect(padLeft("Teste", 3, 10, " ", false)).to.be.deep.equal("Tes"); done(); }); it("check padLeft string ok", (done) => { expect(padLeft("Teste", 3, 10, " ", true)).to.be.deep.equal("ste"); done(); }); it("check padRight string ok", (done) => { expect(padRight("Teste", 5, 10, " ", false)).to.be.deep.equal("Teste"); done(); }); it("check padRight string ok", (done) => { expect(padRight("Teste", 10, 10, " ", false)).to.be.deep.equal("Teste "); done(); }); it("check padRight string ok", (done) => { expect(padRight("Teste", 3, 10, " ", false)).to.be.deep.equal("Tes"); done(); }); it("check padRight string ok", (done) => { expect(padRight("Teste", 3, 10, " ", true)).to.be.deep.equal("ste"); done(); }); it("check padLeft number ok", (done) => { expect(padLeft(123, 3)).to.be.deep.equal("123"); done(); }); it("check padLeft number ok", (done) => { expect(padLeft(123, 5)).to.be.deep.equal("00123"); done(); }); it("check padRight string ok", (done) => { expect(padRight(98765, 5)).to.be.deep.equal("98765"); done(); }); it("check padRight string ok", (done) => { expect(padRight(98765, 7)).to.be.deep.equal("9876500"); done(); }); it("check processParser String ok", (done) => { let obj = {}; obj.payload = {}; let buffer = Buffer.from("teste"); let position = { value: 0 }; let obj_final = { payload: { name: "teste" } }; processParser(obj, buffer, "name", "string", 5, position, () => {}); expect(obj).to.be.deep.equal(obj_final); done(); }); it("check processParser rawString error", (done) => { let obj = {}; obj.payload = {}; let buffer = Buffer.from("T45"); let position = { value: 0 }; let obj_final = { payload: { name: "T45te" } }; processParser(obj, buffer, "name", "rawString", 5, position, (err) => { expect(err).to.be.an('error'); done(); }); }); it("check processParser Number ok", (done) => { let obj = {}; obj.payload = {}; let buffer = Buffer.from("12345"); let position = { value: 0 }; let obj_final = { payload: { name: 12345 } }; processParser(obj, buffer, "name", "number", 5, position, () => {}); expect(obj).to.be.deep.equal(obj_final); done(); }); it("check processParser Number error", (done) => { let obj = {}; obj.payload = {}; let buffer = Buffer.from("T45te"); let position = { value: 0 }; let obj_final = { payload: { name: 1452 } }; processParser(obj, buffer, "name", "number", 5, position, (err) => { expect(err).to.be.an('error'); done(); }); }); it("check processParser parameterType error", (done) => { let obj = {}; obj.payload = {}; let buffer = Buffer.from("teste"); let position = { value: 0 }; let obj_final = { payload: { name: "teste" } }; processParser(obj, buffer, "name", "invalid", 5, position, (err) => { expect(err).to.be.an('error'); done(); }); }); it("check testNul ok", (done) => { let obj = {}; let buffer = Buffer.from("teste\u0000"); let position = { value: 5 }; let value = testNul(obj, buffer, "char nul", position, () => {}); expect(value).to.be.deep.equal(true); done(); }); it("check testNul ~nul error", (done) => { let obj = {}; let buffer = Buffer.from("teste\u0000"); let position = { value: 2 }; let value = testNul(obj, buffer, "char nul", position, (err) => { expect(err).to.be.an('error'); }); expect(value).to.be.deep.equal(false); done(); }); it("check testNul out range error", (done) => { let obj = {}; let buffer = Buffer.from("teste\u0000"); let position = { value: 9 }; let value = testNul(obj, buffer, "char nul", position, (err) => { expect(err).to.be.an('error'); }); expect(value).to.be.deep.equal(false); done(); }); it("check processKey ok", (done) => { let obj = {}; let buffer = Buffer.from("01AAAA"); let position = { value: 0 }; let value = processKey(obj, buffer, "check", 1, 2, position, () => {}); expect(value).to.be.deep.equal(true); done(); }); it("check processKey ~number error", (done) => { let obj = {}; let buffer = Buffer.from("01AAAA"); let position = { value: 0 }; let value = processKey(obj, buffer, "check", 10, 2, position, (err) => { expect(err).to.be.an('error'); }); expect(value).to.be.deep.equal(false); done(); }); it("check serializerField invalid type error", (done) => { let obj = {}; obj.payload = { test: "Diego" }; let buffer = Buffer.alloc(10); let position = { value: 0 }; let value = serializerField(obj, buffer, "test", "web", 1, position, (err) => { expect(err).to.be.an('error'); }); expect(value).to.be.deep.equal(false); done(); }); it("check serializerKey invalid type error", (done) => { let obj = {}; obj.payload = { test: "Diego" }; let buffer = Buffer.alloc(10); let position = { value: 0 }; let value = serializerKey(obj, buffer, "AA", 2, position, (err) => { expect(err).to.be.an('error'); }); expect(value).to.be.deep.equal(false); done(); }); it("check processDataFields ok", (done) => { let obj = {}; obj.payload = {}; let buffer = Buffer.from("00002002050010012AB09999005999998562ERTFD"); let position = { value: 0 }; let obj_final = { payload: { fields: [{ parameterID: "00002", parameterName: "Station ID", length: 2, dataType: 5, unit: "001", unitName: "N-m", stepNumber: 12, dataValue: "AB" }, { parameterID: "09999", parameterName: "", length: 5, dataType: 99, unit: "999", unitName: "", stepNumber: 8562, dataValue: "ERTFD" } ] } }; processDataFields(obj, buffer, "fields", 2, position, () => {}); expect(obj).to.be.deep.equal(obj_final); done(); }); it("check processDataFields without interations ok", (done) => { let obj = {}; obj.payload = {}; let buffer = Buffer.from(""); let position = { value: 0 }; let obj_final = { payload: {} }; processDataFields(obj, buffer, "fields", 0, position, () => {}); expect(obj).to.be.deep.equal(obj_final); done(); }); it("check processDataFields invalid parameterID error", (done) => { let obj = {}; obj.payload = {}; let buffer = Buffer.from(""); let position = { value: 0 }; let obj_final = { payload: { fields: [{ parameterID: "00002", parameterName: "Station ID", length: 2, dataType: 5, unit: "001", unitName: "N-m", stepNumber: 12, dataValue: "AB" }] } }; let value = processDataFields(obj, buffer, "fields", 1, position, (err) => { expect(err).to.be.an('error'); }); expect(value).to.be.deep.equal(false); done(); }); it("check processDataFields invalid length error", (done) => { let obj = {}; obj.payload = {}; let buffer = Buffer.from("0000200A050010012AB"); let position = { value: 0 }; let obj_final = { payload: { fields: [{ parameterID: "00002", parameterName: "Station ID", length: 2, dataType: 5, unit: "001", unitName: "N-m", stepNumber: 12, dataValue: "AB" }] } }; let value = processDataFields(obj, buffer, "fields", 1, position, (err) => { expect(err).to.be.an('error'); }); expect(value).to.be.deep.equal(false); done(); }); it("check processDataFields invalid dataType error", (done) => { let obj = {}; obj.payload = {}; let buffer = Buffer.from("00002002AA0010012AB"); let position = { value: 0 }; let obj_final = { payload: { fields: [{ parameterID: "00002", parameterName: "Station ID", length: 2, dataType: 5, unit: "001", unitName: "N-m", stepNumber: 12, dataValue: "AB" }] } }; let value = processDataFields(obj, buffer, "fields", 1, position, (err) => { expect(err).to.be.an('error'); }); expect(value).to.be.deep.equal(false); done(); }); it("check processDataFields invalid unit error", (done) => { let obj = {}; obj.payload = {}; let buffer = Buffer.from("0000200205 0012AB"); let position = { value: 0 }; let obj_final = { payload: { fields: [{ parameterID: "00002", parameterName: "Station ID", length: 2, dataType: 5, unit: "001", unitName: "N-m", stepNumber: 12, dataValue: "AB" }] } }; let value = processDataFields(obj, buffer, "fields", 1, position, (err) => { expect(err).to.be.an('error'); }); expect(value).to.be.deep.equal(false); done(); }); it("check processDataFields invalid stepNumber error", (done) => { let obj = {}; obj.payload = {}; let buffer = Buffer.from("000020020500100ZZAB"); let position = { value: 0 }; let obj_final = { payload: { fields: [{ parameterID: "00002", parameterName: "Station ID", length: 2, dataType: 5, unit: "001", unitName: "N-m", stepNumber: 12, dataValue: "AB" }] } }; let value = processDataFields(obj, buffer, "fields", 1, position, (err) => { expect(err).to.be.an('error'); }); expect(value).to.be.deep.equal(false); done(); }); it("check processDataFields invalid dataValue error", (done) => { let obj = {}; obj.payload = {}; let buffer = Buffer.from("00002002050010012 "); let position = { value: 0 }; let obj_final = { payload: { fields: [{ parameterID: "00002", parameterName: "Station ID", length: 2, dataType: 5, unit: "001", unitName: "N-m", stepNumber: 12, dataValue: "AB" }] } }; let value = processDataFields(obj, buffer, "fields", 1, position, (err) => { expect(err).to.be.an('error'); }); expect(value).to.be.deep.equal(false); done(); }); it("check processResolutionFields ok", (done) => { let obj = {}; obj.payload = {}; let buffer = Buffer.from("0000100010005020011234500105060230020109988"); let position = { value: 0 }; let obj_final = { payload: { resolutions: [{ firstIndex: 1, lastIndex: 10, length: 5, dataType: 2, unit: "001", unitName: "N-m", timeValue: "12345" }, { firstIndex: 105, lastIndex: 6023, length: 2, dataType: 1, unit: "099", unitName: "", timeValue: "88" } ] } }; let value = processResolutionFields(obj, buffer, "resolutions", 2, position, () => {}); expect(obj).to.be.deep.equal(obj_final); expect(value).to.be.deep.equal(true); done(); }); it("check processResolutionFields without interations ok", (done) => { let obj = {}; obj.payload = {}; let buffer = Buffer.from(""); let position = { value: 0 }; let obj_final = { payload: {} }; let value = processResolutionFields(obj, buffer, "resolutions", 0, position, () => {}); expect(obj).to.be.deep.equal(obj_final); expect(value).to.be.deep.equal(true); done(); }); it("check processResolutionFields firstIntex error", (done) => { let obj = {}; obj.payload = {}; let buffer = Buffer.from("0000A000100050200112345"); let position = { value: 0 }; let obj_final = { payload: { resolutions: [{ firstIndex: 1, lastIndex: 10, length: 5, dataType: 2, unit: "001", unitName: "N-m", timeValue: "12345" }] } }; let value = processResolutionFields(obj, buffer, "resolutions", 1, position, (err) => { expect(err).to.be.an('error'); }); expect(value).to.be.deep.equal(false); done(); }); it("check processResolutionFields lastIndex error", (done) => { let obj = {}; obj.payload = {}; let buffer = Buffer.from("00001000AA0050200112345"); let position = { value: 0 }; let obj_final = { payload: { resolutions: [{ firstIndex: 1, lastIndex: 10, length: 5, dataType: 2, unit: "001", unitName: "N-m", timeValue: "12345" }] } }; let value = processResolutionFields(obj, buffer, "resolutions", 1, position, (err) => { expect(err).to.be.an('error'); }); expect(value).to.be.deep.equal(false); done(); }); it("check processResolutionFields length error", (done) => { let obj = {}; obj.payload = {}; let buffer = Buffer.from("000010001000A0200112345"); let position = { value: 0 }; let obj_final = { payload: { resolutions: [{ firstIndex: 1, lastIndex: 10, length: 5, dataType: 2, unit: "001", unitName: "N-m", timeValue: "12345" }] } }; let value = processResolutionFields(obj, buffer, "resolutions", 1, position, (err) => { expect(err).to.be.an('error'); }); expect(value).to.be.deep.equal(false); done(); }); it("check processResolutionFields dataType error", (done) => { let obj = {}; obj.payload = {}; let buffer = Buffer.from("0000100010005-200112345"); let position = { value: 0 }; let obj_final = { payload: { resolutions: [{ firstIndex: 1, lastIndex: 10, length: 5, dataType: 2, unit: "001", unitName: "N-m", timeValue: "12345" }] } }; let value = processResolutionFields(obj, buffer, "resolutions", 1, position, (err) => { expect(err).to.be.an('error'); }); expect(value).to.be.deep.equal(false); done(); }); it("check processResolutionFields unit error", (done) => { let obj = {}; obj.payload = {}; let buffer = Buffer.from("000010001000502 12345"); let position = { value: 0 }; let obj_final = { payload: { resolutions: [{ firstIndex: 1, lastIndex: 10, length: 5, dataType: 2, unit: "001", unitName: "N-m", timeValue: "12345" }] } }; let value = processResolutionFields(obj, buffer, "resolutions", 1, position, (err) => { expect(err).to.be.an('error'); }); expect(value).to.be.deep.equal(false); done(); }); it("check processResolutionFields timeValue error", (done) => { let obj = {}; obj.payload = {}; let buffer = Buffer.from("000010001000502001 "); let position = { value: 0 }; let obj_final = { payload: { resolutions: [{ firstIndex: 1, lastIndex: 10, length: 5, dataType: 2, unit: "001", unitName: "N-m", timeValue: "12345" }] } }; let value = processResolutionFields(obj, buffer, "resolutions", 1, position, (err) => { expect(err).to.be.an('error'); }); expect(value).to.be.deep.equal(false); done(); }); });