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

index cd1e9a02126ae44f690566b4918adf38fe597f2b..00c15606d41dc87ed7dbf8a6c3c832df8754494a 100644 (file)
@@ -24,7 +24,7 @@ impl SlipMime for Slip2Mime { const CONV_TO: Option<bool> = Some(true); }
 impl SlipMime for Mime2Slip { const CONV_TO: Option<bool> = Some(false); }
 impl SlipMime for SlipNoConv { const CONV_TO: Option<bool> = None; }
 
-#[derive(Debug,Error)]
+#[derive(Debug,Error,Eq,PartialEq)]
 pub enum SlipFramesError<E> where E: std::error::Error + 'static {
   #[error("only bad IP datagrams")] ErrorOnlyBad,
   #[error("{0}")] Other(#[from] E),
@@ -206,45 +206,55 @@ async fn mime_slip_to_mime() {
 
   async fn chk<M:SlipMime>(m: M, i: &[u8],
                            exp_p: &[&[u8]],
-                           exp_e: &[PacketError])
+                           exp_e: &[PacketError],
+                           exp_r: Result<(),SlipFramesError<Void>>)
   {
     dbg!(M::CONV_TO, DumpHex(i));
     let mut got_e = vec![];
     let mut got_p = vec![];
-    processn(m, MTU, i,
-             |_|Ok(()),
-             |(p,())| { got_p.push(p); async { Ok(()) } },
-             |e| Ok::<_,SlipFramesError<Void>>(got_e.push(e)))
-      .await.unwrap();
+    let got_r = processn(
+      m, MTU, i,
+      |_|Ok(()),
+      |(p,())| { got_p.push(p); async { Ok(()) } },
+      |e| Ok::<_,SlipFramesError<Void>>(got_e.push(e))
+    ).await;
     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 );
+    assert_eq!( got_r,
+                exp_r );
   }
+  use SlipFramesError::ErrorOnlyBad;
 
   chk(Slip2Mime,
        &[ SLIP_END, SLIP_ESC, SLIP_ESC_END, b'-',     b'X' ],
     &[           &[ b'-',     SLIP_ESC_END, SLIP_ESC, b'X' ] ],
-    &[ PE::Empty ]).await;
+    &[ ],
+      Ok(())).await;
 
   chk(Slip2Mime,
        &[ SLIP_END, SLIP_ESC, b'y' ], &[],
-    &[ PE::Empty,   PE::SLIP ]).await;
+    &[ PE::SLIP ],
+      Err(ErrorOnlyBad)).await;
 
   chk(Slip2Mime,
        &[ SLIP_END, b'-',     b'y' ],
     &[           &[ SLIP_ESC, b'y' ] ],
-    &[ PE::Empty ]).await;
+    &[ ],
+      Ok(())).await;
 
   chk(Slip2Mime,
        &[b'x'; 20],
     &[             ],
-    &[ PE::MTU { len: 20, mtu: MTU } ]).await;
+    &[ PE::MTU { len: 20, mtu: MTU } ],
+      Err(ErrorOnlyBad)).await;
 
   chk(SlipNoConv,
        &[ SLIP_END, SLIP_ESC, SLIP_ESC_END, b'-',     b'X' ],
     &[           &[ SLIP_ESC, SLIP_ESC_END, b'-',     b'X' ] ],
-    &[ PE::Empty, ]).await;
+    &[ ],
+      Ok(())).await;
 }