1+ import { MessageDecoder } from '../MessageDecoder' ;
2+ import { Label_58 } from './Label_58' ;
3+
4+ describe ( 'Label_58' , ( ) => {
5+ let plugin : Label_58 ;
6+
7+ beforeEach ( ( ) => {
8+ const decoder = new MessageDecoder ( ) ;
9+ plugin = new Label_58 ( decoder ) ;
10+ } ) ;
11+
12+ test ( 'matches qualifiers' , ( ) => {
13+ expect ( plugin . decode ) . toBeDefined ( ) ;
14+ expect ( plugin . name ) . toBe ( 'label-58' ) ;
15+ expect ( plugin . qualifiers ) . toBeDefined ( ) ;
16+ expect ( plugin . qualifiers ( ) ) . toEqual ( {
17+ labels : [ '58' ] ,
18+ } ) ;
19+ } ) ;
20+
21+ test ( 'decodes variant 1' , ( ) => {
22+ const text = 'OG0704/06/230942/N39.214/W76.106/22683/N/'
23+ const decodeResult = plugin . decode ( { text : text } ) ;
24+
25+ expect ( decodeResult . decoded ) . toBe ( true ) ;
26+ expect ( decodeResult . decoder . decodeLevel ) . toBe ( 'partial' ) ;
27+ expect ( decodeResult . raw . flight_number ) . toBe ( 'OG0704' ) ;
28+ expect ( decodeResult . raw . day ) . toBe ( 6 ) ;
29+ expect ( decodeResult . raw . time_of_day ) . toBe ( 83382 ) ;
30+ expect ( decodeResult . raw . position . latitude ) . toBe ( 39.214 ) ;
31+ expect ( decodeResult . raw . position . longitude ) . toBe ( - 76.106 ) ;
32+ expect ( decodeResult . raw . altitude ) . toBe ( 22683 ) ;
33+ expect ( decodeResult . formatted . items . length ) . toBe ( 5 ) ;
34+ expect ( decodeResult . formatted . items [ 0 ] . label ) . toBe ( 'Flight Number' ) ;
35+ expect ( decodeResult . formatted . items [ 0 ] . value ) . toBe ( 'OG0704' ) ;
36+ expect ( decodeResult . formatted . items [ 1 ] . label ) . toBe ( 'Day of Month' ) ;
37+ expect ( decodeResult . formatted . items [ 1 ] . value ) . toBe ( '6' ) ;
38+ expect ( decodeResult . formatted . items [ 2 ] . label ) . toBe ( 'Message Timestamp' ) ;
39+ expect ( decodeResult . formatted . items [ 2 ] . value ) . toBe ( '23:09:42' ) ;
40+ expect ( decodeResult . formatted . items [ 3 ] . label ) . toBe ( 'Aircraft Position' ) ;
41+ expect ( decodeResult . formatted . items [ 3 ] . value ) . toBe ( '39.214 N, 76.106 W' ) ;
42+ expect ( decodeResult . formatted . items [ 4 ] . label ) . toBe ( 'Altitude' ) ;
43+ expect ( decodeResult . formatted . items [ 4 ] . value ) . toBe ( '22683 feet' ) ;
44+ expect ( decodeResult . remaining . text ) . toBe ( 'N/' ) ;
45+ } ) ;
46+
47+ test ( 'does not decode <invalid>' , ( ) => {
48+
49+ const text = 'Bogus/message' ;
50+ const decodeResult = plugin . decode ( { text : text } ) ;
51+
52+ expect ( decodeResult . decoded ) . toBe ( false ) ;
53+ expect ( decodeResult . decoder . decodeLevel ) . toBe ( 'none' ) ;
54+ expect ( decodeResult . decoder . name ) . toBe ( 'label-58' ) ;
55+ expect ( decodeResult . formatted . description ) . toBe ( 'Position Report' ) ;
56+ expect ( decodeResult . message . text ) . toBe ( text ) ;
57+ } ) ;
58+ } ) ;
0 commit comments