@@ -180,8 +180,6 @@ describe("OT RCP Driver", () => {
180
180
driver . networkUp = true ;
181
181
} ) ;
182
182
183
- afterEach ( async ( ) => { } ) ;
184
-
185
183
it ( "handles loading with given network params - first start" , async ( ) => {
186
184
const saveStateSpy = vi . spyOn ( driver , "saveState" ) ;
187
185
@@ -457,11 +455,6 @@ describe("OT RCP Driver", () => {
457
455
driver . networkUp = true ;
458
456
} ) ;
459
457
460
- afterEach ( ( ) => {
461
- driver . deviceTable . clear ( ) ;
462
- driver . address16ToAddress64 . clear ( ) ;
463
- } ) ;
464
-
465
458
it ( "ignores bogus data before start of HDLC frame" , async ( ) => {
466
459
const parserEmit = vi . spyOn ( driver . parser , "emit" ) ;
467
460
const frame = makeSpinelLastStatus ( 1 ) ;
@@ -815,11 +808,6 @@ describe("OT RCP Driver", () => {
815
808
driver . networkUp = true ;
816
809
} ) ;
817
810
818
- afterEach ( ( ) => {
819
- driver . deviceTable . clear ( ) ;
820
- driver . address16ToAddress64 . clear ( ) ;
821
- } ) ;
822
-
823
811
it ( "receives frame NET2_TRANSPORT_KEY_NWK_FROM_COORD - not for coordinator" , async ( ) => {
824
812
// encrypted only APS
825
813
const onStreamRawFrameSpy = vi . spyOn ( driver , "onStreamRawFrame" ) ;
@@ -1039,11 +1027,6 @@ describe("OT RCP Driver", () => {
1039
1027
driver . networkUp = true ;
1040
1028
} ) ;
1041
1029
1042
- afterEach ( ( ) => {
1043
- driver . deviceTable . clear ( ) ;
1044
- driver . address16ToAddress64 . clear ( ) ;
1045
- } ) ;
1046
-
1047
1030
it ( "registers timers" , async ( ) => {
1048
1031
// creates a bottleneck with vitest & promises, noop it
1049
1032
vi . spyOn ( driver , "savePeriodicState" ) . mockImplementation ( ( ) => Promise . resolve ( ) ) ;
@@ -1216,11 +1199,6 @@ describe("OT RCP Driver", () => {
1216
1199
driver . networkUp = true ;
1217
1200
} ) ;
1218
1201
1219
- afterEach ( ( ) => {
1220
- driver . deviceTable . clear ( ) ;
1221
- driver . address16ToAddress64 . clear ( ) ;
1222
- } ) ;
1223
-
1224
1202
it ( "handles source routing" , async ( ) => {
1225
1203
// creates a bottleneck with vitest & promises, noop it
1226
1204
vi . spyOn ( driver , "savePeriodicState" ) . mockImplementation ( ( ) => Promise . resolve ( ) ) ;
@@ -1375,6 +1353,30 @@ describe("OT RCP Driver", () => {
1375
1353
expect ( findBestSourceRouteSpy ) . toHaveBeenLastCalledWith ( 0x4b8e , 5149013573816379n ) ;
1376
1354
expect ( findBestSourceRouteSpy ) . toHaveLastReturnedWith ( [ 0 , [ 0xcb47 ] , 2 ] ) ;
1377
1355
expect ( sendMACFrameSpy ) . toHaveBeenLastCalledWith ( expect . any ( Number ) , expect . any ( Buffer ) , 0xcb47 , undefined ) ;
1356
+
1357
+ //-- no duplication of existing entries
1358
+ driver . parser . _transform ( makeSpinelStreamRaw ( 6 , NET4_ROUTE_RECORD_FROM_4B8E_RELAY_CB47 ) , "utf8" , ( ) => { } ) ;
1359
+ await vi . advanceTimersByTimeAsync ( 10 ) ;
1360
+ // ROUTE_RECORD => OK
1361
+ driver . parser . _transform ( makeSpinelLastStatus ( 6 ) , "utf8" , ( ) => { } ) ;
1362
+ await vi . advanceTimersByTimeAsync ( 10 ) ;
1363
+
1364
+ expect ( driver . sourceRouteTable . get ( 0x4b8e ) ! . length ) . toStrictEqual ( 1 ) ;
1365
+ } ) ;
1366
+
1367
+ it ( "checks if source route exists in entries for a given device" , ( ) => {
1368
+ driver . sourceRouteTable . set ( 0x4b8e , [ { relayAddresses : [ 1 , 2 ] , pathCost : 3 } ] ) ;
1369
+ const existingEntries = driver . sourceRouteTable . get ( 0x4b8e ) ! ;
1370
+
1371
+ expect ( driver . hasSourceRoute ( 0x4b8e , { relayAddresses : [ 1 , 2 ] , pathCost : 3 } , existingEntries ) ) . toStrictEqual ( true ) ;
1372
+ expect ( driver . hasSourceRoute ( 0x4b8e , { relayAddresses : [ 1 , 2 ] , pathCost : 2 } , existingEntries ) ) . toStrictEqual ( false ) ;
1373
+ expect ( driver . hasSourceRoute ( 0x4b8e , { relayAddresses : [ 3 ] , pathCost : 2 } , existingEntries ) ) . toStrictEqual ( false ) ;
1374
+ expect ( driver . hasSourceRoute ( 0x4b8e , { relayAddresses : [ 4 , 5 ] , pathCost : 3 } , existingEntries ) ) . toStrictEqual ( false ) ;
1375
+ expect ( driver . hasSourceRoute ( 0x4b8e , { relayAddresses : [ 1 , 2 ] , pathCost : 3 } ) ) . toStrictEqual ( true ) ;
1376
+ expect ( driver . hasSourceRoute ( 0x4b8e , { relayAddresses : [ 1 , 2 ] , pathCost : 2 } ) ) . toStrictEqual ( false ) ;
1377
+ expect ( driver . hasSourceRoute ( 0x4b8e , { relayAddresses : [ 3 ] , pathCost : 2 } ) ) . toStrictEqual ( false ) ;
1378
+ expect ( driver . hasSourceRoute ( 0x4b8e , { relayAddresses : [ 4 , 5 ] , pathCost : 3 } ) ) . toStrictEqual ( false ) ;
1379
+ expect ( driver . hasSourceRoute ( 0x12345 , { relayAddresses : [ 4 , 5 ] , pathCost : 3 } ) ) . toStrictEqual ( false ) ;
1378
1380
} ) ;
1379
1381
} ) ;
1380
1382
@@ -1416,11 +1418,6 @@ describe("OT RCP Driver", () => {
1416
1418
driver . networkUp = true ;
1417
1419
} ) ;
1418
1420
1419
- afterEach ( ( ) => {
1420
- driver . deviceTable . clear ( ) ;
1421
- driver . address16ToAddress64 . clear ( ) ;
1422
- } ) ;
1423
-
1424
1421
it ( "receives from NET5_GP_CHANNEL_REQUEST_BCAST while in commissioning mode" , async ( ) => {
1425
1422
driver . gpEnterCommissioningMode ( 0xfe ) ; // in commissioning mode
1426
1423
0 commit comments