#[error("truncated, IPv{vsn}, len={len}")] Truncated { len: usize, vsn: u8 },
}
-pub trait SlipMime { const CONV_TO: Option<bool>; }
+pub trait SlipMime: Copy { const CONV_TO: Option<bool>; }
#[derive(Copy,Clone,Debug)] pub struct Slip2Mime;
#[derive(Copy,Clone,Debug)] pub struct Mime2Slip;
#[derive(Copy,Clone,Debug)] pub struct SlipNoConv;
}
}
-#[test]
-fn mime_slip_to_mime() {
+#[tokio::test]
+async fn mime_slip_to_mime() {
use PacketError as PE;
const MTU: u32 = 10;
- fn chk<M: SlipMime>(i: &[u8], exp_p: &[&[u8]], exp_e: &[PacketError]) {
+ async fn chk<M:SlipMime>(m: M, i: &[u8],
+ exp_p: &[&[u8]],
+ exp_e: &[PacketError])
+ {
dbg!(M::CONV_TO, DumpHex(i));
let mut got_e = vec![];
let mut got_p = vec![];
- check::<_,_,_,M>(MTU, i, &mut got_p, |_|Ok(()), |e| got_e.push(e));
+ processn(m, MTU, i,
+ |_|Ok(()),
+ |(p,())| { got_p.push(p); async { Ok(()) } },
+ |e| Ok::<_,SlipFramesError<Void>>(got_e.push(e)))
+ .await.unwrap();
assert_eq!( got_p.iter().map(|b| DumpHex(b)).collect_vec(),
exp_p.iter().map(|b| DumpHex(b)).collect_vec() );
assert_eq!( got_e,
exp_e );
}
- chk::<Slip2Mime>
- ( &[ SLIP_END, SLIP_ESC, SLIP_ESC_END, b'-', b'X' ],
+ chk(Slip2Mime,
+ &[ SLIP_END, SLIP_ESC, SLIP_ESC_END, b'-', b'X' ],
&[ &[ b'-', SLIP_ESC_END, SLIP_ESC, b'X' ] ],
- &[ PE::Empty ]);
+ &[ PE::Empty ]).await;
- chk::<Slip2Mime>
- ( &[ SLIP_END, SLIP_ESC, b'y' ], &[],
- &[ PE::Empty, PE::SLIP ]);
+ chk(Slip2Mime,
+ &[ SLIP_END, SLIP_ESC, b'y' ], &[],
+ &[ PE::Empty, PE::SLIP ]).await;
- chk::<Slip2Mime>
- ( &[ SLIP_END, b'-', b'y' ],
+ chk(Slip2Mime,
+ &[ SLIP_END, b'-', b'y' ],
&[ &[ SLIP_ESC, b'y' ] ],
- &[ PE::Empty ]);
+ &[ PE::Empty ]).await;
- chk::<Slip2Mime>
- ( &[b'x'; 20],
+ chk(Slip2Mime,
+ &[b'x'; 20],
&[ ],
- &[ PE::MTU { len: 20, mtu: MTU } ]);
+ &[ PE::MTU { len: 20, mtu: MTU } ]).await;
- chk::<SlipNoConv>
- ( &[ SLIP_END, SLIP_ESC, SLIP_ESC_END, b'-', b'X' ],
+ chk(SlipNoConv,
+ &[ SLIP_END, SLIP_ESC, SLIP_ESC_END, b'-', b'X' ],
&[ &[ SLIP_ESC, SLIP_ESC_END, b'-', b'X' ] ],
- &[ PE::Empty, ]);
+ &[ PE::Empty, ]).await;
}