#[cfg(test)]
mod updated_tests {
use super::*;
#[test]
fn test_crate_compiles() {
assert!(true);
}
#[test]
fn test_error_conversions() {
use std::io;
use crate::error::Error;
let io_error = io::Error::new(io::ErrorKind::NotFound, "test error");
let netmap_error: Error = io_error.into();
let io_error_again: io::Error = netmap_error.into();
assert_eq!(io_error_again.kind(), io::ErrorKind::Other);
}
#[test]
fn test_frame_creation() {
use crate::frame::Frame;
let data = b"test packet data";
let frame1 = Frame::new(data);
assert_eq!(frame1.len(), data.len());
assert_eq!(frame1.payload(), data);
let frame2 = Frame::new_borrowed(data);
assert_eq!(frame2.len(), data.len());
assert_eq!(frame2.payload(), data);
let owned_data = data.to_vec();
let frame3 = Frame::new_owned(owned_data);
assert_eq!(frame3.len(), data.len());
assert_eq!(frame3.payload(), data);
let frame4: Frame = data.as_slice().into();
assert_eq!(frame4.len(), data.len());
assert_eq!(frame4.payload(), data);
}
#[cfg(feature = "sys")]
#[test]
fn test_sys_feature_enabled() {
let _ = crate::netmap::NetmapBuilder::new("test");
}
#[cfg(not(feature = "sys"))]
#[test]
fn test_sys_feature_disabled() {
}
#[cfg(feature = "tokio-async")]
#[test]
fn test_tokio_async_feature() {
use crate::tokio_async::{AsyncNetmapRxRing, AsyncNetmapTxRing, TokioNetmap};
let _ = std::mem::size_of::<TokioNetmap>();
}
#[test]
fn test_all_error_variants() {
use crate::error::Error;
use std::io;
let errors = vec![
Error::Io(io::Error::new(io::ErrorKind::Other, "test")),
Error::WouldBlock,
Error::BindFail("test interface".to_string()),
Error::InvalidRingIndex(42),
Error::PacketTooLarge(9000),
Error::InsufficientSpace,
Error::UnsupportedPlatform("test platform".to_string()),
Error::FallbackUnsupported("test feature".to_string()),
];
for error in errors {
let _ = format!("{}", error);
}
}
#[test]
fn test_doc_examples() {
let _example = r#"
use netmap_rs::prelude::*;
use std::thread::sleep;
use std::time::Duration;
fn main() -> Result<(), Error> {
let nm = NetmapBuilder::new("netmap:eth0")
.num_tx_rings(1)
.num_rx_rings(1)
.build()?;
let mut tx_ring = nm.tx_ring(0)?;
let mut rx_ring = nm.rx_ring(0)?;
let packet_data = b"hello netmap!";
tx_ring.send(packet_data)?;
tx_ring.sync();
rx_ring.sync();
while let Some(frame) = rx_ring.recv() {
println!("Received packet: {:?}", frame.payload());
break;
}
Ok(())
}
"#;
assert!(!_example.is_empty());
}
}