1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/*
#[cfg(feature = "socket")]
mod tests {
use async_hal::{delay::DelayMs, io::AsyncWrite};
use futures::{pin_mut, stream};
use iso_tp::{frame::FlowKind, Frame, Socket};
use std::task::Poll;
struct MockDelay;
impl DelayMs for MockDelay {
type Delay = u8;
type Error = ();
fn start(&mut self, _ms: Self::Delay) -> Result<(), Self::Error> {
Ok(())
}
fn poll_delay_ms(
self: std::pin::Pin<&mut Self>,
_cx: &mut std::task::Context,
) -> std::task::Poll<Result<(), Self::Error>> {
Poll::Ready(Ok(()))
}
fn cancel(&mut self) -> Result<(), Self::Error> {
Ok(())
}
}
#[tokio::test]
async fn it_writes_single_frames() {
let tx: Vec<Frame> = vec![];
let rx = stream::iter(Vec::<Result<_, ()>>::new());
let mut socket = Socket::new(tx, rx);
let writer = socket.writer(MockDelay);
pin_mut!(writer);
let buf = b"hello";
writer.write_all(buf).await.unwrap();
assert_eq!(socket.tx[0], Frame::single(b"hello").unwrap());
}
#[tokio::test]
async fn it_writes_consecutive_frames() {
let tx: Vec<Frame> = vec![];
let rx = stream::iter(vec![Ok::<_, ()>(Frame::flow(FlowKind::Continue, 10, 0))]);
let mut socket = Socket::new(tx, rx);
let writer = socket.writer(MockDelay);
pin_mut!(writer);
let buf = b"Hello World!";
writer.write_all(buf).await.unwrap();
let (first, used) = Frame::first(buf);
assert_eq!(socket.tx[0], first);
let (second, _) = Frame::consecutive(0, &buf[used..]);
assert_eq!(socket.tx[1], second);
}
}
*/