UNPKG

aprs-parser

Version:

JavaScript library for parsing APRS packets

87 lines (63 loc) 3.34 kB
'use strict'; const chai = require('chai'); const expect = chai.expect; const TelemetryDescriptionParser = require('../lib/Telemetry/TelemetryDescriptionParser'); const TelemetryNames = require('../lib/MessageModels/TelemetryNames.js'); const TelemetryLabels = require('../lib/MessageModels/TelemetryLabels.js'); const TelemetryEquations = require('../lib/MessageModels/TelemetryEquations.js'); const TelemetryBitSense = require('../lib/MessageModels/TelemetryBitSense.js'); describe('Telemetry description', () => { it('Names (not all fields described)', () => { const content = ':N0QBF-11 :PARM.Battery,Btemp,ATemp,Pres,Alt,Camra'; const parser = new TelemetryDescriptionParser(); expect(parser.isMatching(content)).to.equal(true); const parsed = parser.tryParse(content); expect(parsed).to.be.an.instanceOf(TelemetryNames); expect(parsed.call).to.eql('N0QBF-11'); expect(parsed.desc).to.eql(['Battery', 'Btemp', 'ATemp', 'Pres', 'Alt', 'Camra']); }); it('Names (too many fields)', () => { const content = ':N0QBF-11 :PARM.Battery,Btemp,ATemp,Pres,Alt,Camra,Chut,Sun,10m,ATV,Test,Test,Test,Test'; const parser = new TelemetryDescriptionParser(); expect(parser.isMatching(content)).to.equal(true); expect(() => { parser.tryParse(content); }).to.throw(Error); }); it('Unit/Labels', () => { const content = ':N0QBF-11 :UNIT.v/100,deg.F,deg.F,Mbar,Kft,Click,OPEN,on,on,hi'; const parser = new TelemetryDescriptionParser(); expect(parser.isMatching(content)).to.equal(true); const parsed = parser.tryParse(content); expect(parsed).to.be.an.instanceOf(TelemetryLabels); expect(parsed.call).to.eql('N0QBF-11'); expect(parsed.labels).to.eql(['v/100', 'deg.F', 'deg.F', 'Mbar', 'Kft', 'Click', 'OPEN', 'on', 'on', 'hi']); }); it('Coeff', () => { const content = ':N0QBF-11 :EQNS.0,5.2,0,0,.53,-32,3,4.39,49,-32,3,18,1,2,3'; const parser = new TelemetryDescriptionParser(); expect(parser.isMatching(content)).to.equal(true); const parsed = parser.tryParse(content); expect(parsed).to.be.an.instanceOf(TelemetryEquations); expect(parsed.call).to.eql('N0QBF-11'); expect(parsed.coeff).to.eql([[0, 5.2, 0], [0, 0.53, -32], [3, 4.39, 49], [-32, 3, 18], [1, 2, 3]]); }); it('Coeff (not valid number of coefficients)', () => { const content = ':N0QBF-11 :EQNS.0,5.2,0,0,.53,-32,3,4.39,49,-32,3,18,1,2,3,5'; const parser = new TelemetryDescriptionParser(); expect(parser.isMatching(content)).to.equal(true); expect(() => { parser.tryParse(content); }).to.throw(Error); }); it('Bit sense', () => { const content = ':N0QBF-11 :BITS.10110000,N0QBF’s Big Balloon'; const parser = new TelemetryDescriptionParser(); expect(parser.isMatching(content)).to.equal(true); const parsed = parser.tryParse(content); expect(parsed).to.be.an.instanceOf(TelemetryBitSense); expect(parsed.call).to.eql('N0QBF-11'); expect(parsed.sense).to.eql([true, false, true, true, false, false, false, false]); expect(parsed.projectName).to.eql('N0QBF’s Big Balloon'); }); });