blob: 0a19e81af6caa4a2f0873525991d9b4d44b59716 [file] [log] [blame]
use crate::*;
/// Payload of an IP packet.
#[derive(Clone, Debug, Eq, PartialEq, Hash, PartialOrd, Ord)]
pub struct EtherPayloadSlice<'a> {
/// Identifying content of the payload.
pub ether_type: EtherType,
/// Payload
pub payload: &'a [u8],
}
#[cfg(test)]
mod test {
use super::*;
use alloc::format;
#[test]
fn debug() {
let s = EtherPayloadSlice {
ether_type: EtherType::IPV4,
payload: &[],
};
assert_eq!(
format!(
"EtherPayloadSlice {{ ether_type: {:?}, payload: {:?} }}",
s.ether_type, s.payload
),
format!("{:?}", s)
);
}
#[test]
fn clone_eq_hash_ord() {
let s = EtherPayloadSlice {
ether_type: EtherType::IPV4,
payload: &[],
};
assert_eq!(s.clone(), s);
use std::collections::hash_map::DefaultHasher;
use std::hash::{Hash, Hasher};
let a_hash = {
let mut hasher = DefaultHasher::new();
s.hash(&mut hasher);
hasher.finish()
};
let b_hash = {
let mut hasher = DefaultHasher::new();
s.clone().hash(&mut hasher);
hasher.finish()
};
assert_eq!(a_hash, b_hash);
use std::cmp::Ordering;
assert_eq!(s.clone().cmp(&s), Ordering::Equal);
assert_eq!(s.clone().partial_cmp(&s), Some(Ordering::Equal));
}
}