etherparse/link/
double_vlan_header.rs1use crate::*;
2
3#[derive(Clone, Debug, Eq, PartialEq)]
11pub struct DoubleVlanHeader {
12 pub outer: SingleVlanHeader,
14 pub inner: SingleVlanHeader,
16}
17
18impl Default for DoubleVlanHeader {
19 fn default() -> Self {
20 DoubleVlanHeader {
21 outer: SingleVlanHeader {
22 pcp: VlanPcp::ZERO,
23 drop_eligible_indicator: false,
24 vlan_id: Default::default(),
25 ether_type: ether_type::VLAN_TAGGED_FRAME,
26 },
27 inner: Default::default(),
28 }
29 }
30}
31
32#[cfg(test)]
33mod test {
34 use crate::{test_gens::*, *};
35 use alloc::format;
36 use proptest::prelude::*;
37
38 #[test]
39 fn default() {
40 let actual: DoubleVlanHeader = Default::default();
41 assert_eq!(actual.outer, {
42 let mut outer: SingleVlanHeader = Default::default();
43 outer.ether_type = ether_type::VLAN_TAGGED_FRAME;
44 outer
45 });
46 assert_eq!(actual.inner, Default::default());
47 }
48
49 proptest! {
50 #[test]
51 fn clone_eq(input in vlan_double_any()) {
52 assert_eq!(input, input.clone());
53 }
54 }
55
56 proptest! {
57 #[test]
58 fn dbg(input in vlan_double_any()) {
59 assert_eq!(
60 &format!(
61 "DoubleVlanHeader {{ outer: {:?}, inner: {:?} }}",
62 input.outer,
63 input.inner,
64 ),
65 &format!("{:?}", input)
66 );
67 }
68 }
69}