chiark / gitweb /
fix tests
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 22 Aug 2021 21:58:07 +0000 (22:58 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 22 Aug 2021 21:58:07 +0000 (22:58 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/slip.rs

index a2beaf0de33b85c32e480e2c55db30c1dc50a4e6..cd1e9a02126ae44f690566b4918adf38fe597f2b 100644 (file)
@@ -16,7 +16,7 @@ pub enum PacketError {
   #[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;
@@ -199,45 +199,52 @@ impl Debug for DumpHex<'_> {
   }
 }
 
-#[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;
 }