@@ -1174,10 +1174,10 @@ mod utils {
11741174 size += name. len ( ) + value. len ( ) + 10 ;
11751175 }
11761176 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 ( ) ) ;
11781178 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 ( ) ) ;
11811181 }
11821182 for ( name, value) in & map {
11831183 bytes. extend_from_slice ( name. as_bytes ( ) ) ;
@@ -1194,10 +1194,10 @@ mod utils {
11941194 size += name. len ( ) + value. len ( ) + 10 ;
11951195 }
11961196 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 ( ) ) ;
11981198 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 ( ) ) ;
12011201 }
12021202 for ( name, value) in & map {
12031203 bytes. extend_from_slice ( name. as_bytes ( ) ) ;
@@ -1252,203 +1252,4 @@ mod utils {
12521252 }
12531253 map
12541254 }
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- }
14541255}
0 commit comments