1*bb4ee6a4SAndroid Build Coastguard Worker // Copyright 2024 The ChromiumOS Authors 2*bb4ee6a4SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*bb4ee6a4SAndroid Build Coastguard Worker // found in the LICENSE file. 4*bb4ee6a4SAndroid Build Coastguard Worker 5*bb4ee6a4SAndroid Build Coastguard Worker #[cfg(test)] 6*bb4ee6a4SAndroid Build Coastguard Worker mod tests { 7*bb4ee6a4SAndroid Build Coastguard Worker use base::Tube; 8*bb4ee6a4SAndroid Build Coastguard Worker 9*bb4ee6a4SAndroid Build Coastguard Worker use crate::TubeTokio; 10*bb4ee6a4SAndroid Build Coastguard Worker 11*bb4ee6a4SAndroid Build Coastguard Worker #[tokio::test] recv_send()12*bb4ee6a4SAndroid Build Coastguard Worker async fn recv_send() { 13*bb4ee6a4SAndroid Build Coastguard Worker let (a, b) = Tube::pair().unwrap(); 14*bb4ee6a4SAndroid Build Coastguard Worker let mut b = TubeTokio::new(b).unwrap(); 15*bb4ee6a4SAndroid Build Coastguard Worker 16*bb4ee6a4SAndroid Build Coastguard Worker let blocking_task = tokio::task::spawn_blocking(move || { 17*bb4ee6a4SAndroid Build Coastguard Worker a.send(&5u8).unwrap(); 18*bb4ee6a4SAndroid Build Coastguard Worker a.recv::<u8>().unwrap() 19*bb4ee6a4SAndroid Build Coastguard Worker }); 20*bb4ee6a4SAndroid Build Coastguard Worker 21*bb4ee6a4SAndroid Build Coastguard Worker assert_eq!(b.recv::<u8>().await.unwrap(), 5u8); 22*bb4ee6a4SAndroid Build Coastguard Worker b.send(&16u8).await.unwrap(); 23*bb4ee6a4SAndroid Build Coastguard Worker assert_eq!(blocking_task.await.unwrap(), 16u8); 24*bb4ee6a4SAndroid Build Coastguard Worker } 25*bb4ee6a4SAndroid Build Coastguard Worker } 26