fix: correctly detect dollar hack if there is no dollar at the end, also fix the tests

This commit is contained in:
Paul Bienkowski 2020-11-21 22:46:18 +01:00
parent 6b24ac59e8
commit 13ed2ef936
3 changed files with 23 additions and 18 deletions

View file

@ -350,4 +350,8 @@ Date;Time;Millis;Comment;Latitude;Longitude;Altitude;Course;Speed;HDOP;Satellite
18.11.2020;16:06:16;1282037;;48.723109;9.093963;498;247.62;0;1.01;7;3.74;5;89;20;;0;0;58;49;0;;;31;;7290;44;;;66;;7277;80;;;101;;;128;;;148;;7213;164;;;183;;6901;202;10902;;223;;7060;242;2257;;258;;7057;277;2124;;293;;7045;313;1201;;328;;;361;2137;;371;;6931;396;2055;;407;;6910;432;1201;;442;;;468;2042;;478;;6961;503;1201;;513;;;548;12669;;568;;6909;590;;;617;;7063;636;;;656;;7148;672;;;691;;6777;707;;;727;;6903;747;11631;;767;;;793;1174;;803;;7283;828;;;856;;;889;9154;;908;;7489;929;9129;;943;;7430;965;14679;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
`;
module.exports = { test1, test2 };
const test3 = `Date;Time;Millis;Comment;Latitude;Longitude;Altitude;Course;Speed;HDOP;Satellites;BatteryLevel;Left;Right;Confirmed;Marked;Invalid;InsidePrivacyArea;Factor;Measurements;Tms1;Lus1;Rus1;Tms2;Lus2;Rus2;Tms3;Lus3;Rus3;Tms4;Lus4;Rus4;Tms5;Lus5;Rus5;Tms6;Lus6;Rus6;Tms7;Lus7;Rus7;Tms8;Lus8;Rus8;Tms9;Lus9;Rus9;Tms10;Lus10;Rus10;Tms11;Lus11;Rus11;Tms12;Lus12;Rus12;Tms13;Lus13;Rus13;Tms14;Lus14;Rus14;Tms15;Lus15;Rus15;Tms16;Lus16;Rus16;Tms17;Lus17;Rus17;Tms18;Lus18;Rus18;Tms19;Lus19;Rus19;Tms20;Lus20;Rus20;Tms21;Lus21;Rus21;Tms22;Lus22;Rus22;Tms23;Lus23;Rus23;Tms24;Lus24;Rus24;Tms25;Lus25;Rus25;Tms26;Lus26;Rus26;Tms27;Lus27;Rus27;Tms28;Lus28;Rus28;Tms29;Lus29;Rus29;Tms30;Lus30;Rus30;Tms31;Lus31;Rus31;Tms32;Lus32;Rus32;Tms33;Lus33;Rus33;Tms34;Lus34;Rus34;Tms35;Lus35;Rus35;Tms36;Lus36;Rus36;Tms37;Lus37;Rus37;Tms38;Lus38;Rus38;Tms39;Lus39;Rus39;Tms40;Lus40;Rus40;Tms41;Lus41;Rus41;Tms42;Lus42;Rus42;Tms43;Lus43;Rus43;Tms44;Lus44;Rus44;Tms45;Lus45;Rus45;Tms46;Lus46;Rus46;Tms47;Lus47;Rus47;Tms48;Lus48;Rus48;Tms49;Lus49;Rus49;Tms50;Lus50;Rus50;Tms51;Lus51;Rus51;Tms52;Lus52;Rus52;Tms53;Lus53;Rus53;Tms54;Lus54;Rus54;Tms55;Lus55;Rus55;Tms56;Lus56;Rus56;Tms57;Lus57;Rus57;Tms58;Lus58;Rus58;Tms59;Lus59;Rus59;Tms60;Lus60;Rus60;
21.11.2020;14:27:00;66890;;;;;;;3.83;4;3.99;;286;0;;0;0;58;5;0;;;41;;18355;67;;;87;;18374;113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
`;
module.exports = { test1, test2, test3 };

View file

@ -54,7 +54,7 @@ function _parseString(token) {
function replaceDollarNewlinesHack(body) {
// see if we are using the hack with $ as newlines, replace them for the csv parser
if (body.endsWith('$')) {
if (body.endsWith('$') || /insidePrivacyArea;\$/.test(body)) {
return body.replace(/\$/g, '\n');
}
@ -257,4 +257,4 @@ function* parseObsver2(body) {
}
}
module.exports = { addPointsToTrack, detectFormat, parseObsver1, parseObsver2 };
module.exports = { addPointsToTrack, detectFormat, parseObsver1, parseObsver2, replaceDollarNewlinesHack };

View file

@ -1,7 +1,7 @@
const { addPointsToTrack, parseObsver1, detectFormat, parseObsver2 } = require('./tracks');
const { addPointsToTrack, parseObsver1, detectFormat, parseObsver2, replaceDollarNewlinesHack } = require('./tracks');
const TrackInfo = require('./TrackInfo');
const { test1, test2 } = require('./_tracks_testdata');
const { test1, test2, test3 } = require('./_tracks_testdata');
describe('addPointsToTrack', () => {
it('is a function', () => {
@ -16,33 +16,33 @@ describe('addPointsToTrack', () => {
expect(points[0]).toEqual({
date: '12.07.2020',
time: '09:02:59',
latitude: 0,
longitude: 0,
latitude: null,
longitude: null,
course: 0,
speed: 0,
d1: '255',
d2: '255',
flag: '0',
private: '0',
d1: null,
d2: null,
flag: 0,
private: false,
});
});
});
describe('parseObsver1', () => {
it('can parse sample data', () => {
const points = Array.from(parseObsver1(test1));
const points = Array.from(parseObsver1(replaceDollarNewlinesHack(test1)));
expect(points).toHaveLength(324);
expect(points[0]).toEqual({
date: '12.07.2020',
time: '09:02:59',
latitude: 0,
longitude: 0,
latitude: null,
longitude: null,
course: 0,
speed: 0,
d1: '255',
d2: '255',
flag: '0',
private: '0',
d1: null,
d2: null,
flag: 0,
private: false,
});
});
});
@ -87,6 +87,7 @@ describe('detectFormat', () => {
it('detects format 2', () => {
expect(detectFormat(test2)).toBe(2);
expect(detectFormat(test3)).toBe(2);
});
it('detects invalid format', () => {