use super::*;
#[derive(Clone, Debug, Eq, PartialEq)]
pub enum LinkExtHeader {
Vlan(SingleVlanHeader),
Macsec(MacsecHeader),
}
impl LinkExtHeader {
pub fn header_len(&self) -> usize {
match self {
LinkExtHeader::Vlan(s) => s.header_len(),
LinkExtHeader::Macsec(m) => m.header_len(),
}
}
}
#[cfg(test)]
mod tests {
use super::*;
use crate::test_gens::*;
use alloc::format;
use proptest::prelude::*;
proptest! {
#[test]
fn debug_clone_eq(ref vlan in vlan_single_any()) {
let header = LinkExtHeader::Vlan(vlan.clone());
assert_eq!(header.clone(), header);
assert_eq!(
format!("{:?}", header),
format!("Vlan({:?})", vlan),
);
}
}
proptest! {
#[test]
fn header_len(
vlan in vlan_single_any(),
macsec in macsec_any()
) {
{
let header = LinkExtHeader::Vlan(vlan.clone());
assert_eq!(header.header_len(), vlan.header_len());
}
{
let header = LinkExtHeader::Macsec(macsec.clone());
assert_eq!(header.header_len(), macsec.header_len());
}
}
}
}