1 use crate::error::Result;
2 
3 use super::*;
4 
5 use std::net::SocketAddr;
6 use std::str::FromStr;
7 
8 const DEMO_IP: &str = "1.2.3.4";
9 
10 #[tokio::test]
test_chunk_queue() -> Result<()>11 async fn test_chunk_queue() -> Result<()> {
12     let c: Box<dyn Chunk> = Box::new(ChunkUdp::new(
13         SocketAddr::from_str("192.188.0.2:1234")?,
14         SocketAddr::from_str(&(DEMO_IP.to_owned() + ":5678"))?,
15     ));
16 
17     let q = ChunkQueue::new(0);
18 
19     let d = q.peek().await;
20     assert!(d.is_none(), "should return none");
21 
22     let ok = q.push(c.clone_to()).await;
23     assert!(ok, "should succeed");
24 
25     let d = q.pop().await;
26     assert!(d.is_some(), "should succeed");
27     if let Some(d) = d {
28         assert_eq!(c.to_string(), d.to_string(), "should be the same");
29     }
30 
31     let d = q.pop().await;
32     assert!(d.is_none(), "should fail");
33 
34     let q = ChunkQueue::new(1);
35     let ok = q.push(c.clone_to()).await;
36     assert!(ok, "should succeed");
37 
38     let ok = q.push(c.clone_to()).await;
39     assert!(!ok, "should fail");
40 
41     let d = q.peek().await;
42     assert!(d.is_some(), "should succeed");
43     if let Some(d) = d {
44         assert_eq!(c.to_string(), d.to_string(), "should be the same");
45     }
46 
47     Ok(())
48 }
49