11#![ cfg( feature = "reqwest-backend" ) ]
22
3+ use std:: sync:: atomic:: { AtomicBool , Ordering } ;
34use std:: sync:: Mutex ;
45
56use url:: Url ;
@@ -35,7 +36,7 @@ fn callback_gets_all_data_as_if_the_download_happened_all_at_once() {
3536
3637 let from_url = format ! ( "http://{}" , addr) . parse ( ) . unwrap ( ) ;
3738
38- let callback_partial = Mutex :: new ( false ) ;
39+ let callback_partial = AtomicBool :: new ( false ) ;
3940 let callback_len = Mutex :: new ( None ) ;
4041 let received_in_callback = Mutex :: new ( Vec :: new ( ) ) ;
4142
@@ -47,9 +48,8 @@ fn callback_gets_all_data_as_if_the_download_happened_all_at_once() {
4748 Some ( & |msg| {
4849 match msg {
4950 Event :: ResumingPartialDownload => {
50- let mut flag = callback_partial. lock ( ) . unwrap ( ) ;
51- assert ! ( !* flag) ;
52- * flag = true ;
51+ assert ! ( !callback_partial. load( Ordering :: SeqCst ) ) ;
52+ callback_partial. store ( true , Ordering :: SeqCst ) ;
5353 }
5454 Event :: DownloadContentLengthReceived ( len) => {
5555 let mut flag = callback_len. lock ( ) . unwrap ( ) ;
@@ -68,7 +68,7 @@ fn callback_gets_all_data_as_if_the_download_happened_all_at_once() {
6868 )
6969 . expect ( "Test download failed" ) ;
7070
71- assert ! ( * callback_partial. lock ( ) . unwrap ( ) ) ;
71+ assert ! ( callback_partial. into_inner ( ) ) ;
7272 assert_eq ! ( * callback_len. lock( ) . unwrap( ) , Some ( 5 ) ) ;
7373 let observed_bytes = received_in_callback. into_inner ( ) . unwrap ( ) ;
7474 assert_eq ! ( observed_bytes, vec![ b'1' , b'2' , b'3' , b'4' , b'5' ] ) ;
0 commit comments