@@ -1336,69 +1336,73 @@ pub mod tests {
1336
1336
} ;
1337
1337
1338
1338
// Test the initial data structure size.
1339
- let ( tx, rx) = mpsc:: sync_channel ( 8 ) ;
1339
+ let ( tx, rx) = mpsc:: sync_channel ( 1 ) ;
1340
+ let check_mem_size_change = |expect : i64 | {
1341
+ assert_eq ! ( rx. try_recv( ) . unwrap( ) , expect) ;
1342
+ rx. try_recv ( ) . unwrap_err ( ) ;
1343
+ } ;
1340
1344
let mut cache = EntryCache :: new_with_cb ( move |c : i64 | tx. send ( c) . unwrap ( ) ) ;
1341
- assert_eq ! ( rx . try_recv ( ) . unwrap ( ) , 896 ) ;
1345
+ check_mem_size_change ( 0 ) ;
1342
1346
1343
1347
cache. append (
1344
1348
0 ,
1345
1349
0 ,
1346
1350
& [ new_padded_entry ( 101 , 1 , 1 ) , new_padded_entry ( 102 , 1 , 2 ) ] ,
1347
1351
) ;
1348
- assert_eq ! ( rx . try_recv ( ) . unwrap ( ) , 3 ) ;
1352
+ check_mem_size_change ( 419 ) ;
1349
1353
1350
1354
cache. prepend ( vec ! [ new_padded_entry( 100 , 1 , 1 ) ] ) ;
1351
- assert_eq ! ( rx . try_recv ( ) . unwrap ( ) , 1 ) ;
1355
+ check_mem_size_change ( 1 ) ;
1352
1356
cache. persisted = 100 ;
1353
1357
cache. compact_to ( 101 ) ;
1354
- assert_eq ! ( rx . try_recv ( ) . unwrap ( ) , -1 ) ;
1358
+ check_mem_size_change ( -1 ) ;
1355
1359
1356
1360
// Test size change for one overlapped entry.
1357
1361
cache. append ( 0 , 0 , & [ new_padded_entry ( 102 , 2 , 3 ) ] ) ;
1358
- assert_eq ! ( rx . try_recv ( ) . unwrap ( ) , 1 ) ;
1362
+ check_mem_size_change ( 1 ) ;
1359
1363
1360
1364
// Test size change for all overlapped entries.
1361
1365
cache. append (
1362
1366
0 ,
1363
1367
0 ,
1364
1368
& [ new_padded_entry ( 101 , 3 , 4 ) , new_padded_entry ( 102 , 3 , 5 ) ] ,
1365
1369
) ;
1366
- assert_eq ! ( rx . try_recv ( ) . unwrap ( ) , 5 ) ;
1370
+ check_mem_size_change ( 5 ) ;
1367
1371
1368
1372
cache. append ( 0 , 0 , & [ new_padded_entry ( 103 , 3 , 6 ) ] ) ;
1369
- assert_eq ! ( rx . try_recv ( ) . unwrap ( ) , 6 ) ;
1373
+ check_mem_size_change ( 6 ) ;
1370
1374
1371
1375
// Test trace a dangle entry.
1372
1376
let cached_entries = CachedEntries :: new ( vec ! [ new_padded_entry( 100 , 1 , 1 ) ] ) ;
1373
1377
cache. trace_cached_entries ( cached_entries) ;
1374
- assert_eq ! ( rx . try_recv ( ) . unwrap ( ) , 1 ) ;
1378
+ check_mem_size_change ( 97 ) ;
1375
1379
1376
1380
// Test trace an entry which is still in cache.
1377
1381
let cached_entries = CachedEntries :: new ( vec ! [ new_padded_entry( 102 , 3 , 5 ) ] ) ;
1378
1382
cache. trace_cached_entries ( cached_entries) ;
1379
- assert_eq ! ( rx . try_recv ( ) . unwrap ( ) , 0 ) ;
1383
+ check_mem_size_change ( 0 ) ;
1380
1384
1381
1385
// Test compare `cached_last` with `trunc_to_idx` in `EntryCache::append_impl`.
1382
1386
cache. append ( 0 , 0 , & [ new_padded_entry ( 103 , 4 , 7 ) ] ) ;
1383
- assert_eq ! ( rx . try_recv ( ) . unwrap ( ) , 1 ) ;
1387
+ check_mem_size_change ( 1 ) ;
1384
1388
1385
1389
// Test compact one traced dangle entry and one entry in cache.
1386
1390
cache. persisted = 101 ;
1387
1391
cache. compact_to ( 102 ) ;
1388
- assert_eq ! ( rx . try_recv ( ) . unwrap ( ) , -5 ) ;
1392
+ check_mem_size_change ( -5 ) ;
1389
1393
1390
1394
// Test compact the last traced dangle entry.
1391
1395
cache. persisted = 102 ;
1392
1396
cache. compact_to ( 103 ) ;
1393
- assert_eq ! ( rx . try_recv ( ) . unwrap ( ) , -5 ) ;
1397
+ check_mem_size_change ( -5 ) ;
1394
1398
1395
1399
// Test compact all entries.
1396
1400
cache. persisted = 103 ;
1397
1401
cache. compact_to ( 104 ) ;
1398
- assert_eq ! ( rx . try_recv ( ) . unwrap ( ) , -7 ) ;
1402
+ check_mem_size_change ( -7 ) ;
1399
1403
1400
1404
drop ( cache) ;
1401
- assert_eq ! ( rx . try_recv ( ) . unwrap ( ) , - 896 ) ;
1405
+ check_mem_size_change ( - 512 ) ;
1402
1406
}
1403
1407
1404
1408
#[ test]
0 commit comments