@@ -873,16 +873,15 @@ fn make_parallel_fetcher(
873873 }
874874}
875875
876- // --- Task 5: stream_encrypt + streaming_decrypt roundtrip ---
877-
878- #[ test]
879- fn test_stream_encrypt_decrypt_roundtrip ( ) -> Result < ( ) > {
880- let data_size = 100_000 ;
876+ /// Helper: stream-encrypt data with a given iterator chunk size, then stream-decrypt and verify.
877+ fn assert_stream_roundtrip ( data_size : usize , iter_chunk_size : usize ) -> Result < ( ) > {
881878 let original_data = random_bytes ( data_size) ;
882879
883880 let mut stream = stream_encrypt (
884881 data_size,
885- original_data. chunks ( 4096 ) . map ( |c| Bytes :: from ( c. to_vec ( ) ) ) ,
882+ original_data
883+ . chunks ( iter_chunk_size)
884+ . map ( |c| Bytes :: from ( c. to_vec ( ) ) ) ,
886885 ) ?;
887886
888887 let mut storage = HashMap :: new ( ) ;
@@ -893,82 +892,34 @@ fn test_stream_encrypt_decrypt_roundtrip() -> Result<()> {
893892
894893 let data_map = stream
895894 . datamap ( )
896- . ok_or_else ( || Error :: Generic ( "No DataMap after stream_encrypt" . to_string ( ) ) ) ?;
895+ . ok_or_else ( || Error :: Generic ( "No DataMap after stream_encrypt" . to_string ( ) ) ) ?
896+ . clone ( ) ;
897897
898898 let fetcher = make_parallel_fetcher ( & storage) ;
899- let decrypt_stream = streaming_decrypt ( data_map, fetcher) ?;
899+ let decrypt_stream = streaming_decrypt ( & data_map, fetcher) ?;
900900 let decrypted = decrypt_stream. range_full ( ) ?;
901901
902902 assert_eq ! ( decrypted. as_ref( ) , & original_data[ ..] ) ;
903903 Ok ( ( ) )
904904}
905905
906- // --- Task 6: stream_encrypt + streaming_decrypt roundtrip ---
906+ #[ test]
907+ fn test_stream_encrypt_decrypt_roundtrip ( ) -> Result < ( ) > {
908+ assert_stream_roundtrip ( 100_000 , 4096 )
909+ }
907910
908911#[ test]
909912fn test_file_stream_encrypt_decrypt_roundtrip ( ) -> Result < ( ) > {
910- let data_size = 200_000 ;
911- let original_data = random_bytes ( data_size) ;
912-
913- let mut stream = stream_encrypt (
914- data_size,
915- original_data. chunks ( 8192 ) . map ( |c| Bytes :: from ( c. to_vec ( ) ) ) ,
916- ) ?;
917-
918- let mut storage = HashMap :: new ( ) ;
919- for chunk_result in stream. chunks ( ) {
920- let ( hash, content) = chunk_result?;
921- let _ = storage. insert ( hash, content. to_vec ( ) ) ;
922- }
923-
924- let data_map = stream
925- . datamap ( )
926- . ok_or_else ( || Error :: Generic ( "No DataMap" . to_string ( ) ) ) ?
927- . clone ( ) ;
928-
929- let fetcher = make_parallel_fetcher ( & storage) ;
930- let decrypt_stream = streaming_decrypt ( & data_map, fetcher) ?;
931- let decrypted = decrypt_stream. range_full ( ) ?;
932-
933- assert_eq ! ( decrypted. as_ref( ) , & original_data[ ..] ) ;
934- Ok ( ( ) )
913+ assert_stream_roundtrip ( 200_000 , 8192 )
935914}
936915
937- // --- Task 7: Cross-compatibility between streaming APIs ---
938-
939916#[ test]
940917fn test_stream_encrypt_file_decrypt_storage_cross ( ) -> Result < ( ) > {
941- let data_size = 150_000 ;
942- let original_data = random_bytes ( data_size) ;
943-
944- let mut stream = stream_encrypt (
945- data_size,
946- original_data. chunks ( 8192 ) . map ( |c| Bytes :: from ( c. to_vec ( ) ) ) ,
947- ) ?;
948-
949- let mut storage = HashMap :: new ( ) ;
950- for chunk_result in stream. chunks ( ) {
951- let ( hash, content) = chunk_result?;
952- let _ = storage. insert ( hash, content. to_vec ( ) ) ;
953- }
954-
955- let data_map = stream
956- . datamap ( )
957- . ok_or_else ( || Error :: Generic ( "No DataMap" . to_string ( ) ) ) ?
958- . clone ( ) ;
959-
960- let fetcher = make_parallel_fetcher ( & storage) ;
961- let decrypt_stream = streaming_decrypt ( & data_map, fetcher) ?;
962- let decrypted = decrypt_stream. range_full ( ) ?;
963-
964- assert_eq ! ( decrypted. as_ref( ) , & original_data[ ..] ) ;
965- Ok ( ( ) )
918+ assert_stream_roundtrip ( 150_000 , 8192 )
966919}
967920
968- #[ test]
969- fn test_file_encrypt_stream_decrypt_cross ( ) -> Result < ( ) > {
970- // Use standard encrypt() then streaming decrypt — cross-compatibility test
971- let data_size = 150_000 ;
921+ /// Helper: standard encrypt() then streaming_decrypt() cross-compatibility check.
922+ fn assert_encrypt_then_stream_decrypt ( data_size : usize ) -> Result < ( ) > {
972923 let original_data = random_bytes ( data_size) ;
973924
974925 let ( data_map, encrypted_chunks) = encrypt ( original_data. clone ( ) ) ?;
@@ -982,22 +933,14 @@ fn test_file_encrypt_stream_decrypt_cross() -> Result<()> {
982933 Ok ( ( ) )
983934}
984935
985- // --- Task 8: In-memory encrypt ↔ streaming decrypt cross-compatibility ---
936+ #[ test]
937+ fn test_file_encrypt_stream_decrypt_cross ( ) -> Result < ( ) > {
938+ assert_encrypt_then_stream_decrypt ( 150_000 )
939+ }
986940
987941#[ test]
988942fn test_memory_encrypt_stream_decrypt ( ) -> Result < ( ) > {
989- let data_size = 100_000 ;
990- let original_data = random_bytes ( data_size) ;
991-
992- let ( data_map, encrypted_chunks) = encrypt ( original_data. clone ( ) ) ?;
993- let storage = build_chunk_storage ( & encrypted_chunks) ;
994- let fetcher = make_parallel_fetcher ( & storage) ;
995-
996- let decrypt_stream = streaming_decrypt ( & data_map, fetcher) ?;
997- let decrypted = decrypt_stream. range_full ( ) ?;
998-
999- assert_eq ! ( decrypted. as_ref( ) , & original_data[ ..] ) ;
1000- Ok ( ( ) )
943+ assert_encrypt_then_stream_decrypt ( 100_000 )
1001944}
1002945
1003946#[ test]
0 commit comments