@@ -7,60 +7,66 @@ import (
7
7
)
8
8
9
9
var tagblocktests = []struct {
10
- name string
11
- raw string
12
- err string
13
- msg TagBlock
10
+ name string
11
+ raw string
12
+ err string
13
+ block TagBlock
14
+ len int
14
15
}{
15
16
{
16
17
17
18
name : "Test NMEA tag block" ,
18
- raw : "s:Satelite_1,c:1553390539*62" ,
19
- msg : TagBlock {
19
+ raw : "\\ s:Satelite_1,c:1553390539*62\\ !AIVDM,1,2,3 " ,
20
+ block : TagBlock {
20
21
Time : 1553390539 ,
21
22
Source : "Satelite_1" ,
22
23
},
24
+ len : 30 ,
23
25
},
24
26
{
25
27
26
28
name : "Test NMEA tag block with head" ,
27
- raw : "s:satelite,c:1564827317*25" ,
28
- msg : TagBlock {
29
+ raw : "\\ s:satelite,c:1564827317*25\\ !AIVDM,1,2,3 " ,
30
+ block : TagBlock {
29
31
Time : 1564827317 ,
30
32
Source : "satelite" ,
31
33
},
34
+ len : 28 ,
32
35
},
33
36
{
34
37
35
38
name : "Test unknown tag" ,
36
- raw : "x:NorSat_1,c:1564827317*42" ,
37
- msg : TagBlock {
39
+ raw : "\\ x:NorSat_1,c:1564827317*42\\ !AIVDM,1,2,3 " ,
40
+ block : TagBlock {
38
41
Time : 1564827317 ,
39
42
Source : "" ,
40
43
},
44
+ len : 28 ,
41
45
},
42
46
{
43
47
name : "Test unix timestamp" ,
44
- raw : "x:NorSat_1,c:1564827317*42" ,
45
- msg : TagBlock {
48
+ raw : "\\ x:NorSat_1,c:1564827317*42\\ !AIVDM,1,2,3 " ,
49
+ block : TagBlock {
46
50
Time : 1564827317 ,
47
51
Source : "" ,
48
52
},
53
+ len : 28 ,
49
54
},
50
55
{
51
56
52
57
name : "Test milliseconds timestamp" ,
53
- raw : "x:NorSat_1,c:1564827317000*72" ,
54
- msg : TagBlock {
58
+ raw : "\\ x:NorSat_1,c:1564827317000*72\\ !AIVDM,1,2,3 " ,
59
+ block : TagBlock {
55
60
Time : 1564827317000 ,
56
61
Source : "" ,
57
62
},
63
+ len : 31 ,
58
64
},
59
65
{
60
66
61
67
name : "Test all input types" ,
62
- raw : "s:satelite,c:1564827317,r:1553390539,d:ara,g:bulk,n:13,t:helloworld*3F" ,
63
- msg : TagBlock {
68
+ raw : "\\ s:satelite,c:1564827317,r:1553390539,d:ara,g:bulk,n:13,t:helloworld*3F\\ !AIVDM,1,2,3 " ,
69
+ block : TagBlock {
64
70
Time : 1564827317 ,
65
71
RelativeTime : 1553390539 ,
66
72
Destination : "ara" ,
@@ -69,56 +75,61 @@ var tagblocktests = []struct {
69
75
Text : "helloworld" ,
70
76
LineCount : 13 ,
71
77
},
78
+ len : 72 ,
72
79
},
73
80
{
74
81
75
82
name : "Test empty tag in tagblock" ,
76
- raw : "s:satelite,,r:1553390539,d:ara,g:bulk,n:13,t:helloworld*68" ,
83
+ raw : "\\ s:satelite,,r:1553390539,d:ara,g:bulk,n:13,t:helloworld*68\\ !AIVDM,1,2,3 " ,
77
84
err : "nmea: tagblock field is malformed (should be <key>:<value>) []" ,
78
85
},
79
86
{
80
87
81
88
name : "Test Invalid checksum" ,
82
- raw : "s:satelite,c:1564827317*49" ,
89
+ raw : "\\ s:satelite,c:1564827317*49\\ !AIVDM,1,2,3 " ,
83
90
err : "nmea: tagblock checksum mismatch [25 != 49]" ,
84
91
},
85
92
{
86
93
87
94
name : "Test no checksum" ,
88
- raw : "s:satelite,c:156482731749" ,
95
+ raw : "\\ s:satelite,c:156482731749\\ !AIVDM,1,2,3 " ,
89
96
err : "nmea: tagblock does not contain checksum separator" ,
90
97
},
91
98
{
92
99
93
100
name : "Test invalid timestamp" ,
94
- raw : "s:satelite,c:gjadslkg*30" ,
101
+ raw : "\\ s:satelite,c:gjadslkg*30\\ !AIVDM,1,2,3 " ,
95
102
err : "nmea: tagblock unable to parse uint64 [gjadslkg]" ,
96
103
},
97
104
{
98
105
99
106
name : "Test invalid linecount" ,
100
- raw : "s:satelite,n:gjadslkg*3D" ,
107
+ raw : "\\ s:satelite,n:gjadslkg*3D\\ !AIVDM,1,2,3 " ,
101
108
err : "nmea: tagblock unable to parse uint64 [gjadslkg]" ,
102
109
},
103
110
{
104
111
105
112
name : "Test invalid relative time" ,
106
- raw : "s:satelite,r:gjadslkg*21" ,
113
+ raw : "\\ s:satelite,r:gjadslkg*21\\ !AIVDM,1,2,3 " ,
107
114
err : "nmea: tagblock unable to parse uint64 [gjadslkg]" ,
108
115
},
116
+ {
117
+ name : "Test no tagblock" ,
118
+ raw : "!AIVDM,1,2,3" ,
119
+ },
109
120
}
110
121
111
- func TestTagBlock (t * testing.T ) {
122
+ func TestParseTagBlock (t * testing.T ) {
112
123
for _ , tt := range tagblocktests {
113
124
t .Run (tt .name , func (t * testing.T ) {
114
- m , err := parseTagBlock (tt .raw )
125
+ b , n , err := ParseTagBlock (tt .raw )
115
126
if tt .err != "" {
116
127
assert .Error (t , err )
117
- assert .EqualError (t , err , tt .err )
118
128
} else {
119
129
assert .NoError (t , err )
120
- assert .Equal (t , tt .msg , m )
121
130
}
131
+ assert .Equal (t , tt .block , b )
132
+ assert .Equal (t , tt .len , n )
122
133
})
123
134
}
124
135
}
0 commit comments