@@ -1174,10 +1174,10 @@ mod utils {
1174
1174
size += name. len ( ) + value. len ( ) + 10 ;
1175
1175
}
1176
1176
let mut bytes: Bytes = Vec :: with_capacity ( size) ;
1177
- bytes. extend_from_slice ( & ( map. len ( ) as u32 ) . to_le_bytes ( ) ) ;
1177
+ bytes. extend_from_slice ( & map. len ( ) . to_le_bytes ( ) ) ;
1178
1178
for ( name, value) in & map {
1179
- bytes. extend_from_slice ( & ( name. len ( ) as u32 ) . to_le_bytes ( ) ) ;
1180
- bytes. extend_from_slice ( & ( value. len ( ) as u32 ) . to_le_bytes ( ) ) ;
1179
+ bytes. extend_from_slice ( & name. len ( ) . to_le_bytes ( ) ) ;
1180
+ bytes. extend_from_slice ( & value. len ( ) . to_le_bytes ( ) ) ;
1181
1181
}
1182
1182
for ( name, value) in & map {
1183
1183
bytes. extend_from_slice ( name. as_bytes ( ) ) ;
@@ -1194,10 +1194,10 @@ mod utils {
1194
1194
size += name. len ( ) + value. len ( ) + 10 ;
1195
1195
}
1196
1196
let mut bytes: Bytes = Vec :: with_capacity ( size) ;
1197
- bytes. extend_from_slice ( & ( map. len ( ) as u32 ) . to_le_bytes ( ) ) ;
1197
+ bytes. extend_from_slice ( & map. len ( ) . to_le_bytes ( ) ) ;
1198
1198
for ( name, value) in & map {
1199
- bytes. extend_from_slice ( & ( name. len ( ) as u32 ) . to_le_bytes ( ) ) ;
1200
- bytes. extend_from_slice ( & ( value. len ( ) as u32 ) . to_le_bytes ( ) ) ;
1199
+ bytes. extend_from_slice ( & name. len ( ) . to_le_bytes ( ) ) ;
1200
+ bytes. extend_from_slice ( & value. len ( ) . to_le_bytes ( ) ) ;
1201
1201
}
1202
1202
for ( name, value) in & map {
1203
1203
bytes. extend_from_slice ( name. as_bytes ( ) ) ;
@@ -1252,203 +1252,4 @@ mod utils {
1252
1252
}
1253
1253
map
1254
1254
}
1255
-
1256
- #[ cfg( test) ]
1257
- mod tests {
1258
- use super :: * ;
1259
-
1260
- #[ cfg( nightly) ]
1261
- use test:: Bencher ;
1262
-
1263
- static MAP : & [ ( & str , & str ) ] = & [
1264
- ( ":method" , "GET" ) ,
1265
- ( ":path" , "/bytes/1" ) ,
1266
- ( ":authority" , "httpbin.org" ) ,
1267
- ( "Powered-By" , "proxy-wasm" ) ,
1268
- ] ;
1269
-
1270
- #[ rustfmt:: skip]
1271
- static SERIALIZED_MAP : & [ u8 ] = & [
1272
- // num entries
1273
- 4 , 0 , 0 , 0 ,
1274
- // len (":method", "GET")
1275
- 7 , 0 , 0 , 0 , 3 , 0 , 0 , 0 ,
1276
- // len (":path", "/bytes/1")
1277
- 5 , 0 , 0 , 0 , 8 , 0 , 0 , 0 ,
1278
- // len (":authority", "httpbin.org")
1279
- 10 , 0 , 0 , 0 , 11 , 0 , 0 , 0 ,
1280
- // len ("Powered-By", "proxy-wasm")
1281
- 10 , 0 , 0 , 0 , 10 , 0 , 0 , 0 ,
1282
- // ":method"
1283
- 58 , 109 , 101 , 116 , 104 , 111 , 100 , 0 ,
1284
- // "GET"
1285
- 71 , 69 , 84 , 0 ,
1286
- // ":path"
1287
- 58 , 112 , 97 , 116 , 104 , 0 ,
1288
- // "/bytes/1"
1289
- 47 , 98 , 121 , 116 , 101 , 115 , 47 , 49 , 0 ,
1290
- // ":authority"
1291
- 58 , 97 , 117 , 116 , 104 , 111 , 114 , 105 , 116 , 121 , 0 ,
1292
- // "httpbin.org"
1293
- 104 , 116 , 116 , 112 , 98 , 105 , 110 , 46 , 111 , 114 , 103 , 0 ,
1294
- // "Powered-By"
1295
- 80 , 111 , 119 , 101 , 114 , 101 , 100 , 45 , 66 , 121 , 0 ,
1296
- // "proxy-wasm"
1297
- 112 , 114 , 111 , 120 , 121 , 45 , 119 , 97 , 115 , 109 , 0 ,
1298
- ] ;
1299
-
1300
- #[ test]
1301
- fn test_serialize_map_empty ( ) {
1302
- let serialized_map = serialize_map ( vec ! [ ] ) ;
1303
- assert_eq ! ( serialized_map, [ 0 , 0 , 0 , 0 ] ) ;
1304
- }
1305
-
1306
- #[ test]
1307
- fn test_serialize_map_empty_bytes ( ) {
1308
- let serialized_map = serialize_map_bytes ( vec ! [ ] ) ;
1309
- assert_eq ! ( serialized_map, [ 0 , 0 , 0 , 0 ] ) ;
1310
- }
1311
-
1312
- #[ test]
1313
- fn test_deserialize_map_empty ( ) {
1314
- let map = deserialize_map ( & [ ] ) ;
1315
- assert_eq ! ( map, [ ] ) ;
1316
- let map = deserialize_map ( & [ 0 , 0 , 0 , 0 ] ) ;
1317
- assert_eq ! ( map, [ ] ) ;
1318
- }
1319
-
1320
- #[ test]
1321
- fn test_deserialize_map_empty_bytes ( ) {
1322
- let map = deserialize_map_bytes ( & [ ] ) ;
1323
- assert_eq ! ( map, [ ] ) ;
1324
- let map = deserialize_map_bytes ( & [ 0 , 0 , 0 , 0 ] ) ;
1325
- assert_eq ! ( map, [ ] ) ;
1326
- }
1327
-
1328
- #[ test]
1329
- fn test_serialize_map ( ) {
1330
- let serialized_map = serialize_map ( MAP . to_vec ( ) ) ;
1331
- assert_eq ! ( serialized_map, SERIALIZED_MAP ) ;
1332
- }
1333
-
1334
- #[ test]
1335
- fn test_serialize_map_bytes ( ) {
1336
- let map: Vec < ( & str , & [ u8 ] ) > = MAP . iter ( ) . map ( |x| ( x. 0 , x. 1 . as_bytes ( ) ) ) . collect ( ) ;
1337
- let serialized_map = serialize_map_bytes ( map) ;
1338
- assert_eq ! ( serialized_map, SERIALIZED_MAP ) ;
1339
- }
1340
-
1341
- #[ test]
1342
- fn test_deserialize_map ( ) {
1343
- let map = deserialize_map ( SERIALIZED_MAP ) ;
1344
- assert_eq ! ( map. len( ) , MAP . len( ) ) ;
1345
- for ( got, expected) in map. into_iter ( ) . zip ( MAP ) {
1346
- assert_eq ! ( got. 0 , expected. 0 ) ;
1347
- assert_eq ! ( got. 1 , expected. 1 ) ;
1348
- }
1349
- }
1350
-
1351
- #[ test]
1352
- fn test_deserialize_map_bytes ( ) {
1353
- let map = deserialize_map_bytes ( SERIALIZED_MAP ) ;
1354
- assert_eq ! ( map. len( ) , MAP . len( ) ) ;
1355
- for ( got, expected) in map. into_iter ( ) . zip ( MAP ) {
1356
- assert_eq ! ( got. 0 , expected. 0 ) ;
1357
- assert_eq ! ( got. 1 , expected. 1 . as_bytes( ) ) ;
1358
- }
1359
- }
1360
-
1361
- #[ test]
1362
- fn test_deserialize_map_roundtrip ( ) {
1363
- let map = deserialize_map ( SERIALIZED_MAP ) ;
1364
- // TODO(v0.3): fix arguments, so that maps can be reused without conversion.
1365
- let map_refs: Vec < ( & str , & str ) > =
1366
- map. iter ( ) . map ( |x| ( x. 0 . as_ref ( ) , x. 1 . as_ref ( ) ) ) . collect ( ) ;
1367
- let serialized_map = serialize_map ( map_refs) ;
1368
- assert_eq ! ( serialized_map, SERIALIZED_MAP ) ;
1369
- }
1370
-
1371
- #[ test]
1372
- fn test_deserialize_map_roundtrip_bytes ( ) {
1373
- let map = deserialize_map_bytes ( SERIALIZED_MAP ) ;
1374
- // TODO(v0.3): fix arguments, so that maps can be reused without conversion.
1375
- let map_refs: Vec < ( & str , & [ u8 ] ) > =
1376
- map. iter ( ) . map ( |x| ( x. 0 . as_ref ( ) , x. 1 . as_ref ( ) ) ) . collect ( ) ;
1377
- let serialized_map = serialize_map_bytes ( map_refs) ;
1378
- assert_eq ! ( serialized_map, SERIALIZED_MAP ) ;
1379
- }
1380
-
1381
- #[ test]
1382
- fn test_deserialize_map_all_chars ( ) {
1383
- // 0x00-0x7f are valid single-byte UTF-8 characters.
1384
- for i in 0 ..0x7f {
1385
- let serialized_src = [ 1 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 99 , 0 , i, 0 ] ;
1386
- let map = deserialize_map ( & serialized_src) ;
1387
- // TODO(v0.3): fix arguments, so that maps can be reused without conversion.
1388
- let map_refs: Vec < ( & str , & str ) > =
1389
- map. iter ( ) . map ( |x| ( x. 0 . as_ref ( ) , x. 1 . as_ref ( ) ) ) . collect ( ) ;
1390
- let serialized_map = serialize_map ( map_refs) ;
1391
- assert_eq ! ( serialized_map, serialized_src) ;
1392
- }
1393
- // 0x80-0xff are invalid single-byte UTF-8 characters.
1394
- for i in 0x80 ..0xff {
1395
- let serialized_src = [ 1 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 99 , 0 , i, 0 ] ;
1396
- std:: panic:: set_hook ( Box :: new ( |_| { } ) ) ;
1397
- let result = std:: panic:: catch_unwind ( || {
1398
- deserialize_map ( & serialized_src) ;
1399
- } ) ;
1400
- assert ! ( result. is_err( ) ) ;
1401
- }
1402
- }
1403
-
1404
- #[ test]
1405
- fn test_deserialize_map_all_chars_bytes ( ) {
1406
- // All 256 single-byte characters are allowed when emitting bytes.
1407
- for i in 0 ..0xff {
1408
- let serialized_src = [ 1 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 99 , 0 , i, 0 ] ;
1409
- let map = deserialize_map_bytes ( & serialized_src) ;
1410
- // TODO(v0.3): fix arguments, so that maps can be reused without conversion.
1411
- let map_refs: Vec < ( & str , & [ u8 ] ) > =
1412
- map. iter ( ) . map ( |x| ( x. 0 . as_ref ( ) , x. 1 . as_ref ( ) ) ) . collect ( ) ;
1413
- let serialized_map = serialize_map_bytes ( map_refs) ;
1414
- assert_eq ! ( serialized_map, serialized_src) ;
1415
- }
1416
- }
1417
-
1418
- #[ cfg( nightly) ]
1419
- #[ bench]
1420
- fn bench_serialize_map ( b : & mut Bencher ) {
1421
- let map = MAP . to_vec ( ) ;
1422
- b. iter ( || {
1423
- serialize_map ( test:: black_box ( map. clone ( ) ) ) ;
1424
- } ) ;
1425
- }
1426
-
1427
- #[ cfg( nightly) ]
1428
- #[ bench]
1429
- fn bench_serialize_map_bytes ( b : & mut Bencher ) {
1430
- let map: Vec < ( & str , & [ u8 ] ) > = MAP . iter ( ) . map ( |x| ( x. 0 , x. 1 . as_bytes ( ) ) ) . collect ( ) ;
1431
- b. iter ( || {
1432
- serialize_map_bytes ( test:: black_box ( map. clone ( ) ) ) ;
1433
- } ) ;
1434
- }
1435
-
1436
- #[ cfg( nightly) ]
1437
- #[ bench]
1438
- fn bench_deserialize_map ( b : & mut Bencher ) {
1439
- let serialized_map = SERIALIZED_MAP . to_vec ( ) ;
1440
- b. iter ( || {
1441
- deserialize_map ( test:: black_box ( & serialized_map) ) ;
1442
- } ) ;
1443
- }
1444
-
1445
- #[ cfg( nightly) ]
1446
- #[ bench]
1447
- fn bench_deserialize_map_bytes ( b : & mut Bencher ) {
1448
- let serialized_map = SERIALIZED_MAP . to_vec ( ) ;
1449
- b. iter ( || {
1450
- deserialize_map_bytes ( test:: black_box ( & serialized_map) ) ;
1451
- } ) ;
1452
- }
1453
- }
1454
1255
}
0 commit comments