diff --git a/lib/plugins/Label_2P_FM3.test.ts b/lib/plugins/Label_2P_FM3.test.ts index 921e4bd..6e99639 100644 --- a/lib/plugins/Label_2P_FM3.test.ts +++ b/lib/plugins/Label_2P_FM3.test.ts @@ -88,4 +88,13 @@ describe('Label 2P Preamble FM3', () => { expect(decodeResult.formatted.description).toBe('Flight Report'); expect(decodeResult.formatted.items.length).toBe(0); }); + + test('missing FM3 preamble', () => { + // 7 comma-parts but no `FM3 ` token in parts[0] + message.text = '1217,1312,+ 43.77,- 70.18, 39981, 426, 25'; + const decodeResult = plugin.decode(message); + + expect(decodeResult.decoded).toBe(false); + expect(decodeResult.decoder.decodeLevel).toBe('none'); + }); }); diff --git a/lib/plugins/Label_2P_FM3.ts b/lib/plugins/Label_2P_FM3.ts index 0de4a86..3fceba0 100644 --- a/lib/plugins/Label_2P_FM3.ts +++ b/lib/plugins/Label_2P_FM3.ts @@ -23,7 +23,7 @@ export class Label_2P_FM3 extends DecoderPlugin { if (parts.length === 7) { const header = parts[0].split('FM3 '); - if (header.length == 0) { + if (header.length < 2) { // can't use preambles, as there can be info before `FM4` // so let's check if we want to decode it here ResultFormatter.unknown(decodeResult, message.text); diff --git a/lib/plugins/Label_2P_FM4.test.ts b/lib/plugins/Label_2P_FM4.test.ts index b6382c8..373e925 100644 --- a/lib/plugins/Label_2P_FM4.test.ts +++ b/lib/plugins/Label_2P_FM4.test.ts @@ -85,4 +85,14 @@ describe('Label_2P Preamble FM4', () => { expect(decodeResult.formatted.description).toBe('Flight Report'); expect(decodeResult.formatted.items.length).toBe(0); }); + + test('missing FM4 preamble', () => { + // 10 comma-parts but no `FM4` token in parts[0] + message.text = + 'KIAD,OMAA,140256,1448, 39.43,- 75.62,23228,328, 43.5, 72500'; + const decodeResult = plugin.decode(message); + + expect(decodeResult.decoded).toBe(false); + expect(decodeResult.decoder.decodeLevel).toBe('none'); + }); }); diff --git a/lib/plugins/Label_2P_FM4.ts b/lib/plugins/Label_2P_FM4.ts index 3443d98..fd300c4 100644 --- a/lib/plugins/Label_2P_FM4.ts +++ b/lib/plugins/Label_2P_FM4.ts @@ -22,7 +22,7 @@ export class Label_2P_FM4 extends DecoderPlugin { if (parts.length === 10) { const header = parts[0].split('FM4'); - if (header.length == 0) { + if (header.length < 2) { // can't use preambles, as there can be info before `FM4` // so let's check if we want to decode it here ResultFormatter.unknown(decodeResult, message.text); diff --git a/lib/plugins/Label_2P_FM5.test.ts b/lib/plugins/Label_2P_FM5.test.ts index a337dac..2cfd3d4 100644 --- a/lib/plugins/Label_2P_FM5.test.ts +++ b/lib/plugins/Label_2P_FM5.test.ts @@ -49,4 +49,14 @@ describe('Label_2P Preamble FM5', () => { expect(decodeResult.formatted.description).toBe('Flight Report'); expect(decodeResult.formatted.items.length).toBe(0); }); + + test('missing FM5 preamble', () => { + // 12 comma-parts but no `FM5 ` token in parts[0] + message.text = + 'EIDW,OMAA,113522,1540,+45.147, +23.384,35002,116.24,502 ,36900,ETD23N ,'; + const decodeResult = plugin.decode(message); + + expect(decodeResult.decoded).toBe(false); + expect(decodeResult.decoder.decodeLevel).toBe('none'); + }); }); diff --git a/lib/plugins/Label_2P_FM5.ts b/lib/plugins/Label_2P_FM5.ts index a2e3125..4c169ae 100644 --- a/lib/plugins/Label_2P_FM5.ts +++ b/lib/plugins/Label_2P_FM5.ts @@ -22,7 +22,7 @@ export class Label_2P_FM5 extends DecoderPlugin { if (parts.length === 12) { const header = parts[0].split('FM5 '); - if (header.length == 0) { + if (header.length < 2) { // can't use preambles, as there can be info before `FM4` // so let's check if we want to decode it here ResultFormatter.unknown(decodeResult, message.text);