Browse Source

PSOPacketData tests

pull/3/head
jake 5 years ago
parent
commit
1810587ad1
  1. 75
      src/lib.rs

75
src/lib.rs

@ -101,7 +101,7 @@ pub trait PSOPacket: std::fmt::Debug {
#[cfg(test)]
mod test {
use super::*;
use psopacket::pso_packet;
use psopacket::{pso_packet, PSOPacketData};
#[test]
fn test_basic_pso_packet() {
@ -161,7 +161,7 @@ mod test {
#[test]
fn test_custom_type_in_packet() {
#[derive(Clone, Debug, PartialEq)]
struct MyType {
pub struct MyType {
k: u8,
j: u32,
}
@ -318,4 +318,75 @@ mod test {
let test2 = Test::from_bytes(&bytes);
assert!(test2 == Err(PacketParseError::WrongPacketCommand));
}
#[test]
fn test_derive_pso_data_packet() {
#[derive(PSOPacketData, Debug, PartialEq)]
struct Test {
a: u8,
b: u32,
c: u16,
}
let test = Test {
a: 12,
b: 34567,
c: 890,
};
let mut bytes = test.as_bytes();
assert!(bytes == vec![12, 7, 135, 0, 0, 122, 3]);
bytes[2] = 17;
let mut cur = std::io::Cursor::new(bytes.clone());
let test2 = Test::from_bytes(&mut cur).unwrap();
assert!(test2 == Test {
a: 12,
b: 4359,
c: 890
});
}
#[test]
fn test_derive_pso_data_packet_not_enough_data() {
#[derive(PSOPacketData, Debug, PartialEq)]
struct Test {
a: u8,
b: u32,
c: u16,
}
let test = Test {
a: 12,
b: 34567,
c: 890,
};
let mut bytes = test.as_bytes();
bytes.extend(test.as_bytes());
let mut cur = std::io::Cursor::new(bytes.clone());
let test2 = Test::from_bytes(&mut cur).unwrap();
assert!(test2 == Test {
a: 12,
b: 34567,
c: 890,
});
let bytes2 = (0..14).collect::<Vec<_>>();
let mut cur = std::io::Cursor::new(bytes2);
let test3 = Test::from_bytes(&mut cur);
assert!(test3 == Ok(Test {
a: 0,
b: 67305985,
c: 1541,
}));
let test4 = Test::from_bytes(&mut cur);
assert!(test4 == Ok(Test {
a: 7,
b: 185207048,
c: 3340,
}));
let test5 = Test::from_bytes(&mut cur);
assert!(test5 == Err(PacketParseError::NotEnoughBytes));
}
}
Loading…
Cancel
Save