converted legacy hard coded test cases for frame to rstest
in the #zmodem 2 crate:
#[cfg(test)]
mod tests {
use crate::frame::*;
#[rstest::rstest]
#[case(Encoding::ZBIN, Type::ZRQINIT, &[ZPAD, ZLDE, Encoding::ZBIN as u8, 0, 0, 0, 0, 0, 0, 0])]
#[case(Encoding::ZBIN32, Type::ZRQINIT, &[ZPAD, ZLDE, Encoding::ZBIN32 as u8, 0, 0, 0, 0, 0, 29, 247, 34, 198])]
fn test_header(
#[case] encoding: Encoding,
#[case] frame_type: Type,
#[case] expected: &[u8]
) {
let header = Header::new(encoding, frame_type);
let mut packet = vec![];
new_frame(&header, &mut packet);
assert_eq!(packet, expected);
}
#[rstest::rstest]
#[case(Encoding::ZBIN, Type::ZRQINIT, &[1, 1, 1, 1], &[ZPAD, ZLDE, Encoding::ZBIN as u8, 0, 1, 1, 1, 1, 98, 148])]
#[case(Encoding::ZHEX, Type::ZRQINIT, &[1, 1, 1, 1], &[ZPAD, ZPAD, ZLDE, Encoding::ZHEX as u8, b'0', b'0', b'0', b'1', b'0', b'1', b'0', b'1', b'0', b'1', 54, 50, 57, 52, b'\r', b'\n', XON])]
fn test_header_with_flags(
#[case] encoding: Encoding,
#[case] frame_type: Type,
#[case] flags: &[u8; 4],
#[case] expected: &[u8]
) {
let header = Header::new(encoding, frame_type).flags(flags);
let mut packet = vec![];
new_frame(&header, &mut packet);
assert_eq!(packet, expected);
}
}
Should be easier to refactor the legacy code now as there is less raw code that might be affected in tests.