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