fix: correctly detect dollar hack if there is no dollar at the end, also fix the tests
This commit is contained in:
parent
6b24ac59e8
commit
13ed2ef936
|
@ -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 };
|
||||
|
|
|
@ -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 };
|
||||
|
|
|
@ -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', () => {
|
||||
|
|
Loading…
Reference in a new issue