UNPKG

@eflexsystems/node-open-protocol

Version:

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

564 lines (496 loc) 18.9 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 MID = require('../src/mid/0106.js'); describe("MID 0106", () => { it("parser rev 1", (done) => { // this has been manually written, as per the docs. Needs to replace with real data let msg = { mid: 106, revision: 1, payload: Buffer.from("01030201030123456789040105STATION-TEST 062019-03-08:10:28:29070108Mode 1 09110011 120213011411511611720.13001845.07201922.00002018.0000219999.992200.000013021411511611721.07001846.16101922.00002018.0000219999.992200.00002300") }; MID.parser(msg, {}, (err, data) => { if(err){ console.log(err); } expect(data).to.be.deep.equal({ mid: 106, revision: 1, payload: { totalNoOfMessages: 3, messageNumber: 1, dataNoSystem: 123456789, stationNo: 1, stationName: "STATION-TEST", time: "2019-03-08:10:28:29", modeNo: 1, modeName: "Mode 1", simpleStatus: 1, pmStatus: 0, wpId: "", numberOfBolts: 2, bolts: [ { ordinalBoltNumber: 1, simpleBoltStatus: 1, torqueStatus: 1, angleStatus: 1, boltT: 20.13, boltA: 45.072, boltTHighLimit: 22, boltTLowLimit: 18, boltAHighLimit: 9999.99, boltALowLimit: 0 }, { ordinalBoltNumber: 2, simpleBoltStatus: 1, torqueStatus: 1, angleStatus: 1, boltT: 21.07, boltA: 46.161, boltTHighLimit: 22, boltTLowLimit: 18, boltAHighLimit: 9999.99, boltALowLimit: 0 } ], numberOfSpecialValues: 0, specialValues: [] } }); done(); }); }); it("parser rev 1 with special values", (done) => { // this has been manually written, as per the docs. Needs to replace with real data let msg = { mid: 106, revision: 1, payload: Buffer.from("01020201030123456789040105STATION-TEST 062019-03-08:10:28:29070108Mode 1 09110011 120113011411511611720.13001845.07201922.00002018.0000219999.992200.00002302specialTestVar1 UI06222222specialTestVar2 UI20This is a test ") }; MID.parser(msg, {}, (err, data) => { if (err) { console.log(err); } expect(data).to.be.deep.equal({ mid: 106, revision: 1, payload: { totalNoOfMessages: 2, messageNumber: 1, dataNoSystem: 123456789, stationNo: 1, stationName: "STATION-TEST", time: "2019-03-08:10:28:29", modeNo: 1, modeName: "Mode 1", simpleStatus: 1, pmStatus: 0, wpId: "", numberOfBolts: 1, bolts: [ { ordinalBoltNumber: 1, simpleBoltStatus: 1, torqueStatus: 1, angleStatus: 1, boltT: 20.13, boltA: 45.072, boltTHighLimit: 22, boltTLowLimit: 18, boltAHighLimit: 9999.99, boltALowLimit: 0 } ], numberOfSpecialValues: 2, specialValues: [ { variableName: "specialTestVar1", variableType: "UI", variableLength: 6, variableValue: "222222" }, { variableName: "specialTestVar2", variableType: "UI", variableLength: 20, variableValue: "This is a test" } ] } }); done(); }); }); it("parser rev 2", (done) => { // this has been manually written, as per the docs. Needs to replace with real data let msg = { mid: 106, revision: 2, payload: Buffer.from("01030201030123456789040105STATION-TEST 062019-03-08:10:28:29070108Mode 1 09110011 120213011411511611720.13001845.07201922.00002018.0000219999.992200.000013021411511611721.07001846.16101922.00002018.0000219999.992200.00002300") }; MID.parser(msg, {}, (err, data) => { if (err) { console.log(err); } expect(data).to.be.deep.equal({ mid: 106, revision: 2, payload: { totalNoOfMessages: 3, messageNumber: 1, dataNoSystem: 123456789, stationNo: 1, stationName: "STATION-TEST", time: "2019-03-08:10:28:29", modeNo: 1, modeName: "Mode 1", simpleStatus: 1, pmStatus: 0, wpId: "", numberOfBolts: 2, bolts: [ { ordinalBoltNumber: 1, simpleBoltStatus: 1, torqueStatus: 1, angleStatus: 1, boltT: 20.13, boltA: 45.072, boltTHighLimit: 22, boltTLowLimit: 18, boltAHighLimit: 9999.99, boltALowLimit: 0 }, { ordinalBoltNumber: 2, simpleBoltStatus: 1, torqueStatus: 1, angleStatus: 1, boltT: 21.07, boltA: 46.161, boltTHighLimit: 22, boltTLowLimit: 18, boltAHighLimit: 9999.99, boltALowLimit: 0 } ], numberOfSpecialValues: 0, specialValues: [] } }); done(); }); }); it("parser rev 3", (done) => { // this has been manually written, as per the docs. Needs to replace with real data let msg = { mid: 106, revision: 3, payload: Buffer.from("01030201030123456789040105STATION-TEST 062019-03-08:10:28:29070108Mode 1 09110011 120213011411511611720.13001845.07201922.00002018.0000219999.992200.000013021411511611721.07001846.16101922.00002018.0000219999.992200.00002300") }; MID.parser(msg, {}, (err, data) => { if (err) { console.log(err); } expect(data).to.be.deep.equal({ mid: 106, revision: 3, payload: { totalNoOfMessages: 3, messageNumber: 1, dataNoSystem: 123456789, stationNo: 1, stationName: "STATION-TEST", time: "2019-03-08:10:28:29", modeNo: 1, modeName: "Mode 1", simpleStatus: 1, pmStatus: 0, wpId: "", numberOfBolts: 2, bolts: [ { ordinalBoltNumber: 1, simpleBoltStatus: 1, torqueStatus: 1, angleStatus: 1, boltT: 20.13, boltA: 45.072, boltTHighLimit: 22, boltTLowLimit: 18, boltAHighLimit: 9999.99, boltALowLimit: 0 }, { ordinalBoltNumber: 2, simpleBoltStatus: 1, torqueStatus: 1, angleStatus: 1, boltT: 21.07, boltA: 46.161, boltTHighLimit: 22, boltTLowLimit: 18, boltAHighLimit: 9999.99, boltALowLimit: 0 } ], numberOfSpecialValues: 0, specialValues: [] } }); done(); }); }); it.skip("parser rev 4", (done) => { let msg = { mid: 106, revision: 4, payload: Buffer.from("????") }; MID.parser(msg, {}, (err, data) => { if (err) { console.log(err); } expect(data).to.be.deep.equal({ mid: 106, revision: 4, payload: { //??? } }); done(); }); }); it.skip("serializer rev 1", (done) => { let msg = { mid: 106, revision: 1, payload: { totalNoOfMessages: 3, messageNumber: 1, dataNoSystem: 123456789, stationNo: 1, stationName: "STATION-TEST", time: "2019-03-08:10:28:29", modeNo: 1, modeName: "Mode 1", simpleStatus: 1, pmStatus: 0, wpId: "", numberOfBolts: 2, bolts: [ { ordinalBoltNumber: 1, simpleBoltStatus: 1, torqueStatus: 1, angleStatus: 1, boltT: 20.13, boltA: 45.072, boltTHighLimit: 22, boltTLowLimit: 18, boltAHighLimit: 9999.99, boltALowLimit: 0 }, { ordinalBoltNumber: 2, simpleBoltStatus: 1, torqueStatus: 1, angleStatus: 1, boltT: 21.07, boltA: 46.161, boltTHighLimit: 22, boltTLowLimit: 18, boltAHighLimit: 9999.99, boltALowLimit: 0 } ], numberOfSpecialValues: 0, specialValues: [] } }; MID.serializer(msg, {}, (err, data) => { if(err){ console.log(err); } expect(data).to.be.deep.equal({ mid: 106, revision: 1, payload: Buffer.from("01030201030123456789040105STATION-TEST 062019-03-08:10:28:29070108Mode 1 09110011 120213011411511611720.13001845.07201922.00002018.0000219999.992200.000013021411511611721.07001846.16101922.00002018.0000219999.992200.00002300") }); done(); }); }); it.skip("serializer rev 2", (done) => { let msg = { mid: 106, revision: 2, payload: { totalNoOfMessages: 3, messageNumber: 1, dataNoSystem: 123456789, stationNo: 1, stationName: "STATION-TEST", time: "2019-03-08:10:28:29", modeNo: 1, modeName: "Mode 1", simpleStatus: 1, pmStatus: 0, wpId: "", numberOfBolts: 2, bolts: [ { ordinalBoltNumber: 1, simpleBoltStatus: 1, torqueStatus: 1, angleStatus: 1, boltT: 20.13, boltA: 45.072, boltTHighLimit: 22, boltTLowLimit: 18, boltAHighLimit: 9999.99, boltALowLimit: 0 }, { ordinalBoltNumber: 2, simpleBoltStatus: 1, torqueStatus: 1, angleStatus: 1, boltT: 21.07, boltA: 46.161, boltTHighLimit: 22, boltTLowLimit: 18, boltAHighLimit: 9999.99, boltALowLimit: 0 } ], numberOfSpecialValues: 0, specialValues: [] } }; MID.serializer(msg, {}, (err, data) => { if (err) { console.log(err); } expect(data).to.be.deep.equal({ mid: 106, revision: 2, payload: Buffer.from("01030201030123456789040105STATION-TEST 062019-03-08:10:28:29070108Mode 1 09110011 120213011411511611720.13001845.07201922.00002018.0000219999.992200.000013021411511611721.07001846.16101922.00002018.0000219999.992200.00002300") }); done(); }); }); it.skip("serializer rev 3", (done) => { let msg = { mid: 106, revision: 3, payload: { totalNoOfMessages: 3, messageNumber: 1, dataNoSystem: 123456789, stationNo: 1, stationName: "STATION-TEST", time: "2019-03-08:10:28:29", modeNo: 1, modeName: "Mode 1", simpleStatus: 1, pmStatus: 0, wpId: "", numberOfBolts: 2, bolts: [ { ordinalBoltNumber: 1, simpleBoltStatus: 1, torqueStatus: 1, angleStatus: 1, boltT: 20.13, boltA: 45.072, boltTHighLimit: 22, boltTLowLimit: 18, boltAHighLimit: 9999.99, boltALowLimit: 0 }, { ordinalBoltNumber: 2, simpleBoltStatus: 1, torqueStatus: 1, angleStatus: 1, boltT: 21.07, boltA: 46.161, boltTHighLimit: 22, boltTLowLimit: 18, boltAHighLimit: 9999.99, boltALowLimit: 0 } ], numberOfSpecialValues: 0, specialValues: [] } }; MID.serializer(msg, {}, (err, data) => { if (err) { console.log(err); } expect(data).to.be.deep.equal({ mid: 106, revision: 3, payload: Buffer.from("01030201030123456789040105STATION-TEST 062019-03-08:10:28:29070108Mode 1 09110011 120213011411511611720.13001845.07201922.00002018.0000219999.992200.000013021411511611721.07001846.16101922.00002018.0000219999.992200.00002300") }); done(); }); }); it.skip("serializer rev 4", (done) => { let msg = { mid: 106, revision: 4, payload: { //???? } }; MID.serializer(msg, {}, (err, data) => { if (err) { console.log(err); } expect(data).to.be.deep.equal({ mid: 106, revision: 4, payload: Buffer.from("????") }); done(); }); }); it("Should return error, parser with invalid revision", (done) => { let msg = { mid: 106, revision: 7, payload: Buffer.from("0106020030040022050012062019-03-08:10:28:29") }; MID.parser(msg, {}, (err, data) => { expect(err).to.be.an('error'); done(); }); }); it.skip("Should return error, serializer with invalid revision", (done) => { let msg = { mid: 106, revision: 12, payload: {} }; MID.serializer(msg, {}, (err, data) => { expect(err).to.be.an('error'); done(); }); }); it("Should return array revision", (done) => { let revisions = MID.revision(); expect(revisions).to.have.lengthOf(3); done(); }); });