@@ -14,6 +14,8 @@ var path = require('path');
14
14
var assert = require ( 'assert' ) ;
15
15
var Readable = require ( 'stream' ) . Readable ;
16
16
var dispatch = require ( path . resolve ( __dirname , '../sbp/' ) ) . dispatch ;
17
+ var MsgPosLlh = require ( path . resolve ( __dirname , '../sbp/navigation' ) ) . MsgPosLlh ;
18
+ var MsgVelEcef = require ( path . resolve ( __dirname , '../sbp/navigation' ) ) . MsgVelEcef ;
17
19
18
20
var framedMessage = [ 0x55 , 0x02 , 0x02 , 0xcc , 0x04 , 0x14 , 0x70 , 0x3d , 0xd0 , 0x18 , 0xcf , 0xef , 0xff , 0xff , 0xef , 0xe8 , 0xff , 0xff , 0xf0 , 0x18 , 0x00 , 0x00 , 0x00 , 0x00 , 0x05 , 0x00 , 0x43 , 0x94 ] ;
19
21
var corruptedMessageTooShort = [ 0x55 , 0x02 , 0x02 , 0xcc , 0x04 , 0x12 , 0x70 , 0x3d , 0xd0 , 0x18 , 0xcf , 0xef , 0xff , 0xff , 0xef , 0xe8 , 0xff , 0xff , 0xf0 , 0x18 , 0x00 , 0x00 , 0x00 , 0x00 , 0x05 , 0x00 , 0x43 , 0x94 ] ;
@@ -140,4 +142,98 @@ describe('dispatcher', function () {
140
142
}
141
143
} ) ;
142
144
} ) ;
145
+
146
+ it ( 'should whitelist messages properly - no whitelist' , function ( done ) {
147
+ var msgLlhPayload = new Buffer ( 'VQEC9tciFC4nAPod4rrrtkJAE8szxBiLXsAfnaDoenNRQAAAAAAJAOyL' , 'base64' ) ;
148
+ var msgVelEcefPayload = new Buffer ( 'VQQC9tcUFC4nANoLAACG9f//o/z//wAACQBQ7A==' , 'base64' ) ;
149
+
150
+ var rs = new Readable ( ) ;
151
+ rs . push ( msgLlhPayload ) ;
152
+ rs . push ( msgVelEcefPayload ) ;
153
+ rs . push ( null ) ;
154
+
155
+ var callbacks = 0 ;
156
+ var validMessages = 0 ;
157
+ dispatch ( rs , function ( err , framedMessage ) {
158
+ if ( framedMessage && framedMessage . fields && framedMessage . fields . tow ) {
159
+ validMessages ++ ;
160
+ }
161
+ if ( ( ++ callbacks ) === 2 ) {
162
+ assert . equal ( validMessages , 2 ) ;
163
+ done ( ) ;
164
+ }
165
+ } ) ;
166
+ } ) ;
167
+
168
+ it ( 'should whitelist messages properly - array whitelist' , function ( done ) {
169
+ var msgLlhPayload = new Buffer ( 'VQEC9tciFC4nAPod4rrrtkJAE8szxBiLXsAfnaDoenNRQAAAAAAJAOyL' , 'base64' ) ;
170
+ var msgVelEcefPayload = new Buffer ( 'VQQC9tcUFC4nANoLAACG9f//o/z//wAACQBQ7A==' , 'base64' ) ;
171
+
172
+ var rs = new Readable ( ) ;
173
+ rs . push ( msgVelEcefPayload ) ;
174
+ rs . push ( msgLlhPayload ) ;
175
+ rs . push ( null ) ;
176
+
177
+ var callbacks = 0 ;
178
+ var validMessages = 0 ;
179
+ dispatch ( rs , [ MsgPosLlh . prototype . msg_type ] , function ( err , framedMessage ) {
180
+ assert . equal ( framedMessage . msg_type , MsgPosLlh . prototype . msg_type ) ;
181
+ if ( framedMessage && framedMessage . fields && framedMessage . fields . tow ) {
182
+ validMessages ++ ;
183
+ }
184
+ if ( ( ++ callbacks ) === 1 ) {
185
+ assert . equal ( validMessages , 1 ) ;
186
+ done ( ) ;
187
+ }
188
+ } ) ;
189
+ } ) ;
190
+
191
+ it ( 'should whitelist messages properly - mask whitelist' , function ( done ) {
192
+ var msgLlhPayload = new Buffer ( 'VQEC9tciFC4nAPod4rrrtkJAE8szxBiLXsAfnaDoenNRQAAAAAAJAOyL' , 'base64' ) ;
193
+ var msgVelEcefPayload = new Buffer ( 'VQQC9tcUFC4nANoLAACG9f//o/z//wAACQBQ7A==' , 'base64' ) ;
194
+
195
+ var rs = new Readable ( ) ;
196
+ rs . push ( msgVelEcefPayload ) ;
197
+ rs . push ( msgLlhPayload ) ;
198
+ rs . push ( null ) ;
199
+
200
+ var callbacks = 0 ;
201
+ var validMessages = 0 ;
202
+ dispatch ( rs , ~ MsgVelEcef . prototype . msg_type , function ( err , framedMessage ) {
203
+ assert . equal ( framedMessage . msg_type , MsgPosLlh . prototype . msg_type ) ;
204
+ if ( framedMessage && framedMessage . fields && framedMessage . fields . tow ) {
205
+ validMessages ++ ;
206
+ }
207
+ if ( ( ++ callbacks ) === 1 ) {
208
+ assert . equal ( validMessages , 1 ) ;
209
+ done ( ) ;
210
+ }
211
+ } ) ;
212
+ } ) ;
213
+
214
+ it ( 'should whitelist messages properly - function whitelist' , function ( done ) {
215
+ var msgLlhPayload = new Buffer ( 'VQEC9tciFC4nAPod4rrrtkJAE8szxBiLXsAfnaDoenNRQAAAAAAJAOyL' , 'base64' ) ;
216
+ var msgVelEcefPayload = new Buffer ( 'VQQC9tcUFC4nANoLAACG9f//o/z//wAACQBQ7A==' , 'base64' ) ;
217
+
218
+ var rs = new Readable ( ) ;
219
+ rs . push ( msgVelEcefPayload ) ;
220
+ rs . push ( msgLlhPayload ) ;
221
+ rs . push ( null ) ;
222
+
223
+ var callbacks = 0 ;
224
+ var validMessages = 0 ;
225
+ var whitelist = function ( msgType ) {
226
+ return msgType === MsgVelEcef . prototype . msg_type ;
227
+ } ;
228
+ dispatch ( rs , whitelist , function ( err , framedMessage ) {
229
+ assert . equal ( framedMessage . msg_type , MsgVelEcef . prototype . msg_type ) ;
230
+ if ( framedMessage && framedMessage . fields && framedMessage . fields . tow ) {
231
+ validMessages ++ ;
232
+ }
233
+ if ( ( ++ callbacks ) === 1 ) {
234
+ assert . equal ( validMessages , 1 ) ;
235
+ done ( ) ;
236
+ }
237
+ } ) ;
238
+ } ) ;
143
239
} ) ;
0 commit comments